是否可以注册CKSubscription推送通知而无需询问用户?

时间:2016-01-15 18:47:46

标签: ios macos cloudkit tvos

目前,您必须拥有用户授予的通知的权限:

UIApplication *application = [UIApplication sharedApplication];

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];

是否仍然可以获得订阅的远程通知而无需征得许可?顺便提一下,我的CKSubscription用于记录区域。

2 个答案:

答案 0 :(得分:3)

实际上,似乎有一种方法可以接收CKSubscription备注而不会让用户误以为他允许这些“可见通知”。

要执行此操作,您应省略[application registerUserNotificationSettings:settings]代码行,只需在没有任何预配置的情况下调用[application registerForRemoteNotifications]

接下来,要使应用程序能够静默接收推送备注,请转到应用程序的功能,激活“后台模式”并选中“远程通知”选项。

快乐的编码!

答案 1 :(得分:1)

我希望有一种方法可以做到这一点而不会引起用户的烦恼。特别是因为即使用户说“不”,iCloud仍然会收到所需的通知。因此警报会询问用户真的没有意义。

但问题是对registerForRemoteNotificationsregisterUserNotificationSettings:的调用并非特定于iCloud。

我认为使用CloudKit的任何人都需要向Apple提出增强请求,要求提供一个API,让app注册iCloud通知,而无需提示用户获得权限(无论如何都会忽略其结果)。

直接回答您的问题 - 不,目前无法在不必要地提示用户的情况下注册iCloud通知。