【问题标题】:Generate pass dynamically动态生成通行证
【发布时间】:2013-04-19 05:24:29
【问题描述】:

为了创建 pass.pkpass,我通过键入命令行静态创建了一个 pass。我还在 MAMP 中使用 Web 服务。如何动态生成通行证? pass.pkpass 存储在哪里?

【问题讨论】:

标签: ios6 passbook passkit


【解决方案1】:

要动态生成通行证,您需要以下代码:

  • 检索要放入通行证的所有动态数据
  • 创建一个包含动态传递数据的pass.json 文件并计算其 SHA1 哈希
  • 收集通行证资产(图像、语言环境字符串等)并计算其 SHA1 哈希
  • 组装清单文件(.pkpass 包中的文件列表及其 SHA1 哈希)
  • 使用您的 PassID 证书签署清单文件并包含 Apple WWDR 证书
  • 将所有资产压缩到一个 .pkpass 包中
  • 使用正确的 MIME 类型提供 .pkpass 包
  • 清理您在上述过程中使用的任何临时文件夹/文件

您可能还需要以下代码:

  • serialNumberauthenticationToken 生成随机令牌
  • 在数据库中记录通行证详细信息

至于 .pkpass 文件的去向,这完全取决于您。一旦它们被提供给设备,您可以存储或删除它们。由于您需要的代码可以重新创建 .pkpass 包,并且您的 Web 服务将向已经拥有最新版本通行证的设备发送 304 响应,因此将这些文件保存在您的服务器上几乎没有价值.

如果您使用的是 MAMP,那么this PHP Library 是一个不错的起点。

【讨论】:

  • 所以我需要写一个 pass.json 吗?以及如何计算 SHA1 哈希?
  • Using PHP you could usesha1_file('pass.json');。在library above 中,构建和签署清单的代码从第 258 行开始
  • 谢谢!我会努力做到的!
  • 为什么我必须计算 SHA1 哈希?
  • 因为the specification 要求 manifest.json 包含 .pkpass 包中每个文件的列表及其 SHA1 哈希。为什么不直接使用 PHP 库,因为它绝对可以完成动态生成通行证所需的一切。它可以帮助您生成 pass.json,然后执行与 signpass 命令行工具相同的操作,但使用 PHP。
猜你喜欢
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多