iOS8中

时间:2015-08-05 19:35:09

标签: ios8 apple-push-notifications

我尝试在

中的应用程序启动时仅注册警报类型通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

致电

UIUserNotificationType types = UIUserNotificationTypeAlert;

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings

我永久地获取notificationSettings

中的所有类型
<UIUserNotificationSettings: 0x16dd6160; types: (UIUserNotificationTypeAlert UIUserNotificationTypeBadge UIUserNotificationTypeSound);>

UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings]
尽管我最初选择了唯一的警报类型,

给了我相同的所有类型。

所以我无法在开始时设置受限制的动态权限。

互联网上没有关于类似问题的任何信息。

2 个答案:

答案 0 :(得分:1)

似乎无法从iOS8中的应用程序设置UserNotificationType(至少)。需要使用通用通知中心来设置声音,徽章和警报的任意组合。只有第一次尝试注册时才需要使用推送通知权限警报设置include

另一种方法是在订阅服务器上发送(#include <.+>)|(#include \".+\") ,这应该根据此类型生成有效负载。

答案 1 :(得分:0)

您必须在(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

中注册通知

更新: 根据{{​​3}}:

  

第一次调用registerUserNotificationSettings:方法时,   iOS提供了一个对话框,要求用户提供呈现权限   应用注册的通知类型。用户回复后,iOS   使用。异步调用UIApplicationDelegate对象   application:didRegisterUserNotificationSettings:方法,传递一个   UIUserNotificationType对象,指定类型   用户允许的通知。

     

用户可以随时使用更改其通知设置   设置应用。您的应用会立即添加到“设置”应用中   调用registerUserNotificationSettings:用户可以启用或禁用   通知,以及修改通知的位置和方式   呈现。因为用户可以在任何时候更改其初始设置   时间,在做任何工作之前调用currentUserNotificationSettings   准备演示通知

因此,如果用户已经接受了通知设置,则应用程序无法更改它们。 currentUserNotificationSettings始终显示当前用户设置,而不是应用程序设置。