2014-11-28 2 views
1

Я пишу приложение iOS и Mac на основе CloudKit, которое использует подписку CKS, чтобы получать уведомление, когда обновление происходит в удаленном наборе данных. У меня есть настройка подписки правильно, и уведомления получаются. Все отлично работает! Единственная проблема заключается в том, что устройство получает уведомление, обращенное к пользователю.CloudKit CKSподробнее Включает обязательные уведомления?

User Facing Notification for CloudKit CKSubscription

Я предпочел бы, чтобы уведомление удаленного обновления будет внутренняя деталь реализации приложений; Я не хочу, чтобы пользователь получал уведомление каждый раз, когда он обновлял собственную коллекцию объектов. Кажется, я не могу найти что-либо, чтобы обратиться к этому в документации. Собственные Apple docs here говорят об этом как «duh, конечно, вы хотите сделать уведомление». Ну, нет.

ответ

4

Если вы оставите alertBody пустого поля CKNotificationInfo, вы не получите уведомление, обращенное к пользователю. Уведомление будет получено в вашем приложении, где вы сможете обрабатывать его, как обычно.

var subscription = CKSubscription(recordType: recordType, predicate: predicate, options: .FiresOnRecordCreation | .FiresOnRecordUpdate | .FiresOnRecordDeletion) 
    subscription.notificationInfo = CKNotificationInfo() 
    subscription.notificationInfo.shouldSendContentAvailable = true 
    subscription.notificationInfo.soundName = UILocalNotificationDefaultSoundName 
    subscription.notificationInfo.alertBody = "" 
+0

Я боюсь, что это не работает для меня ... –

+0

Я немного расширил код в примере. Вы используете это так? –

+0

Да, но вот несколько новых данных: я сохраняю эту подписку каждый раз, когда мое приложение запускается. Поскольку первое сохранение было успешным (и, предположительно, с другим параметром alertBody), последующие сохранения сбой произошли с «Дублировать подписку». Я могу изменить UUID и выполнить эту работу, но есть ли способ сохранить его только один раз? –