PassEncoder

在 Swift 中进行 Apple Wallet (原 Passbook) pass 编码和签名。

特性

要求

安装

Swift Package Manager

将以下行添加到您的 Package.swift 文件的 dependencies 部分

.package(url: "https://github.com/aydenp/PassEncoder.git", .upToNextMajor(from: "1.0.0"))

并将 "PassEncoder" 添加到您的 target 的 dependencies 中。

用法

// Create our encoder
if let encoder = PassEncoder(passDataURL: directory.appendingPathComponent("pass.json")) {
    // Add a nice icon
    encoder.addFile(from: directory.appendingPathComponent("icon.png"))
    let passData = encoder.encode(signingInfo: (certificate: URL_TO_CERT.PEM, password: CERT_PASSWORD))
    // Your archived .pkpass file is in passData as Data
}

在使用该库之前,您还需要设置 Apple WWDR 证书 URL,您可以在下面阅读相关内容

注意! 此库中的操作都是同步的,因此建议在单独的 OperationQueue 上运行它们,以避免阻塞您的线程。

创建和准备您的证书

对于 pass.json 中的每个不同的 passTypeId,您都需要重复此步骤。

  1. 转到 Apple Developer Pass Type IDs 页面 并创建您的 pass 类型。
  2. 转到 证书部分 并按照说明为您的 pass 创建证书。
  3. 下载证书,并确保将其命名为 Certificates.p12
  4. 运行以下命令:openssl pkcs12 -in Certificates.p12 -out PassCert.pem
  5. 您的 pass 证书现在存储在 PassCert.pem 中!

您还需要下载 Apple Worldwide Developer Relations Intermediate Certificate - G4 文件来签名 passes。

  1. 此处下载中间证书。

  2. 将其导入到钥匙串访问 (双击它)。

  3. 在钥匙串访问中找到它,并将其导出为 .pem 文件。

  4. 在您的代码中,将 PassSigner 的 WWDR URL 设置为该文件。

     PassSigner.shared.appleWWDRCertURL = URL(fileURLWithPath: PATH_TO_WWDR_CERT.PEM)
    

文档

要充分利用该软件包,请查看文档,并查看所有可供您使用的方法和变量。

贡献

欢迎为 PassEncoder 的源代码做出贡献,使其变得更好! 只需尽量遵守通用的编码风格,使其尽可能易于阅读。

如果您在使用代码或在使用过程中发现问题,请创建一个 issue。 如果可以,我们鼓励您贡献代码并提交pull request

许可

本项目基于 MIT 许可证 授权。 请确保您在使用它的过程中遵守其条款。

链接