iphone - 如果您第一次选择“否”,则 PushNotification 会出现问题

标签 iphone push-notification

正如我在该主题的标题中所说,我的应用程序的推送通知存在问题。 有2种情况: 当应用程序询问您是否需要推送通知并按下“确定”时,它运行良好。

此功能:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken

在调用 registerForRemoteNotificationTypes 时调用:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Add registration for remote notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    ...
}

但是,当您一开始选择“否”,然后更改设置以接受推送通知时,不会附加任何内容,并且永远不会调用此函数 didRegisterForRemoteNotificationsWithDeviceToken。

请帮帮我,我快疯了!

最佳答案

我看到您在以下位置注册了远程通知:

- (void)applicationDidFinishLaunching:(UIApplication *)application

如果您的应用程序在支持多任务处理的 iOS 设备上运行,那么这可能不是正确的位置。

当您最初冷启动应用程序时,会调用上述方法。此时系统会提示您接受或拒绝推送通知 - 在您的情况下请拒绝。

当您稍后退出应用程序以更改设备范围控制面板中的设置时,应用程序不会退出 - 它只是退出前台应用程序。当您在控制面板中启用推送通知并返回到应用程序时,应用程序不会再次启动,而是从后台移至前台。

您的应用程序代理此时将收到:

- (void) applicationDidBecomeActive:(UIApplication *)application

尝试在那里注册推送通知,而不是使用:

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

您还可以通过在应用程序的 Info.plist 文件 (UIApplicationExitsOnSuspend) 中设置“应用程序不在后台运行”属性来防止后台运行。

关于iphone - 如果您第一次选择“否”,则 PushNotification 会出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3409761/

相关文章:

iphone - AVAssetExportSession在iPad上有效,在iPhone上无音频

ios - 没有 APNS 的推送通知

ios - 实际情况如何... 5.6 应用程序不能使用推送通知发送广告、促销或任何类型的直接营销?

cordova - 安装 FCM 后,Ionic 3 应用程序在启动时崩溃

javascript - Safari 推送通知返回拒绝而不询问

iphone - 核心数据存储损坏

iphone - 适用于 Objective-C/iPhone 的良好 HTTP 库?

iphone - 未找到 CATransform3DMakeRotation 符号

ios - xcode 8.0 "add the Push Notif(..) to your App ID"警告,虽然已经添加

iphone - 针对多个 iDevices 时资源管理的最佳实践?