Push Notificationなんかをするとき、現在のProvisioning profileがdevelopmentかdistributionかを知りたい時があります。
調べると直接とれるAPIは無いみたいで、以下のStack Overflowが出てきます。
上記のStackoverFlowをもとに、Objective-Cで実装したgistがありました。
https://gist.github.com/steipete/7668246
これを参考にSwiftで再実装しました。
https://gist.github.com/rkawajiri/1a0b01c2423ef7f0e0ed
public struct ProvisioningProfile {
public static let sharedInstance = ProvisioningProfile()
#if (arch(i386) || arch(x86_64)) && os(iOS)
public let isDevelopment = true
#else
public let isDevelopment: Bool
private init() {
guard let provision = NSBundle.mainBundle().pathForResource("embedded", ofType: "mobileprovision"),
let data = NSData(contentsOfFile: provision) else {
isDevelopment = false
return
}
let bytes = Array<UInt8>(UnsafeBufferPointer(start: UnsafePointer<UInt8>(data.bytes), count: data.length))
let profile = bytes
.map { UnicodeScalar($0) }
.filter { $0.isASCII() }
.reduce("") { "\($0)\($1)" }
.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
.joinWithSeparator("")
isDevelopment = profile.rangeOfString("<key>get-task-allow</key><true/>")?.count > 0
}
#endif
}