是否可以在没有通知权限对话框的情况下添加交互式通知类别?问题是,如果他们遇到了“不允许"在原始通知权限对话框中,但稍后手动更改通知设置,您的类别永远不会被添加,并且似乎无论如何都要添加它们。无论如何将两者分开?
我试过了:
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,但仍会弹出权限对话框。
答案 0 :(得分:1)
来自registerUserNotificationSettings:
上的文档您的应用首次启动并调用此方法时,系统会询问用户是否应允许您的应用发送通知并存储响应。此后,系统使用存储的响应来确定您可能使用的实际通知类型。
...
使用新的用户设置对象调用此方法会替换先前的设置请求。
所以我认为你可以做的是将你的代码包装在一个方法中,该方法在每个应用程序启动时调用(可能在application:didFinishLaunchingWithOptions:
甚至applicationDidBecomeActive:
)。用户只会被提示一次,如果他们拒绝并稍后启用,则新方法应添加正确的设置。