2011-12-24 136 views
10

我试图通过Ray Wenderlich的指南为我的iOS 5应用程序实现推送通知:http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12iOS:如何注册推送通知?

我插入以下到我的didFinishLaunchingWithOptions方法在我的AppDelegate:

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

当运行我的设备上的应用(没有仿真器)弹出/警报告诉我要接受推送通知不显示。我在线上插入了一个调试点,我可以看到registerForRemoteNotificationTypes被调用。

为什么没有发生?

回答

7

也许,删除你的应用程序,然后重试。该对话框只出现一次。但是我不确定当您重新安装该应用程序时该对话框是否会再次出现。

你也可以去你的设置应用程序的通知中心,看看你的应用程序是否在列表中。

您还可以添加一个断点并查看是否执行了didRegisterForRemoteNotificationsWithDeviceToken。

+0

我试图从设备上删除应用程序没有任何成功。该应用程序不在通知中心。此外,'didRegisterForRemoteNotificationsWithDeviceToken'或'didFailToRegisterForRemoteNotificationsWithError'永远不会被调用。 – dhrm 2011-12-24 14:46:42

+0

您是否设置了正确的捆绑标识符?您是否使用通配符应用程序ID? – YuAo 2011-12-24 14:55:03

+3

感谢您的回复。问题在于,在启用证书的推送通知后,我必须重新生成配给配置文件。 – dhrm 2011-12-24 16:40:54

3

我有这个确切的问题(使用相同的教程不少于),并发现我用错误的配置文件签署了代码。

具体来说,我只为我的应用程序启用了“Production”推送通知(因为我不想让证书两次等),但是我的Xcode中的Build Settings使用“iPhone Development”作为默认的“Code Signing Identity” “发行”,而不是“iPhone发行”,因为它应该是。这似乎是我的测试应用程序的默认设置。

希望我能阻止别人在同一个问题上浪费时间。

+0

相同的教程,相同的问题。我正在运行调试版本连接到设备,并具有开发人员签名身份...当你说“我只启用”生产“推送通知为我的应用程序”,请你详细说明这是什么意思? – 2013-03-30 18:20:01

1

从iOS 8开始,有一种新方法。直接从UIApplication.h

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

调用,这将导致主要是application:didRegisterForRemoteNotificationsWithDeviceToken:application:didFailToRegisterForRemoteNotificationsWithError:应用委托给被调用。

注意:只有当应用程序成功注册了registerUserNotificationSettings:的用户通知,或者它已启用后台应用程序刷新时,才会进行这些回调。