我正在测试我们应用程序中的版本检查功能。我们的Android客户端从我们的服务器查询数据,这些数据返回我们允许访问我们服务的最低客户端版本。运行旧版本的用户被引导到游戏商店进行更新。
如果用户已过期,我们会使用以下代码将他们引导到Play商店:
final String appPackageName = getPackageName();
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}
在我们的应用程序中,过时的客户端被定向到市场://url。这会启动Play商店应用程序并加载我们应用程序的目标页面。
为了测试这一点,我创建了一个特殊的“过时”版本的应用程序。在清单中,我将versionCode设置为1,以便它低于Play商店中的当前版本。我还设置了一个错误的低版本名称来触发我们的更新过程。
android:versionCode="1"
android:versionName="1.0.1"
我构建了一个签名版本的应用程序,使用ADB安装(不是通过Play商店)并进行测试。
版本检查触发,我被定向到Play商店应用程序和我的应用程序页面。但是,Play商店页面为我提供了卸载或打开应用程序的操作。它没有给我更新应用程序的选项。
为什么Play商店不为我提供更新按钮?这是因为我的应用程序最初不是通过Play商店安装的吗?有办法解决这个问题吗?
我相信你对应用程序最初不是从商店安装的猜测是正确的。为此,我建议使用谷歌游戏测试版程序。只要您的设备注册为该特定应用程序的测试版,它就会收到更新选项(在商店上架3小时后)。
不幸的是,您将需要上传两次。一次是为了获得您想要测试的功能,一次是为了测试它是否有效。
话虽如此,你带着你的应用进入应用商店的事实是你的代码工作的举证责任。剩下的部分是谷歌的问题。所以你应该感到安全,你的代码正在工作,只要游戏商店已经准备好让人们更新,你应该没问题。
我已经在两个独立的应用程序中实现了这个功能,并且只测试了(在初始发布之前)用户是否被正确引导到应用商店。我通常会等待24小时来更新服务器上的最低版本,以防用户缓存了旧版本。