此应用不在Google Play上。我可以从服务器手动更新,但我想自动更新,就像在谷歌播放中一样,它会在bg中自动更新,并在通知栏中显示。
我该怎么做?
由于
答案 0 :(得分:0)
是的,要在后台更新您的数据/ APK,您可以使用GCM(Google云消息传递)推送通知。
为此,您可以在应用程序启动时询问用户在更改时从服务器更新数据/ APK。现在,当数据从服务器更改时,您只需向设备发送推送通知并在后台更新数据即可。如果APK然后下载并将其安装在设备中。
您将获得更多详细信息Google Cloud Messaging for Android | Android Developers
希望它会有所帮助。
答案 1 :(得分:0)
您可以设置定期运行的服务,并检查服务器是否有可用的更新(检查APK的时间戳是一种检查方式)。
然后下载APK。安装它,并发送通知。
这是一件很复杂的事情,如果你可以提供帮助,可能不是你想要做的事情。 (为什么不在Play Market?)
答案 2 :(得分:0)
看看this solution如何通过url安装apk或者你想安装本地apk文件already downloaded to the device
如何确定有更新?定期轮询您的服务器,或者使用Google Cloud Messaging或类似服务器。
答案 3 :(得分:0)
遵循此link,应用内更新仅适用于运行Android 5.0(API级别21)或更高版本的设备,并且要求您使用Play Core库1.5.0或更高版本。 类型:
注意:当您向应用发布Android应用捆绑包时,使用应用内更新的应用允许的最大压缩下载大小为150MB。应用内更新与使用APK扩展文件(.obb文件)的应用不兼容。
检查更新可用性
// Creates instance of the manager.
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);
// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
// For a flexible update, use AppUpdateType.FLEXIBLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
// Request the update.
}
});
开始更新
appUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
appUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
this,
// Include a request code to later monitor this update request.
MY_REQUEST_CODE);
您请求的更新类型决定了您需要采取的下一步。要了解更多信息,请阅读有关如何Handle an immediate update或Handle a flexible update.
的部分获取更新状态的回调
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (myRequestCode == MY_REQUEST_CODE) {
if (myRequestCode != RESULT_OK) {
log("Update flow failed! Result code: " + resultCode);
// If the update is cancelled or fails,
// you can request to start the update again.
}
}
}
有关共享代码检出链接的实现的更多信息