如果应用断开互联网,如何再次获取设备令牌(APNS)?

Posted

技术标签:

【中文标题】如果应用断开互联网,如何再次获取设备令牌(APNS)?【英文标题】:If app disconnect internet, how to get device token(APNS) again? 【发布时间】:2013-10-29 02:33:00 【问题描述】:

我正在实现 ios APNS,我在 AppDelegate.m 中编写代码,并将设备令牌传递给我的视图控制器(使用 NSUserDefaults)。

然后视图控制器中有一个按钮,当用户单击该按钮时,它会将设备令牌发送到我的服务器。

但问题来了。如果用户没有连接互联网,按钮动作将检测设备令牌是否为空。

当设备令牌为空时,应用必须检测网络并请求设备令牌。

但是设备token是写在AppDelegate.m中的,如何单独在类中实现注册的设备token?

非常感谢。

【问题讨论】:

【参考方案1】:

我认为每次您的应用启动时,您应该注册以获取设备令牌并发送到您的服务器,如果网络断开,您应该在网络访问时执行上述操作。 (如果没有网络,你获取token是没有用的,因为你不能发送到你的服务器,顺便说一下,系统会存储设备令牌,你注册后可能会立即获得设备令牌)

【讨论】:

我希望在视图控制器中发送到我的服务器。因为我从用户那里选择了其他参数。所以我不想在应用午餐时将设备令牌发送到我的服务器。我希望带有其他参数的设备令牌在我的视图控制器中发送一次服务器。 好的,但我认为您应该尽快将设备令牌发送到您的服务器。 但我不知道如何在应用启动时注册到设备令牌。我不知道如何在其他类中实现注册的设备令牌。我想在视图控制器中再次注册设备令牌。有人知道吗?谢谢 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 获得设备令牌后,您可以发布通知或其他内容... 您好元睿,您的方法是在AppDelegat 中实现的,在viewconroller 按钮动作中无法实现。我认为它将在视图控制器中实现一些委托。谢谢。【参考方案2】:

互联网离线时不会生成设备令牌。要生成设备令牌,设备必须需要互联网连接。

【讨论】:

【参考方案3】:

我找到了解决办法。

在 applicationDidBecomeActive 中设置代码。

【讨论】:

以上是关于如果应用断开互联网,如何再次获取设备令牌(APNS)?的主要内容,如果未能解决你的问题,请参考以下文章

服务器 apns 上丢失的设备令牌

获取 APNS 服务的设备令牌列表

Java apns:应用程序下的设备令牌列表

iphone app APNS 无法获取设备令牌,错误:“没有为应用程序找到有效的‘aps-environment’权利字符串”

Cordova 应用程序的 Firebase - 无法获取 APNS 令牌

在 apns.php 中获取失败的设备令牌