PushLink.setCurrentStrategy(StrategyEnum.STATUS_BAR);
Title message: "New version of [App Name]".
Description message: "Click to Update".
Remains on the status bar until the installation happens.
Clear the message if the admin changes back to an earlier version before the installation.
PushLink.setCurrentStrategy(StrategyEnum.FRIENDLY_POPUP);
Default message: "New version of [App Name]. Do you want to update it?".
Default buttons: [Not Now][Update].
Remains until the user press [Not Now] or [Update] (Back button is blocked).
Default reminder: 3 hours
Hide the popup if the admin changes back to an earlier version before the installation.
Don't forget to call PushLink.setCurrentActivity(this);
inside onResume
//Only for popups (FRIENDLY_POPUP or ANNOYING_POPUP)//You MUST do this, otherwise popups will not work.//Call it in the Activity you want to show the popup.//You can show the popup in many screens by adding this in more than one Activity.@Overrideprotected void onResume() {super.onResume();PushLink.setCurrentActivity(this);}
PushLink.setCurrentStrategy(StrategyEnum.ANNOYING_POPUP);
Default message: "For security reasons [App Name] needs to be updated!"
Default button: [Update].
Very insistent. Remains until the user press [Update] (Dismiss button is blocked).
Hide the popup if the admin changes back to an earlier version before the installation.
Don't forget to call PushLink.setCurrentActivity(this);
inside onResume
//Only for popups (FRIENDLY_POPUP or ANNOYING_POPUP)//You MUST do this, otherwise popups will not work.//Call it in the Activity you want to show the popup.//You can show the popup in many screens by adding this in more than one Activity.@Overrideprotected void onResume() {super.onResume();PushLink.setCurrentActivity(this);}
PushLink.setCurrentStrategy(StrategyEnum.CUSTOM);
When using CUSTOM strategy, pushlink doesn't display anything and will broadcast two actions.
[your.package.name].pushlink.APPLY
is sent EVERY 30 seconds (more or less) when there is a downloaded but not applied new apk. The user has to handle those multiple broadcasts.
[your.package.name].pushlink.GIVEUP
is sent ONCE when the user gives up the update (in the web admin) before it has been applied.
Useful when the requirement is building a fancier and modern notification, execute extra steps or perform a silent background update.
registerReceiver(new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {Uri apkUri = (Uri) intent.getExtras().get("uri");//enjoy the apk uri//notice this will be called every 30s (more or less). You need to handle this.}}, new IntentFilter(getPackageName() + ".pushlink.APPLY"));
Do NOT register this receiver in AndroidManifest.xml. If you do that, CUSTOM will not work in Android Oreo.
https://developer.android.com/about/versions/oreo/background
Installing apk without user interaction
Silent updates
Zero-touch updates
KIOSK apps
POS - Point of sale apps
Dedicated devices
COSU - Corporate Owned Single Use devices
Pushlink covers almost 100% of this need with two strategies:
For Android <= 4 just use NINJA. (it requires a ROOTED device)
For Android >= 6 just use CUSTOM. (it requires the app to be DEVICE OWNER)
Android 5 disclaimer
NINJA worked flawlessly until android 4 and now is DEPRECATED.
When Android 5 was released, NINJA began to have issues and we were forced to implement a <receiver android:name="com.pushlink.android.NinjaReceiver" />
to make it work. Unfortunately, it was not fixed completely and it still can fail sometimes, depending on the combination of OS version x Vendor. 😕
Bottom line: Pushlink does not support background updates in Android 5, neither using CUSTOM nor NINJA.
PushLink.setCurrentStrategy(StrategyEnum.NINJA);
The application is just re-launched in a new version.
Learn how to update apps in the background with CUSTOM strategy.
Sometimes you want to avoid undesired popups, notifications, or restarts during user interaction.
By default idle
is true
. This means that the installation process will start soon after the new APK download.
If you call PushLink.idle(false)
, Pushlink will never fire the installation process.
Knowing that you can switch this value to control updates.
Manually setting this property can be dangerous. If for some reason the program doesn’t set idle
back to true
, Pushlink will lose the ability to update the app and you’ll need to perform the update manually on the device.
You can customize the built-in strategies like this:
//If you use StatusBarStrategyStatusBarStrategy sbs = (StatusBarStrategy) PushLink.getCurrentStrategy();sbs.setStatusBarTitle("Hello, there is a new version");sbs.setStatusBarDescription("Click to be happy");//If you use FriendlyPopUpStrategyFriendlyPopUpStrategy fps = (FriendlyPopUpStrategy) PushLink.getCurrentStrategy();fps.setPopUpMessage("New version available");fps.setNotNowButton("No, thanks!");fps.setUpdateButton("Ok, lets go");fps.setReminderTimeInSeconds(60 * 60); //one hour//If you use AnnoyingPopUpStrategyAnnoyingPopUpStrategy fps = (AnnoyingPopUpStrategy) PushLink.getCurrentStrategy();fps.setPopUpMessage("New version available");fps.setUpdateButton("Ok, lets go");