CloudKit 레코드에 대한 구독을 설정하려고합니다. 구독으로 OK가 생성되고 CKFetchSubscriptionsOperation
으로 성공적으로 검색 할 수 있습니다. 알림에 대한iOS CloudKit에서 푸시 알림을 수신하지 않습니다.
let database = CKContainer.default().privateCloudDatabase
let subscription = CKSubscription(recordType: "Device", predicate: NSPredicate(format: "TRUEPREDICATE"), options: .firesOnRecordUpdate)
let notificationInfo = CKNotificationInfo()
notificationInfo.alertLocalizationKey = "DEVICE_UPDATED"
notificationInfo.alertBody = "Device updated in database"
subscription.notificationInfo = notificationInfo
database.save(subscription) { subscription, error in
if error != nil {
print(error?.localizedDescription as Any)
} else {
print(subscription)
}
}
등록 등록은 다음과 같습니다 그러나 기능 application(_:didReceiveRemoteNotification:)
는 는 구독이 방법으로 잘 살고있다
(I 대시 보드에 손으로 기록을 변경있어) ... 호출되지 않습니다 :
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let notificationSettings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
application.registerForRemoteNotifications()
return true
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
print(userInfo)
}
앱을 실제 기기 또는 시뮬레이터에서 실행하고 있습니까? – Paulw11
그래, 둘 다 시도했다 – Claw
알림은 시뮬레이터에서 작동하지 않지만 실제 장치는 괜찮습니다. app delegate에서'application (_ application : UIApplication, didReceiveRemoteNotification userInfo : [AnyHashable : Any], fetchCompletionHandler completionHandler : @ 이스케이프 (UIBackgroundFetchResult) -> Void)'을 구현해보십시오. 'func 응용 프로그램 (_ 응용 프로그램 : UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken : Data)'에 대한 호출이 있습니까? – Paulw11