我正在尝试使用与当前用户ID匹配的自定义谓词创建CKSubscription。在开发中运行时,它可以完美运行,但在切换到生产环境时,会发生以下错误:
error saving subscription: "Error saving record subscription with id 303D72C8-A43F-4F18-8A2A-D0D9FEB0D65E to server: Cannot create or modify field \'notif_alert\' in record \'_sub_trigger_sub_51FF1A188EF28BF4241E95152E18E1FD\' in production schema
很明显,由于谓词是用户唯一的,所以我不能仅将CKSubscription从开发部署到生产。有谁知道如何在生产中为每个用户创建具有唯一谓词的预订(由于唯一的用户ID)?用于实现subscripiton的代码如下:
//Setting up profile like notifications, triggered from CloudKit
let subscription = CKQuerySubscription(recordType: "ProfileLikes", predicate: NSPredicate(format: "toUser == %@", currentUser), options: .firesOnRecordCreation)
let info = CKSubscription.NotificationInfo()
info.alertBody = "You've got a new profile like. Open up to find out who ?️"
info.shouldBadge = true
info.soundName = "default"
subscription.notificationInfo = info
CKContainer.default().publicCloudDatabase.save(subscription, completionHandler: { subscription, error in
if error == nil {
// Subscription saved successfully
print("subscription successful")
} else {
print("error saving subscription: \(error?.localizedDescription)")
}
})