[英]Detect if mobile app was installed from Production Track or Beta Track in AppStore/Play Store
我有一个适用于Android和iOS的移动应用程序,它们都是使用 Xamarin 构建的。
Android - 该应用程序被上传到Beta Track上的 Play 商店,一旦测试完成,它就会被提升为Production Track 。
iOS - 测试完成后,应用程序将上传到Test Flight ,在 AppStoreConnect 中创建一个新版本,将构建设置为当前处于测试飞行状态的应用程序,然后准备销售(因此显示在 Apple AppStore中)。
有没有办法在移动应用程序中检测应用程序是从 Play 商店中的 Beta Track 或 Production Track 安装的(适用于 Android)。 对于 iOS 检测应用程序是从测试飞行还是从 App Store 安装的?
我还有 2 个不同的 WCF Web 移动应用程序连接到的服务,一个是 Beta 服务,另一个是生产服务,这些端点是在应用程序中硬编码的。
我想要完成的是当应用程序从生产跟踪/应用商店安装然后连接到生产服务端点时,当应用程序从其他任何地方安装时(即 Beta 跟踪/试飞)然后使用 Beta 服务。
我目前正在做的是,当应用程序打开时,用户可以选择在 2 之间进行选择。当涉及到生产版本时,我从用户那里删除了这个选择,只是将应用程序 go 设为生产。 我希望根据用户安装应用程序的位置做出选择。
明确地说,这样做的目的是构建一个可用于 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 的答案。
我相信目前是不可能的。 但是,如果您想针对两个不同的域集 API 测试相同的 android 构建,则可以使用content provider
方法。 您可以创建一个管理员/实用程序类型的应用程序,它将通过使用content providers
程序传递/更新您原始应用程序中的域。
我在我的一个产品中遵循了同样的做法,它真的很酷。
我希望根据用户安装应用程序的位置做出选择。
这是一个很好的问题。
一般情况下,我们不需要直接从应用程序或测试地点知道用户安装在哪里。我们可以使用版本跟踪来知道用户首先安装了哪个版本。然后从版本号我们可以知道安装在哪里。
也许你会怀疑为什么能知道。 是的,你的怀疑是正常的。 但我想说它其实可以知道安装在哪里。 这取决于您在开发应用程序时如何设计版本代码。
例如:如果定义一个发布版本代码为1.0
,定义一个测试版本代码为1.0.1
。 发布发布版本时,只有一个点,否则版本代码中将有两个点。 运行应用程序时,您可以通过此规则检查版本安装位置。 这条规则并不总是与示例相同。 您可以在应用程序中自定义定义您的规则。
最后,获取版本代码可以using Xamarin.Essentials
来实现:
var currentVersion = VersionTracking.CurrentVersion;
此外, VersionTracking
还可以从应用程序中获取其他信息,请查看此文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.