0

注册推送通知的常用方法是在 Appdelegate 中添加以下代码。

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];

如果没有互联网连接会发生什么?当互联网连接恢复时,应用程序是否会尝试自动注册推送通知?

在注册推送通知之前是否有必要检查互联网连接和已经注册的条件,如下所示

if ([wifiConnection wifiConnectivity]){
    if (![[NSUserDefaults standardUserDefaults] stringForKey:@"MyAppSpecificGloballyUniqueString"]) {            
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
    }
}

此外,如果我们将它添加到应用程序中,它会变得活跃 - 我希望它会按预期工作。

请确认。

4

1 回答 1

1

如果您没有WIFI或网络,则不会调用注册回调,因此您无需在调用注册方法之前检查连接。

据我了解,如果您在通话时没有WIFI或蜂窝连接但连接恢复,那么此时将调用registerForRemoteNotificationTypes:您的委托方法。application:didRegisterForRemoteNotificationsWithDeviceToken:

关于第二点,您必须在每次启动应用程序时注册设备令牌。仔细查看有关推送通知的 Apple 指南,它确实有据可查: https ://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/ uid/TP40008194-CH103-SW1

应用程序应在每次启动时注册并为其提供者提供当前令牌

通过在每次启动应用程序时请求设备令牌并将其传递给提供者,您可以帮助确保提供者拥有设备的当前令牌。如果用户将备份恢复到为其创建备份的设备或计算机之外的设备或计算机(例如,用户将数据迁移到新设备或计算机),他或她必须至少启动一次应用程序以使其恢复再次收到通知。如果用户将备份数据恢复到新设备或计算机,或重新安装操作系统,则设备令牌会更改。此外,永远不要缓存设备令牌并将其提供给您的提供商;始终在需要时从系统获取令牌。如果您的应用程序之前已注册,请调用 registerForRemoteNotificationTypes:

您应该在 中注册设备applicationDidFinishLaunching:,无需调用它didBecomeActive,在这种情况下令牌不会更改。

于 2013-10-17T06:13:24.703 回答