嵌入式 Provision

Version License Platform Carthage compatible SwiftPM compatible Swift Tests

✨ 用于从应用程序的嵌入式 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) ")
}

目录

API

您可以使用 EmbeddedProvision.load() 加载应用程序的嵌入式 Provision 描述文件。 这将在您的应用程序 bundle 中的 embedded.mobileprovision(在 iOS 上)或 Contents/embedded.provisionprofile(在 macOS 上)下查找描述文件。

属性

一旦您手头有了 EmbeddedProvision 的实例,您就可以访问以下更多关于描述文件本身的属性

属性 签名 讨论
name String 用于签署您的应用程序的描述文件的名称
appIDName String 应用 ID 的名称(如开发者门户中提供的)
platform [String] 支持的平台列表(即 iOSvisionOSxrOS 等)
isXcodeManaged Bool? 描述文件是否由 Xcode 管理
creationDate Date 描述文件的创建时间
expirationDate Date 描述文件何时过期
entitlements 授权 描述文件的实际内容。 请参阅下文。

授权

Apple 支持许多不同的授权。 此库目前仅解码其中的一部分。 如果您需要任何其他授权,请添加它并打开 PR

授权 签名 讨论
keychainAccessGroups [String] 此应用可以访问的钥匙串的应用 ID 列表(包括通配符)
getTaskAllow Bool 调试器是否可以附加到正在运行的应用。 对于发布的版本应为 false
apsEnvironment APSEnvironment? 如果应用支持推送通知,此属性会告诉您要使用哪个 APNs(以前称为 APS)环境
teamId String 签署此应用的开发者团队的标识符。 这会影响例如应使用哪个 APNs 推送密钥

安装

CocoaPods

要使用 CocoaPods 安装 MagicBell,请将此条目添加到您的 Podfile

pod 'EmbeddedProvision', '>=1.1.1'

重要提示:确保在您的 Podfile 中指定 use_frameworks!

然后,运行 pod install

Swift Package Manager

要使用 Swift Package Manager 安装库,只需将以下依赖项添加到您的项目中

dependencies: [
    .package(url: "https://github.com/magicbell/embedded-provision", .upToNextMajor(from: "1.1.1"))
]

Carthage

要使用 Carthage 安装库,请将以下依赖项添加到 Carfile 中

github "magicbell/embedded-provision" "1.1.1"

然后,运行 carthage update --use-xcframeworks --platform [iOS|macOS] --no-use-binaries(选择所需的平台)以解析依赖项。

EmbeddedProvision.xcframework 与 Carthage 解析的其他依赖项一起添加到您项目链接的框架中。

FAQ

什么是嵌入式 Provision 描述文件?

简而言之,它们是 Apple 允许您的应用在其平台上运行的方式。 它们是代码签名的定义,说明您的应用可以在哪里运行,可以做什么。 但没有人比 Apple 自己在 TN3125 - Provisioning profile fundamentals 中解释得更好。

为什么我的应用中没有嵌入 Provision 描述文件?

如果应用未签名以在设备上运行,则不会有描述文件。 当应用在模拟器中运行时,通常会发生这种情况。

此库支持 macOS 吗?

应该支持! 但尚未经过广泛测试。 如果您遇到任何问题,请提交 issue

贡献

欢迎任何形式的贡献。