Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 弹出“无权限添加用户通知类别”对话框_Ios_Objective C_Uilocalnotification - Fatal编程技术网

Ios 弹出“无权限添加用户通知类别”对话框

Ios 弹出“无权限添加用户通知类别”对话框,ios,objective-c,uilocalnotification,Ios,Objective C,Uilocalnotification,是否可以在不弹出通知权限对话框的情况下添加交互式通知类别?问题是,如果他们在原始的“通知权限”对话框中点击“不允许”,但随后手动更改通知设置,则您的类别将永远不会被添加,而且似乎也不会再添加它们。有没有办法把两者分开 我试过: UIMutableUserNotificationAction* snoozeAction = [[UIMutableUserNotificationAction alloc] init]; [snoozeAction setIdentifier:@"snooze

是否可以在不弹出通知权限对话框的情况下添加交互式通知类别?问题是,如果他们在原始的“通知权限”对话框中点击“不允许”,但随后手动更改通知设置,则您的类别将永远不会被添加,而且似乎也不会再添加它们。有没有办法把两者分开

我试过:

    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,但仍然会弹出权限对话框。

来自

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

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


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

该设置不允许您绕过它。您需要检查是否使用[[UIApplication sharedApplication]currentUserNotificationSettings]授予权限是的,但是如果他们单击“不允许”,会发生什么情况?您如何将类别添加回?对于我,我只会在授予权限后添加。如果没有权限,将出现警报。当应用程序成为前台时,再次检查权限。我想我没有有效地沟通这个问题。如果他们在“通知权限”对话框中单击“否”。除非在24小时内卸载该应用程序,否则他们将再也看不到它。如果他们在“设置”菜单中手动打开应用程序的通知,类别仍然不会被添加。因此,在您的场景中,在您注册设置后,查询这些设置会准确显示在新注册之前设置了什么?是的,如果我只需调用[UIUserNotificationSettings settingsForTypes..,这似乎可以工作每次我启动并且他们手动打开通知时,看起来我的类别都被添加进来了。