android - 检测移动应用程序是从 AppStore/Play Store 中的 Production Track 还是 Beta Track 安装的
问题描述
我有一个适用于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 文件(这不能解决问题)。至于我试图通过 Detecting installs from the Beta Track 来完成什么,看起来这目前是不可能的。
解决方案
对你来说可能有点晚了,但这个答案仍然可以帮助其他人......
可以在 iOS 上找到安装源,如下所示:
#if DEBUG
// XCODE INSTALL
#else
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSString *receiptURLString = [receiptURL path];
BOOL isRunningTestFlightBeta = ([receiptURLString rangeOfString:@"sandboxReceipt"].location != NSNotFound);
if (isRunningTestFlightBeta) {
// TESTFLIGHT INSTALL
}
else {
// STORE INSTALL
}
#endif
不过,我仍然没有 Android 的答案。
推荐阅读
- git - Git克隆从makefile失败
- python - Windows 上的 Python 错误
- android - 在targetsdkversion为30时访问sdcard下载文件夹
- asp.net-core - 有没有办法在 .NET Core 的 OpenID 中更改用于 State 的值?
- python - py2exe制作的exe文件出现pystary错误
- powershell - Powershell 读取 zip 文件中的文件夹名称和计数文件
- javascript - 如何从markdown在javascript中创建目录解析器?
- python - 无法以 rb 重新打开 Django 文件
- azure - AKS 将 DNS 名称分配给专用 ClusterIP 地址
- python - 无法读取 null 的属性“EOL”