Passkit 推送通知不适用于 Urban Airship
Posted
技术标签:
【中文标题】Passkit 推送通知不适用于 Urban Airship【英文标题】:Passkit push notifications not working with Urban Airship 【发布时间】:2012-09-19 08:54:45 【问题描述】:我安装了通行证。当安装在注册到我的服务器的设备上时,设备 ID 也会注册到 Urban Airship 服务。
到目前为止一切顺利。
当我尝试从城市飞艇的仪表板发送推送消息,或冰壶,或让服务器发送推送时,设备永远不会收到。推送 passkit 更新时有什么特别需要考虑的吗?
【问题讨论】:
您在设备的控制台中看到什么了吗?我发现有时推送消息会被拒绝,因此值得看看是否收到了推送以及它是否正在联系您的存折服务更新。 遗憾的是没有关于推送的输出:( 标准推送消息是否适用于设备上的其他应用程序?您是否从 AirShip 收到表明您的推送已被接受的反馈?我发现在直接处理 Apple 的推送网关时,有时您需要高级 API 来为您提供结果代码。我不知道 AirShip 是否使用它。 是的,我经常收到真实应用的推送消息。高级 API 是什么样的? 当您直接通过 Apple 的网关调用消息时,您可以发送一个“高级数据包”,该数据包将返回一个代码。用于查找 JSON 数据包等中的问题,但可能被 UA 隐藏。 【参考方案1】:经过大量修补后,我得到了这个工作。解决方案不直观:
确保您在 Urban Airship 上创建的“应用程序”正在推送到 Apple 的生产服务器。 Passbook 无法识别向开发服务器推送的 passbook(您只能在创建应用程序时执行此操作 - 之后无法修改)。
确保上传用于签署 Pass ID 的证书,而不是用于标准推送通知的证书。这很重要,因为证书中嵌入了 PassID。
不管 Apple 怎么说,您都需要在有效负载中包含一些内容。据我所知,这是必要的,因为 Urban Airship 不会推送空的有效载荷。有效载荷的内容无关紧要。设备只关心它得到一些东西,所以它知道需要更新。例如,这有效(python):
airship = urbanairship.Airship(_UrbanAirshipPassbookKey, _UrbanAirshipPassbookMasterSecret) airship.push('aps': 'alert': 'Go.', device_tokens=tokens)
Urban Airship 有望在未来改变这一点。
【讨论】:
【参考方案2】:当我对后端有了更多的控制权时,我想通了。
Server response was malformed (Wrong type object for key lastUpdated in response dictionary. Expected NSString but found __NSCFNumber.)
所以现在它适用于城市飞艇
【讨论】:
以上是关于Passkit 推送通知不适用于 Urban Airship的主要内容,如果未能解决你的问题,请参考以下文章
iOS 中的 Urban Airship SDK 集成和推送通知
如何在 iPhone 中实现 Urban Airship 的推送通知?