通过Urban Airship向Passbook推送通知不会出现在设备上

时间:2013-02-12 19:09:08

标签: apple-push-notifications urbanairship.com passbook

我发现这篇文章对于设置非常有帮助,但我还没有看到推送通知在iPhone上安装了传递。

Passkit-push-notification-not-working-with-urban-airship

我在城市飞艇的网站上设置我的应用程序,推动Apple的开发服务器。我在手机上安装了一个通行证并运行了以下命令,我在上面的帖子中找到了这些命令:

airship = urbanairship.Airship(_UrbanAirshipPassbookKey, _UrbanAirshipPassbookMasterSecret) 
airship.push({'aps': {'alert': 'Go.'}}, device_tokens=tokens)

然后我在Xcode的iPhone控制台窗口中看到了这个推送的确认。

Received push for topic pass.xxx.xxx: {
    ...
    aps =  {
        banner = "Hello";
    };

然后iPhone将其更新标记及其传递类型ID和设备库ID发送回Web服务。此时,Web服务应该发回已更改的传递列表。但是,我反而看到以下错误消息:

<Warning>: Web service error for pass.mypasstype.id (http://192.168.30.209:8000): Response to 'What changed?' request included 1 serial numbers but the lastUpdated tag (2013-02-11T17:25:25) remained the same.

有谁知道为什么会这样?我是否需要实际修改传递中的字段以使推送通知显示在设备上?

1 个答案:

答案 0 :(得分:2)

您的问题的简短答案是肯定的,您需要修改通行证中的字段以获取推送通知。这是因为,与app推送不同,Passbook推送有效负载不会确定通知的内容。

Passbook推送消息的目的是警告设备Web服务具有更新内容的新传递。警报文本仅由新传递内容确定。推送有效负载中的任何内容都将被忽略。 Apple建议a push notification with an empty JSON dictionary

发送推送后,会触发以下链:

  • 设备使用passTypeIdentifierlastUpadted代码
  • 接收推送和查询网络服务
  • Web服务提供自passTypeIdentifier标记
  • 以来已更改lastUpdated的所有通行证的序列表列表
  • 设备接收序列并请求Web服务为每个新传递发送新的.pkpass包
  • Web服务发送新的.pkpass包
  • 设备接收.pkpass捆绑包并根据旧密码进行检查以进行更改
  • 如果符合以下条件,设备将显示changeMessage键中提供的通知:
    • 值已更改
    • changeMessage包含%@ string

如果%@ string不存在,则传递将显示通知Pass Changed。如果更改的值不存在changeMessage密钥,则不会显示任何消息。