CloudKitレコードのサブスクリプションを設定しようとしていますが、サブスクリプションはOKです。CKFetchSubscriptionsOperation
で正常に取得できます。しかし、機能 application(_:didReceiveRemoteNotification:)
(私はダッシュボードの手でレコードを変更しています) ...呼び出されませんiOS CloudKitからプッシュ通知を受信していません
は、サブスクリプションは、このようにsettedさ:通知のための
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)
}
}
登録登録があります:
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
通知はシミュレータでは動作しませんが、実際のデバイスはokです。あなたのアプリケーションデリゲートで 'application(_ application:UIApplication、didReceiveRemoteNotification userInfo:[AnyHashable:Any]、fetchCompletionHandler completionHandler:@エスケープ(UIBackgroundFetchResult) - > Void)'を実装してみてください。あなたは 'funcアプリケーション(アプリケーション:UIApplication、didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data)'を呼び出していますか? – Paulw11