Ответ 1
Да, вам нужно позвонить registerUserNotificationSettings
, даже все, что вам нужно, - это фоновое удаленное уведомление. Поэтому пользователь будет запрашивать разрешение на уведомления. Это не имеет никакого смысла, поскольку пользователи не будут видеть уведомления, но это как.
Я использую это для его настройки:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let settings = UIUserNotificationSettings(forTypes: .None , categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
}
Убедитесь, что при вызове CloudKit saveSubscription вы предоставляете shouldSendContentAvailable = true
. Следующий код предназначен для подписки на пользовательскую зону:
let subscription = CKSubscription(zoneID:zoneID, options: CKSubscriptionOptions(rawValue: 0))
let notificationInfo = CKNotificationInfo()
notificationInfo.shouldSendContentAvailable = true
subscription.notificationInfo = notificationInfo
CKContainer.defaultContainer().privateCloudDatabase.saveSubscription(subscription) { subscription, error in
}
Вам также необходимо включить функцию "Фоновые режимы" в Xcode для вашего проекта и отметить галочкой "Удаленные уведомления".
Пользователь может перейти в приложение "Настройки", чтобы отключить уведомления для вашего приложения. Но вы можете получать триггер удаленного уведомления сервером CloudKit.
Внедрите в AppDelegate следующие функции для получения удаленных уведомлений:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {}
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {}