iOS:如何注册推送通知?
我试图通过Ray Wenderlich的指南为我的iOS 5应用程序实现推送通知: http ://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12。
我在我的AppDelegate中将下面的代码插入到我的didFinishLaunchingWithOptions
方法中:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
在我的设备(不是模拟器)上运行应用程序时,不会显示popup窗口/警告,告诉我接受推送通知。 我已经插入了一个debugging点,我可以看到, registerForRemoteNotificationTypes
被调用。
为什么没有发生?
也许,删除你的应用程序,然后重试。 该对话框只出现一次。 但是我不确定那个对话框是否会在你重新安装那个应用时再次出现。
你也可以去你的设置应用程序通知中心,看看你的应用程序是否在列表中。
你也可以添加一个断点,看看是否执行了didRegisterForRemoteNotificationsWithDeviceToken。
我有这个确切的问题(相同的教程不less),并发现我用错误的configuration文件签署的代码。
具体来说,我只启用了我的应用程序的“生产”推送通知(因为我不想让证书两次等),但我在Xcode中的生成设置使用“iPhone开发”作为“发行”的默认“代码签名身份”而不是“iPhone分发”,因为它应该是。 这似乎是我的testing应用程序的默认设置。
希望我能阻止别人在同一个问题上浪费时间。
从iOS 8有这个新的方法。 直接从UIApplication.h
:
- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0);
调用此方法将导致application:didRegisterForRemoteNotificationsWithDeviceToken:
或application:didFailToRegisterForRemoteNotificationsWithError:
在应用程序委托上被调用。
注意:只有当应用程序成功注册了用户通知registerUserNotificationSettings:
,或者为后台应用程序刷新启用了这些callback。