【问题标题】:Requesting the device token请求设备令牌
【发布时间】:2012-11-30 19:47:47
【问题描述】:

在处理推送通知时,didRegisterForRemoteNotificationsWithDeviceToken 会为通知注册设备并接收我们之后可以使用的 deviceToken,但是如果在应用启动时没有互联网并且 didRegisterForRemoteNotificationsWithDeviceToken 运行时会发生什么?

有没有办法强制 didRegisterForRemoteNotificationsWithDeviceToken 再次运行并接收令牌?

谢谢

【问题讨论】:

    标签: iphone ios ipad push-notification


    【解决方案1】:

    您应该阅读此技术说明:TN2265 - Troubleshooting Push Notifications

    上面写着:

    当安装第一个支持推送的应用程序时,iOS 或 Mac OS X 会尝试 建立与推送服务的持久网络连接 将由系统上所有支持推送的应用程序共享。如果两者都没有 委托回调 应用程序:didRegisterForRemoteNotificationsWithDeviceToken:也不 应用程序:didFailToRegisterForRemoteNotificationsWithError:是 调用,表示此连接尚未建立。

    这不一定是错误情况。系统可能没有 完全没有互联网连接,因为它超出了任何单元格的范围 塔或 Wi-Fi 接入点,或者它可能处于飞行模式。 相反 将此视为错误,您的应用程序应正常运行, 仅禁用依赖推送通知的功能。

    请记住,网络可用性可能会经常变化。一旦 与推送服务的持久连接成功,其中之一 将调用前面提到的应用程序委托方法。

    您应该在每次应用程序启动时调用registerForRemoteNotificationTypes,即使没有网络连接。推送框架处理其余部分。在 didRegisterForRemoteNotificationsWithDeviceToken 中,您将令牌发送到您的服务器(如果尚未发送或令牌已更改)。

    同时检查Local and Push Notification Programming Guide

    通过请求设备令牌并将其传递给提供者 在您的应用程序启动时,您可以帮助确保提供商 具有设备的当前令牌。如果用户将备份还原到 为其创建备份的设备或计算机以外的设备或计算机 (例如,用户将数据迁移到新设备或计算机),他 或者她必须至少启动一次应用程序才能接收 再次通知。如果用户将备份数据恢复到新设备 或计算机,或重新安装操作系统,设备令牌 变化。此外,切勿缓存设备令牌并将其提供给您的 提供者;始终在需要时从系统获取令牌。 如果您的应用程序之前已注册,请调用 registerForRemoteNotificationTypes:操作系统中的结果 立即将设备令牌传递给委托人,而不会导致 额外的开销。

    【讨论】:

    • 好的,但是 iOS 的每次尝试之间都有一个增量时间,对吧?如果我现在需要它怎么办?有什么办法让它现在检查它?
    • +1 - 这表明我的公司防火墙由于高端口号而阻止了 Apple 沙盒服务器。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多