2017-01-27 24 views
2

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) 
} 
+0

アプリを実際のデバイスやシミュレータで実行していますか? – Paulw11

+0

うん、私は両方を試しました – Claw

+1

通知はシミュレータでは動作しませんが、実際のデバイスはokです。あなたのアプリケーションデリゲートで 'application(_ application:UIApplication、didReceiveRemoteNotification userInfo:[AnyHashable:Any]、fetchCompletionHandler completionHandler:@エスケープ(UIBackgroundFetchResult) - > Void)'を実装してみてください。あなたは 'funcアプリケーション(アプリケーション:UIApplication、didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data)'を呼び出していますか? – Paulw11

答えて

1

[OK]を、私はプッシュ通知を有効にして生成する「Appleのプッシュ通知サービスSSL証明書」と、アップルの開発者向けプロビジョニングプロファイルページで私のアプリに添付しなければならなかった

+0

本当ですか?それは事実ですか? –

+0

実際には問題ではありません –

関連する問題