在没有权限对话框的情况下添加用户通知类别

时间:2015-03-13 03:05:00

标签: ios objective-c uilocalnotification

是否可以在没有通知权限对话框的情况下添加交互式通知类别?问题是,如果他们遇到了“不允许"在原始通知权限对话框中,但稍后手动更改通知设置,您的类别永远不会被添加,并且似乎无论如何都要添加它们。无论如何将两者分开?

我试过了:

    UIMutableUserNotificationAction* snoozeAction = [[UIMutableUserNotificationAction alloc] init];
[snoozeAction setIdentifier:@"snooze_action_id"];
[snoozeAction setTitle:@"Snooze"];
[snoozeAction setActivationMode:UIUserNotificationActivationModeBackground];
[snoozeAction setDestructive:NO];
[snoozeAction setAuthenticationRequired:NO];



UIMutableUserNotificationCategory* SnoozeCategory = [[UIMutableUserNotificationCategory alloc] init];
[SnoozeCategory setIdentifier:kNotifCategory];
[SnoozeCategory setActions:@[snoozeAction] forContext:UIUserNotificationActionContextDefault];
[SnoozeCategory setActions:@[snoozeAction] forContext:UIUserNotificationActionContextMinimal];

NSSet* categories = [NSSet setWithArray:@[SnoozeCategory]];
//NOT asking for permission to send any type of notifications here, just making sure our categories get saved
UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeNone categories:categories];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

正如您所见,我将通知设置设置为UIUserNOtificationTypeNone,但仍会弹出权限对话框。

1 个答案:

答案 0 :(得分:1)

来自registerUserNotificationSettings:

上的文档
  

您的应用首次启动并调用此方法时,系统会询问用户是否应允许您的应用发送通知并存储响应。此后,系统使用存储的响应来确定您可能使用的实际通知类型。

     

...

     

使用新的用户设置对象调用此方法会替换先前的设置请求

所以我认为你可以做的是将你的代码包装在一个方法中,该方法在每个应用程序启动时调用(可能在application:didFinishLaunchingWithOptions:甚至applicationDidBecomeActive:)。用户只会被提示一次,如果他们拒绝并稍后启用,则新方法应添加正确的设置。