我知道有可能检查用户是否已禁用推送设置,如objective c - Detect when user change the app's notifications settings中所述。
根据上面的文章,即使用户已禁用该应用程序的推送通知,也会发送推送通知。据我了解,我应该始终在applicationDidFinishLaunching:
注册推送通知。
大多数示例如下所示,即忽略用户设置。
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// other setup tasks here....
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
如果应用程序应该考虑这些设置,那么正确的实现如何?
我提出这个问题的原因是因为我们有很多客户抱怨他们正在获得推送通知,尽管他们已禁用推送通知。这似乎适用于iOS 6。
作为开发人员,我应该在用户禁用推送通知时处理这种情况吗?我一遍又一遍地阅读文档。特别是application:didReceiveRemoteNotification:
的文档。它没有说明当用户禁用推送通知时是否调用它。
答案 0 :(得分:3)
确保您实现这些方法以了解设备是否已注册
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)_deviceToken {
if ([application enabledRemoteNotificationTypes] < 4) {
NSLog(@"Notifications are disabled for this application");
return;
}
// The device is registered for notifications
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
NSLog(@"FAILED TO REGISTER FOR PUSH NOTIFICATIONS");
NSLog(@"%@", error.userInfo);
}
每次启动应用程序时都可以注册推送通知。但您必须确保实施上述方法,以了解用户是否已启用或禁用该应用的通知。