无法获取deviceToken

时间:2009-11-30 09:48:12

标签: objective-c iphone apple-push-notifications

我想在我的应用程序中使用推送通知。我创建了一个唯一的应用程序ID并创建了推送开发证书。还使用该唯一应用程序ID创建了配置文件。我将用于注册设备的代码放在应用程序终止方法中,以便当我的应用程序关闭时,它启用了推送通知,当它启动时会禁用推送通知。目前我正在使用ApplicationDidFnishLaunching方法并注册推送通知。应用程序已注册推送通知我认为因为它要求允许在alertview上发送推送通知。但是我从来没有找到设备令牌。应用程序没有调用该方法。我已经在ApplicationDelegate中编写了这个方法。

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"devToken=%@",deviceToken);
[self alertNotice:@"" withMSG:[NSString stringWithFormat:@"devToken=%@",deviceToken] cancleButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitle:@""];
}

即使我在这个方法中设置了一个断点,但它没有调用。 我有iPhone 3GS越狱了。有谁知道为什么我没有得到devicetoken。

2 个答案:

答案 0 :(得分:1)

当您致电registerForRemoteNotificationTypes:时,异步注册过程开始,因为您的应用与Apple的服务器联系。您自己的代码将继续执行,这意味着该应用程序将被关闭。最有可能的是,注册没有成功,但即使它已经过程不再存在,这意味着无法调用application:didRegisterForRemoteNotificationsWithDeviceToken:

您应该只是忽略application:didReceiveRemoteNotification:中的传入通知,而不是尝试在每次应用启动时禁用通知。当应用关闭时,您不必执行任何特殊操作。它仍将被注册以接收通知,并且当应用程序未运行时,通知将不会被忽略。

答案 1 :(得分:0)

根据我的理解,Apple忽略来自越狱iPhone的令牌请求。我不想这么说,但我认为这可能是你的问题。