我正在开发iOS应用程序,需要确定运行应用程序的环境以对API端点进行分类。我想知道应用程序是否在生产,模拟器和Test Flight下运行。 我已经按用户定义的设置对生产和模拟器进行了分类,但我仍然不确定如何识别Test Flight。 有小费吗?谢谢!
答案 0 :(得分:1)
如果您要求在应用内获取此信息,则可以appStoreReceiptURL
NSBundle
来自apple documentation ...
对于从App Store购买的应用程序,请使用此应用程序包属性来查找收据。此属性不保证仅在URL处是否存在文件,如果存在收据,则表示其位置。
NSBundle.mainBundle().appStoreReceiptURL?.lastPathComponent
有关实施,请参阅this问题
答案 1 :(得分:0)
答案 2 :(得分:0)
迅速5。使用下面的WhereAmIRunning类检查环境。
import Foundation
class WhereAmIRunning {
// MARK: Public
func isRunningInTestFlightEnvironment() -> Bool{
if isSimulator() {
return false
} else {
if isAppStoreReceiptSandbox() && !hasEmbeddedMobileProvision() {
return true
} else {
return false
}
}
}
func isRunningInAppStoreEnvironment() -> Bool {
if isSimulator(){
return false
} else {
if isAppStoreReceiptSandbox() || hasEmbeddedMobileProvision() {
return false
} else {
return true
}
}
}
// MARK: Private
private func hasEmbeddedMobileProvision() -> Bool{
if let _ = Bundle.main.path(forResource: "embedded", ofType: "mobileprovision") {
return true
}
return false
}
private func isAppStoreReceiptSandbox() -> Bool {
if isSimulator() {
return false
} else {
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
let appStoreReceiptLastComponent = appStoreReceiptURL.lastPathComponent as? String, appStoreReceiptLastComponent == "sandboxReceipt" {
return true
}
return false
}
}
private func isSimulator() -> Bool {
#if arch(i386) || arch(x86_64)
return true
#else
return false
#endif
}
}