Check for latest app version using Firebase in Sketchware
You can store the latest version of your app in Firebase realtime database, and then check and compare it with the actual version of installed app. Follow the instructions below to know how to do this.
1. In your Firebase app in sketchware, in library manager, make sure you have entered correct App ID and project ID, and that Firebase switch is on.
2. Make sure the rules in your Firebase database are read and write true.
3. On the MainActivity or the Activity in which you want to check for the latest app version, add a new FirebaseDB component called Ver:version.
4. Create three new String variables, package_name, your_version and latest_version, and a new Map variable map.
6. Next in onCreate, use an add source directly block and put codes for getting the version of presently installed app.
try {
android.content.pm.PackageInfo pinfo = getPackageManager().getPackageInfo( package_name, android.content.pm.PackageManager.GET_ACTIVITIES);
your_version = pinfo.versionName; }
catch (Exception e){ showMessage(e.toString()); }
This code sets the string your_version to version of the installed app.
7. Next in onCreate use add source directly block and put following code.
DatabaseReference rootRef = _firebase.getReference(); rootRef.child("version").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.exists()) { } else {
This code checks if the FirebaseDB component version exists in the database. If it doesn't exist then push the version of installed app to the database. Use following blocks next.
After this complete the code for ValueEventListener by putting following code in another add source directly block.
} }
@Override
public void onCancelled(DatabaseError _error) { } });
The onCreate event should look as in image below.
8. Add a new Map List map1.
9. Add event FirebaseDB:Ver onChildAdded.
* In this event, get children from firebase database to Map List.
* Then set the string latest_version to key v at position 0 of the Map List.
* Then if latest_version is greater than your_version, toast a message that update is required. You can also display a dialog instead of toast and prompt user to update the app. Or you can use intent to directly lead the user to update url.
* Else if your_version is greater than latest_version, update the version in database using following code:
Ver.child("app").child("v").setValue(your_version);
To accomplish this in FirebaseDB:Ver onChildAdded use blocks as shown in image below.
10. Save and run the project. Your app will show you if any new version is available, and your database will update automatically if someone installs a newer version of the app.
1. In your Firebase app in sketchware, in library manager, make sure you have entered correct App ID and project ID, and that Firebase switch is on.
2. Make sure the rules in your Firebase database are read and write true.
3. On the MainActivity or the Activity in which you want to check for the latest app version, add a new FirebaseDB component called Ver:version.
4. Create three new String variables, package_name, your_version and latest_version, and a new Map variable map.
5. In onCreate event, set the string package_name to package name of your app.
6. Next in onCreate, use an add source directly block and put codes for getting the version of presently installed app.
try {
android.content.pm.PackageInfo pinfo = getPackageManager().getPackageInfo( package_name, android.content.pm.PackageManager.GET_ACTIVITIES);
your_version = pinfo.versionName; }
catch (Exception e){ showMessage(e.toString()); }
This code sets the string your_version to version of the installed app.
7. Next in onCreate use add source directly block and put following code.
DatabaseReference rootRef = _firebase.getReference(); rootRef.child("version").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.exists()) { } else {
This code checks if the FirebaseDB component version exists in the database. If it doesn't exist then push the version of installed app to the database. Use following blocks next.
After this complete the code for ValueEventListener by putting following code in another add source directly block.
} }
@Override
public void onCancelled(DatabaseError _error) { } });
The onCreate event should look as in image below.
8. Add a new Map List map1.
9. Add event FirebaseDB:Ver onChildAdded.
* In this event, get children from firebase database to Map List.
* Then set the string latest_version to key v at position 0 of the Map List.
* Then if latest_version is greater than your_version, toast a message that update is required. You can also display a dialog instead of toast and prompt user to update the app. Or you can use intent to directly lead the user to update url.
* Else if your_version is greater than latest_version, update the version in database using following code:
Ver.child("app").child("v").setValue(your_version);
To accomplish this in FirebaseDB:Ver onChildAdded use blocks as shown in image below.
10. Save and run the project. Your app will show you if any new version is available, and your database will update automatically if someone installs a newer version of the app.
Can you please tell me how to implement the application download from FireBase Storage?
ReplyDeleteThe path to my file:
gs://my-project-kit-kat.appspot.com/update.apk
You have to do it through Google Drive.
DeleteWhy google drive? is downloading from firebase storage not available in sketchware app?
DeleteThis comment has been removed by the author.
Deleteand how do I add the version to firebase?
DeleteHelp, i have update required loop.
ReplyDeleteCan't working this code
ReplyDeleteITS WORKING
DeleteEsta buena los codigos gracias a este bro publica codigos de java sketchware
ReplyDeleteWithout ability to add hyperlinks in TextViews Sketchware is useless to us Authors and internal links to word hyperlinks. If this is possible please let me know?
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteWhere can I put my update.apk? Any one knows?
ReplyDeleteInto Firebase Storage. You have to add to Firebase DB the Download Link or if not then you can use Google Play Link and change package name into your package name
DeleteKam oy na reba.
ReplyDeleteComo hago para implemententar un edittext que mediante un botón me valide si un nick esta disponible para usarse. Para no repetir nick entre usuarios.
ReplyDeleteWhen I Open App Then The app show me "Invalid toNumber block operation
ReplyDelete:invalid double """
Same issue
DeleteSame here also Bro
Deleteits working on me
DeleteChange the package Name string to your application package name e.g com.my.app
DeleteRemove the toNumber blocks and replace ithem with the contains block then it will work correctly
DeleteThis comment has been removed by the author.
ReplyDeletecan we force the update
ReplyDeleteMy app is showing toString error
ReplyDeletever.child(''app'').child(''v'').setValue(your_version) ver cannot be resolved
ReplyDeleteVer not ver
Deletever.child(''app'').child(''v'').setValue(your_version) ver cannot be resolved
ReplyDeletever.child(''app'').child(''v'').setValue(your_version) ver cannot be resolved
ReplyDeletehelp me please
Ver.child("app").child("v").setValue(your_version);
DeleteHere Ver should be same as name of your FirebaseDB component.
None of the knowledge that you shared on YouTube has been proven successful, I tried it many times
DeleteI have getting runtime error as
ReplyDeleteandroid.view.WindowManager$BadTokenException: Unable to add window -token android.os.BinderProxy@9e4874d is not valid; is your activity running ?
Invalid toNumber block operation
ReplyDeleteThis comment has been removed by the author.
DeleteI finally fixed the issue after messing around with different blocks if you remove the toNumber block and replace it with the contains block then it will work correctly
Deleteaapt: ERROR: In FontFamilyFont, unable to find attribute android:fontVariationSettings aapt: ERROR: In FontFamilyFont, unable to find attribute android:ttclndex
ReplyDeleteYo se cual es el error solo le falta unos corchetes {}
ReplyDeleteeste que les djo abajo si esta bien utilizenlo y les servira
} }
@Override
public void onCancelled(DatabaseError _error) { } });
}
pueden visitar la pagina o canal
http://youtube.com/c/C%C3%A9sarHackGray_Y_Miickeyy
https://www.cesarhackgray.com
Please help me,mine is cutting/goback it self when I'm trying to build the app...When I press build and it load to DX is running and then it will shut down it self...
ReplyDeletePls if any help DM me on ahmedyahaya150@Gmail.com
Pls
Ver.child(''app'').child(''v'').setValue(your_version) Ver cannot be resolved
ReplyDeleteIf you getting this error that is mean that your FirebaseDB component name isn't the same as this "Ver.child"
How to fix it?
It's super easy barely an inconvenience
Either you change your FirebaseDB component name or change that "Ver.child" be "Your_component_name.child".
Btw, thank you for providing this blog! I am using your code for my app. If you guys want the complete version of this block just go directly to Sketchware Shared Block and search for "version" and scroll until you find one with firebase word in it.
DeleteAnd now i just need to know how to include my update app on firbaseDB.
This comment has been removed by the author.
ReplyDeleteI need help
ReplyDeleteListview couldn't display image I uploaded
But if I check my firebase storage I will see it
Hello Sir,
ReplyDeleteHow to write Firebase data for this project. Thank you.
y como agrego la version a firebase, para que ya no me pida actualizar
ReplyDeleteand how do I add the version to firebase, so that it no longer asks me to update