正如我在这个帖子的标题中所说,我的应用程序的推送通知存在问题。 有两种情况: 当应用程序询问您是否需要推送通知并按下确定时,它的工作效果很好。
此功能:
- (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永远不会被调用。
请帮助我,我疯了!
答案 0 :(得分:1)
我看到您在以下位置注册远程通知:
- (void)applicationDidFinishLaunching:(UIApplication *)application
如果您的应用程序在支持多任务处理的iOS设备上运行,那可能不是正确的地方。
当您最初从寒冷启动应用时,会调用上述方法。这是当系统提示您接受或拒绝推送通知时 - 在您的情况下拒绝。
当您稍后退出应用程序以更改设备范围控制面板中的设置时,应用程序不会退出 - 它只是作为前台应用程序重新签名。在控制面板中启用推送通知并返回到应用程序后 - 应用程序不会再次启动,而是从后台移动到前台。
您的申请代表将在此时收到:
- (void) applicationDidBecomeActive:(UIApplication *)application
尝试使用以下方式注册推送通知:
- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types
您还可以通过在应用程序的Info.plist文件(UIApplicationExitsOnSuspend)中设置“应用程序不在后台运行”属性来阻止后台处理。