如果您在第一次选择“否”,则会出现“推送通知”问题

时间:2010-08-04 20:57:59

标签: iphone push-notification

正如我在这个帖子的标题中所说,我的应用程序的推送通知存在问题。 有两种情况: 当应用程序询问您是否需要推送通知并按下确定时,它的工作效果很好。

此功能:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
调用registerForRemoteNotificationTypes时调用

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Add registration for remote notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    ...
}

但是当您在开头选择NO时,然后您将设置更改为接受推送通知,则不会附加任何内容,并且此函数didRegisterForRemoteNotificationsWithDeviceToken永远不会被调用。

请帮助我,我疯了!

1 个答案:

答案 0 :(得分:1)

我看到您在以下位置注册远程通知:

- (void)applicationDidFinishLaunching:(UIApplication *)application

如果您的应用程序在支持多任务处理的iOS设备上运行,那可能不是正确的地方。

当您最初从寒冷启动应用时,会调用上述方法。这是当系统提示您接受或拒绝推送通知时 - 在您的情况下拒绝。

当您稍后退出应用程序以更改设备范围控制面板中的设置时,应用程序不会退出 - 它只是作为前台应用程序重新签名。在控制面板中启用推送通知并返回到应用程序后 - 应用程序不会再次启动,而是从后台移动到前台。

您的申请代表将在此时收到:

- (void) applicationDidBecomeActive:(UIApplication *)application

尝试使用以下方式注册推送通知:

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

您还可以通过在应用程序的Info.plist文件(UIApplicationExitsOnSuspend)中设置“应用程序不在后台运行”属性来阻止后台处理。