0

这个应用程序不在 google play 上。我可以从服务器手动更新,但我想自动更新它,就像在 google play 中一样,它在 bg 中自动更新,并在通知栏中显示。

我怎样才能做到这一点?

谢谢

4

4 回答 4

0

是的,要在后台更新您的数据/APK,您可以使用 GCM(谷歌云消息)推送通知。

为此,您可以在应用程序启动时询问用户何时从服务器更新您的数据/APK。现在,当服务器的数据更改时,您可以简单地向设备发送推送通知并在后台更新您的数据。如果 APK 然后下载它并将其安装在设备中。

您将获得更多详情Google Cloud Messaging for Android | 安卓开发者

希望它会有所帮助。

于 2013-01-24T12:05:43.553 回答
0

您可以设置一个定期运行的服务,并检查服务器是否有可用的更新(检查 APK 的时间戳是检查这一点的一种方法)。

然后下载APK。安装它,并发送通知。

这是一件复杂的事情,如果你能帮助它,你可能不想自己做。(为什么不在 Play Market 中?)

于 2013-01-24T12:07:10.433 回答
0

看看这个解决方案如何通过 url 安装 apk 或者你想安装一个已经下载到设备的本地 apk 文件

如何确定有更新?定期轮询您的服务器,或者使用 Google Cloud Messaging 或类似工具。

于 2013-01-24T12:11:36.843 回答
0

按照此链接,应用内更新仅适用于运行 Android 5.0(API 级别 21)或更高版本的设备,并且需要您使用 Play Core 库 1.5.0 或更高版本。类型:

  • 灵活的
  • 即时

注意:当您将应用发布为 Android App Bundle 时,使用应用内更新的应用的最大允许压缩下载大小为 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);

您请求的更新类型决定了您需要采取的后续步骤。要了解更多信息,请阅读有关如何处理即时更新处理灵活更新的部分。

获取更新状态的回调

@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.
    }
  }
}

有关执行代码签出链接的更多信息共享

于 2019-06-04T07:44:23.563 回答