【问题标题】:Can a pass in passbook be updated by an application or only by an APN?是否可以通过应用程序或仅通过 APN 更新存折中的通行证?
【发布时间】:2013-01-25 21:19:05
【问题描述】:

如果我有一个创建通行证的应用程序并且用户将其添加到存折中,那么应用程序是否可以稍后更新该通行证的内容。

即当应用程序运行时,它可以使用新的时间触发器和新内容更新通行证,然后当触发器触发时,用户会收到通知。

或者现有的通行证只能由 APN 更新而没有别的?

【问题讨论】:

    标签: ios passbook


    【解决方案1】:

    我不确定为什么上面的答案不正确。

    应用可以在推送通知的情况下更新通行证,前提是它具有 passTypeIdentifier 的权限并且知道通行证序列号。

    需要在您的应用之外的服务器上创建和签名通行证,但是一旦您的应用收到新的 .pkpass 包,它可以使用 PKPassLibrary 类的 replacePassWithPass 方法更新通行证。

    来自上面链接的文档。

    您的应用会从您的服务器下载新的通行证并使用 replacePassWithPass:PKPassLibrary 类的方法来安装它。

    【讨论】:

    • 因为我根本没有谈论推送通知! :) APN 是您使用的服务器.. 一个接入点。
    • 我澄清说 APN == 你的服务器,不是推送通知,也不是真正意义上的 APN
    • 将 APN 理解为 Apple 推送通知。问题在于需要使用证书来签署更新的通行证。如果证书嵌入到您的应用程序中,则可以通过反编译 .ipa 来访问它。只有清单需要签名,所以理论上,.pkpass 内容可以由您的应用程序构建,并由您的服务器提供签名。根据您的通行证,完全可以将完整的 .pkpass 包嵌入到您的应用程序中。归根结底,存折应用与提供动态内容的任何其他应用没有什么不同,您需要一个来源来提供更新。
    • APN 是一个模棱两可的术语.. 也许我弄错了不小心 :D -- 无论如何,理论上应用程序可以生成签名通行证.. 它可以包含私钥和证书——但这不现实,因为您不想发送私钥
    • 我正在研究是否有一种方法可以让应用程序在不与服务器交互的情况下更新通行证,尽管我没有明确提及这一点。因此,将其标记为未来读者可接受的答案。
    【解决方案2】:

    仅由 apn AFAIK - 它需要重新签名,以便签名对新内容有效

    见:https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/PassKit_PG/Chapters/Apps.html#//apple_ref/doc/uid/TP40012195-CH6-SW1

    编辑:正如用户 PassKit 所说,当然不需要推送通知来更新通行证,但是
    APN(这里:您的接入点 => 您的服务器)必须创建通行证的新数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多