Como receber notificações do kit de nuvem sobre as alterações feitas no registro compartilhado comigo?

Eu tenho duas contas icloud (A eB) em dois dispositivos diferentes. De um deles (A) Compartilho ckrecord com outro (B) como isso:

let controller = UICloudSharingController { controller, preparationCompletionHandler in

    let share = CKShare(rootRecord: record)
    share[CKShareTitleKey] = "title" as CKRecordValue

    share[CKShareTypeKey] = "pl.blueworld.fieldservice" as CKRecordValue
    share.publicPermission = .readWrite

    let modifyOperation = CKModifyRecordsOperation(recordsToSave: [record, share], recordIDsToDelete: nil)
    modifyOperation.savePolicy = .ifServerRecordUnchanged
    modifyOperation.perRecordCompletionBlock = { record, error in
        print(error?.localizedDescription ?? "")
    }

    modifyOperation.modifyRecordsCompletionBlock = { records, recordIds, error in

        print(share.url)
        preparationCompletionHandler(share, CloudAssistant.shared.container, error)
    }

    CloudAssistant.shared.container.privateCloudDatabase.add(modifyOperation)
}

controller.delegate = self

UIViewController.top()?.present(controller, animated: true)

Quando o segundo dispositivo (B) aceitou o compartilhamento de cloudkit, busco o registro e assino as alterações:

func application(_ application: UIApplication, userDidAcceptCloudKitShareWith cloudKitShareMetadata: CKShareMetadata) {

    let acceptSharesOperation = CKAcceptSharesOperation(shareMetadatas: [cloudKitShareMetadata])
    acceptSharesOperation.perShareCompletionBlock = { metadata, share, error in

        if let error = error {
            UIAlertController.show(withMessage: error.localizedDescription)
        } else {

            let operation = CKFetchRecordsOperation(recordIDs: [cloudKitShareMetadata.rootRecordID])
            operation.perRecordCompletionBlock = { record, _, error in

                if let error = error {
                    UIAlertController.show(withMessage: error.localizedDescription)
                } else if let record = record {
                    CloudAssistant.shared.save(records: [record], recordIDsToDelete: [])

                    let options: CKQuerySubscriptionOptions = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]
                    let territorySubscription = CKQuerySubscription(recordType: "Territory", predicate: NSPredicate(value: true), options: options)

                    let notificationInfo = CKNotificationInfo()
                    notificationInfo.shouldBadge = false
                    notificationInfo.shouldSendContentAvailable = true

                    territorySubscription.notificationInfo = notificationInfo

                    CloudAssistant.shared.sharedDatabase?.save(territorySubscription) { _, _ in }
                }
            }

            CloudAssistant.shared.container.sharedCloudDatabase.add(operation)
        }
    }
    acceptSharesOperation.qualityOfService = .userInteractive
    CKContainer(identifier: cloudKitShareMetadata.containerIdentifier).add(acceptSharesOperation)
}

Agora do dispositivoA I com sucesso (Tenho certeza disso, as alterações são salvas no iCloud) realizam uma atualização em um registro compartilhado com outras pessoas. Mas dispositivoB não sabe disso, a menos que eu busque o registro manualmente mais uma vez.

Mas do outro lado, funciona muito bem.

Se eu executar com êxito uma atualização em um registro compartilhado comigo (no dispositivoB) então dispositivoA mnagicamente recebe uma notificação sobre mudança e está tudo bem. O que faz a diferença?

Como se inscrever para alterações em um registro compartilhado comigo?

Por exemplo, quando eu puder, vou começar uma conta de 200 ou mais para alguém que me ajude com isso.

iOS 11, Swift 4, Xcode 9

questionAnswers(1)

yourAnswerToTheQuestion