首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在运行时判断iOS应用程序是否正在通过TestFlight测试版安装运行

如何在运行时判断iOS应用程序是否正在通过TestFlight测试版安装运行
EN

Stack Overflow用户
提问于 2014-09-28 12:12:11
回答 5查看 29K关注 0票数 146

是否有可能在运行时检测到应用程序已通过TestFlight测试版(通过iTunes连接提交)与应用商店进行了安装?您可以提交单个应用程序包,并通过这两个应用程序包都可以使用。是否有API可以检测它的安装方式?或者,收据中是否包含可以确定这一点的信息?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-30 13:47:52

对于通过TestFlight测试版安装的应用程序,回执文件名为StoreKit\sandboxReceipt,而不是通常的StoreKit\receipt。使用[NSBundle appStoreReceiptURL],您可以在URL的末尾查找sandboxReceipt。

代码语言:javascript
复制
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSString *receiptURLString = [receiptURL path];
BOOL isRunningTestFlightBeta =  ([receiptURLString rangeOfString:@"sandboxReceipt"].location != NSNotFound);

请注意,当在本地运行构建时,以及对于在模拟器中运行的构建,sandboxReceipt也是接收文件的名称。

票数 130
EN

Stack Overflow用户

发布于 2016-08-17 05:10:26

现代Swift版本,用于模拟器(基于公认的答案):

代码语言:javascript
复制
private func isSimulatorOrTestFlight() -> Bool {
    guard let path = Bundle.main.appStoreReceiptURL?.path else {
        return false
    }
    return path.contains("CoreSimulator") || path.contains("sandboxReceipt")
}
票数 43
EN

Stack Overflow用户

发布于 2020-04-04 17:28:26

我在Swift 5.2上使用扩展Bundle+isProduction

代码语言:javascript
复制
import Foundation

extension Bundle {
    var isProduction: Bool {
        #if DEBUG
            return false
        #else
            guard let path = self.appStoreReceiptURL?.path else {
                return true
            }
            return !path.contains("sandboxReceipt")
        #endif
    }
}

然后:

代码语言:javascript
复制
if Bundle.main.isProduction {
    // do something
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26081543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档