【发布时间】:2019-10-14 09:34:06
【问题描述】:
我有一个适用于 Android 和 iOS 的移动应用程序,它们都是使用 Xamarin 构建的。
Android - 应用被上传到 Beta Track 上的 Play 商店,一旦测试完成,它就会被推广到 Production Track。
iOS - 测试完成后,应用将上传到 Test Flight,在 AppStoreConnect 中创建一个新版本,构建设置为当前处于测试飞行中的应用,并且然后准备出售(因此显示在 Apple AppStore 中)。
有没有办法在移动应用中检测应用是从 Play 商店的 Beta Track 还是 Production Track 安装的(适用于 Android)。对于 iOS,检测应用程序是从 Test flight 还是 App Store 安装的?
我还有 2 个不同的 WCF Web 服务供移动应用程序连接,一个是 Beta 服务,另一个是生产服务,这些端点是在应用程序中硬编码的。
我想要完成的是,当应用程序从生产轨道/应用商店安装然后连接到生产服务端点时,当应用程序从其他任何地方(即 Beta 跟踪/试飞)安装时,然后使用 Beta服务。
我目前正在做的是,当应用程序打开时,用户可以选择在 2 之间进行选择。当涉及到生产版本时,我会从用户那里删除这个选择,只让应用程序进入生产状态。我希望根据用户安装应用程序的位置做出选择。
明确地说,这样做的目的是构建一个可用于 Beta 和 Production 的单一 APK/IPA 应用。
更新 - 有一些有趣的建议使用 API 根据版本号重新路由 Web 服务调用,但这些仍然涉及为应用程序的 Beta 和生产版本构建单独的 APK 文件(这不能解决题)。至于我试图通过检测来自 Beta Track 的安装来完成的工作,目前看来这是不可能的。
【问题讨论】:
-
使用 android 的 versionCode 区分 Production Track 和 Beta Track
-
@RahulKhurana
versionCode将如何实现它,因为要求在运行时更改同一构建上的域? -
@RahulKhurana 不幸的是,这意味着要重新构建应用程序并再次将其上传到 Play 商店,这是我目前正在做的并且希望摆脱的。
-
您可以通过每个API获取
versionCode,然后根据版本到服务器索引文件。如果 versionCode 用于生产轨道,则将调用重定向到生产 URL,否则将调用重定向到 beta 轨道 URL -
@RahulKhurana 我不确定我是否关注?您是说将生产移动版本存储在 WCF 服务上,如果连接到它的移动应用程序匹配,那么它应该只连接到生产服务?这是一个好主意,但会产生更多问题然后修复,例如,一旦您更新服务,测试版用户会发现他们正在连接到生产环境。我仍然想保持这种分离。
标签: android ios xamarin xamarin.forms