无法获取 deviceToken
Posted
技术标签:
【中文标题】无法获取 deviceToken【英文标题】:Unable to get deviceToken 【发布时间】:2009-11-30 09:48:11 【问题描述】:我想在我的应用程序中使用推送通知。我创建了一个唯一的应用程序 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 越狱了。任何人都知道为什么我没有得到设备令牌。
【问题讨论】:
【参考方案1】:当您调用 registerForRemoteNotificationTypes:
时,异步注册过程开始,因为您的应用程序联系 Apple 的服务器。您自己的代码继续执行,这意味着应用程序将被关闭。很可能,注册没有成功,但即使成功了,进程也不再存在,这意味着application:didRegisterForRemoteNotificationsWithDeviceToken:
不能被调用。
您不必在应用程序每次启动时都尝试禁用通知,而应该简单地忽略 application:didReceiveRemoteNotification:
中的传入通知,当应用程序关闭时您无需执行任何特殊操作。它仍然会注册以接收通知,并且当应用程序未运行时,不会忽略通知。
【讨论】:
目前我在 applicationDidFinishLaunching 方法中尝试,但仍然无法获取设备令牌。 - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*) error NSLog(@"Failed to register with error: %@", error);如果您需要更多帮助,请复制并粘贴到此处。【参考方案2】:据我了解,Apple 会忽略来自越狱 iPhone 的令牌请求。我不想这么说,但我认为这可能是你的问题。
【讨论】:
可以注册越狱的 iPhone 4 以获得推送通知。以上是关于无法获取 deviceToken的主要内容,如果未能解决你的问题,请参考以下文章