如何使用 react-native 实现 Android Playstore 应用内更新

Man*_* MK 12 android react-native

Play 商店应用内更新的即时流程

如何使用已经在 Play 商店上架的 react-native 应用程序实现 Play 商店应用内更新?

我已经通过 API 调用实现了代码推送和内部版本检查,以强制用户更新应用程序。

使用 Codepush:代码推送仅适用于 javascript 更改。但是,在许多情况下,当本机代码发生更改时,我们需要更新整个应用程序。

使用 API 检查:我们需要观察更新何时生效,并更新后端保存的版本号以强制用户更新应用程序。

虽然这两种解决方案都有些零散,但我想实现 Play-store 应用内更新的优雅方法,但找不到如何完成的线索。

Nar*_*oju 11

我没有为此找到任何 react-native 包,所以我不得不为我自己实现它。

您可以查看完整的教程这里和下面可下载的文件在这里

但简而言之,这就是您需要做的。

  1. android在您的 react-native 项目中打开文件夹,Android Studioimplementation 'com.google.android.play:core:1.7.3'build.gradle(app)文件的依赖项部分的末尾添加。像下面,
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    //noinspection GradleDynamicVersion
    implementation "com.facebook.react:react-native:+"  // From node_modules


    .......
    implementation 'com.google.android.play:core:1.7.3' // add it at the end
}

Run Code Online (Sandbox Code Playgroud)

添加依赖项后单击同步。

  1. 下载InAppUpdateModule.javaInAppUpdatePackage.java文件放在MainActivity.java( android/app/src/main/java/<package>/)的同一目录中
  2. InAppUpdateModule.java和 中的包名称更改InAppUpdatePackage.java为您的项目包名称。
  3. 现在,打开MainApplication.java并加入我们的InAppUpdatePackagegetPackages法像的下方,
        @Override
        protected List<ReactPackage> getPackages() {
          @SuppressWarnings("UnnecessaryLocalVariable")
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // Packages that cannot be autolinked yet can be added manually here, for example:
           //  packages.add(new MyReactNativePackage());
            packages.add(new InAppUpdatePackage());
          return packages;
        }
Run Code Online (Sandbox Code Playgroud)
  1. 下载InAppUpdate.js并将其放入您的react-native项目中。
  2. 将 导入到InAppUpdate.js任何js文件中,无论您想在哪里使用。并像下面那样使用它。
  componentDidMount () {
    InAppUpdate.checkUpdate() // this is how you check for update 
  }
Run Code Online (Sandbox Code Playgroud)
  1. 就是这样。

您可以从这里下载所有文件


Man*_* MK 0

多一个选项(比 APi 检查更好):使用https://github.com/kimxogus/react-native-version-check从 Play 商店检查最新版本并采取相应措施

VersionCheck.needUpdate()
  .then(async res => {
    console.log(res.isNeeded);    // true
    if (res.isNeeded) {
      Linking.openURL(await VersionCheck.getStoreUrl());  // open store if update is needed.
    }
  });
Run Code Online (Sandbox Code Playgroud)

  • -1 表示该库。您可以看到它实现了 google play 的版本检查[此处](https://github.com/kimxogus/react-native-version-check/blob/master/packages/react-native-version-check/src/ providers/playStore.js)通过解析应用程序列表中的 HTML 来实现。似乎没有任何很棒的软件包可以包装 Play 商店应用内更新 API,因此 naroju 的答案似乎是目前执行此操作的最佳方法。 (2认同)