Do not receive push notifications from CloudKit subscribers

I do not receive push notifications from CloudKitSubscriptions.

Here is what I have done so far:

  • Features included CloudKitand remote notifications.
  • Created the record type "Test" using the CloudKit panel.
  • I created a subscription to the corresponding type of record (Test), which I can see on the CloudKit toolbar.
  • Use a physical testing device that is subscribed to iCloudand connected to the Internet.
  • Configure the application delegate to receive notifications.
  • Manually insert / update / delete entries through the portal CloudKit.

Unfortunately, I never receive any push notifications. Below is the code. Literally, this is the only code in a completely new project.

    // MARK: - SUBSCRIPTIONS
func subscribeToRecordChangesWithRecordType (recordType:String, database:CKDatabase) {

    let predicate = NSPredicate(value: true)
    let subscription = CKSubscription(recordType: recordType, predicate: predicate, options: CKSubscriptionOptions.FiresOnRecordCreation|CKSubscriptionOptions.FiresOnRecordDeletion|CKSubscriptionOptions.FiresOnRecordUpdate)

    database.saveSubscription(subscription, completionHandler: { (savedSubscription, error) -> Void in
        if let _error = error {
            NSLog("ERROR saving '%@' subscription %@",recordType, _error)
        } else {
            NSLog("SUCCESS creating '%@' subscription: %@", recordType, savedSubscription)
        }
    })
}
func createSubscriptions () {
    let privateDB = CKContainer.defaultContainer().privateCloudDatabase
    let publicDB = CKContainer.defaultContainer().publicCloudDatabase


    // NOTE: create a Record Type called 'Test' in the CloudKit dashboard
    self.subscribeToRecordChangesWithRecordType("Test", database: privateDB)
    self.subscribeToRecordChangesWithRecordType("Test", database: publicDB)
}

// MARK: - PUSH NOTIFICATIONS
func registerForPushNotifications (application: UIApplication) {
    self.createSubscriptions()
    let settings = UIUserNotificationSettings(forTypes: .Alert, categories: nil)
    application.registerUserNotificationSettings(settings)
    application.registerForRemoteNotifications()
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    NSLog("Registered for Push Notifications with token: %@", deviceToken);
}
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    NSLog("FAILED to register for Push Notifications. %@", error)
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    NSLog("RECEIVED Push Notification")
    NSNotificationCenter.defaultCenter().postNotificationName("PushNotificationReceived", object: userInfo)
}
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    NSLog("RECEIVED LOCAL Push Notification")
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    NSLog("RECEIVED Push Notification with fetchCompletionHandler")
    NSNotificationCenter.defaultCenter().postNotificationName("PushNotificationReceived", object: userInfo)
}

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    self.registerForPushNotifications(application)
    return true
}

. , , - ... " "!

+4
1

,

  • Push Notification, CloudKit ( , ) " ". push ( Dev, ) Portal Developer, ( );

  • . Apple .

0

All Articles