✨ 用于从应用程序的嵌入式 Provision 描述文件读取值的便捷助手。
嵌入式 Provision 描述文件可以回答关于 iOS 或 macOS 应用程序在何处以及如何运行的许多问题,例如
... 以及更多!
您可以查看提供的示例项目,或者直接自己尝试。
import EmbeddedProvision
do {
if let provision = try EmbeddedProvision.load() {
print("Your app was signed with \(provision.name).")
} else {
print("Your app is likely running in a Simulator right now.")
}
}
catch EmbeddedProvisionError.decodingError {
fatalError("Decoding errors should not happen. Please file an issue.")
}
catch {
fatalError("Generally errors are very unexpected, and so is this: \(error) ")
}
您可以使用 EmbeddedProvision.load()
加载应用程序的嵌入式 Provision 描述文件。 这将在您的应用程序 bundle 中的 embedded.mobileprovision
(在 iOS 上)或 Contents/embedded.provisionprofile
(在 macOS 上)下查找描述文件。
一旦您手头有了 EmbeddedProvision
的实例,您就可以访问以下更多关于描述文件本身的属性
属性 | 签名 | 讨论 |
---|---|---|
name |
String |
用于签署您的应用程序的描述文件的名称 |
appIDName |
String |
应用 ID 的名称(如开发者门户中提供的) |
platform |
[String] |
支持的平台列表(即 iOS 、visionOS 、xrOS 等) |
isXcodeManaged |
Bool? |
描述文件是否由 Xcode 管理 |
creationDate |
Date |
描述文件的创建时间 |
expirationDate |
Date |
描述文件何时过期 |
entitlements |
授权 |
描述文件的实际内容。 请参阅下文。 |
Apple 支持许多不同的授权。 此库目前仅解码其中的一部分。 如果您需要任何其他授权,请添加它并打开 PR。
授权 | 签名 | 讨论 |
---|---|---|
keychainAccessGroups |
[String] |
此应用可以访问的钥匙串的应用 ID 列表(包括通配符) |
getTaskAllow |
Bool |
调试器是否可以附加到正在运行的应用。 对于发布的版本应为 false |
apsEnvironment |
APSEnvironment? |
如果应用支持推送通知,此属性会告诉您要使用哪个 APNs(以前称为 APS)环境 |
teamId |
String |
签署此应用的开发者团队的标识符。 这会影响例如应使用哪个 APNs 推送密钥 |
要使用 CocoaPods 安装 MagicBell,请将此条目添加到您的 Podfile
pod 'EmbeddedProvision', '>=1.1.1'
重要提示:确保在您的 Podfile
中指定 use_frameworks!
。
然后,运行 pod install
。
要使用 Swift Package Manager 安装库,只需将以下依赖项添加到您的项目中
dependencies: [
.package(url: "https://github.com/magicbell/embedded-provision", .upToNextMajor(from: "1.1.1"))
]
要使用 Carthage 安装库,请将以下依赖项添加到 Carfile 中
github "magicbell/embedded-provision" "1.1.1"
然后,运行 carthage update --use-xcframeworks --platform [iOS|macOS] --no-use-binaries
(选择所需的平台)以解析依赖项。
将 EmbeddedProvision.xcframework
与 Carthage 解析的其他依赖项一起添加到您项目链接的框架中。
简而言之,它们是 Apple 允许您的应用在其平台上运行的方式。 它们是代码签名的定义,说明您的应用可以在哪里运行,可以做什么。 但没有人比 Apple 自己在 TN3125 - Provisioning profile fundamentals 中解释得更好。
如果应用未签名以在设备上运行,则不会有描述文件。 当应用在模拟器中运行时,通常会发生这种情况。
应该支持! 但尚未经过广泛测试。 如果您遇到任何问题,请提交 issue。