Определение идентификаторов подписки для удаленных push-уведомлений облачного набора - PullRequest
0 голосов
/ 17 октября 2019

У меня около 12 объектов CKRecord, и, предполагая, что я храню информацию как в общедоступных, так и в частных базах данных, а также делюсь ими из частной базы данных, мне нужно определить как минимум 3 идентификатора подписки, по одному для каждой CKRecord, что означает 36 идентификаторов подписки. Я могу сделать это на отдельных контроллерах, и на каждом контроллере я могу обрабатывать удаленные push-уведомления, полученные из AppDelegate.

В другом методе я могу определить 3 подписки, по одной для каждого типа базы данных, и при получении push-уведомления для каждой зоны заглядывать внутрь каждой записи и на основе каждой подписки дескриптора типа записи. Нужно ли определять весь этот код в AppDelegate?

Какой метод лучше и каковы преимущества и недостатки каждого из них. Я хотел бы знать, прежде чем я потрачу много времени на выбор одного метода, а затем откат назад, потому что это было неправильно? Или мне нужны оба метода для разных целей

1 Ответ

0 голосов
/ 18 октября 2019

Я обычно использую второй метод, который вы упомянули. Я использую CloudKit subscription ID, чтобы определить, какой метод следует вызывать из AppDelegate , а затем получить код в другом месте, который обрабатывает уведомление соответствующим образом.

Примерно так:

//MARK: Background & Push Notifications
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {

  let dict = userInfo as! [String: NSObject]

  if let notification = CKNotification(fromRemoteNotificationDictionary: dict), let subscriptionID = notification.subscriptionID{
    print("iOS Notification: \(subscriptionID)")
    switch subscriptionID{
      case "a":
        processNotificationA(notification: notification)
      case "b":
        processNotificationB(notification: notification)
      default:
        processAnyNotification(notification: notification)
    }
  }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...