2015-03-12 2 views
4

Я не получаю Push-уведомления Я ожидаю от CloudKit Подписки.Не получать Push-уведомления от CloudKit Подписки

Вот что я сделал до сих пор:

  • Включено CloudKit и Дистанционные Уведомления возможности.
  • Создал тип записи «Test», используя панель CloudVit.
  • Создал подписку на соответствующий тип записи (Test), который Я могу видеть на панели CloudVit.
  • Используйте физическое устройство для тестирования, которое подписано на iCloud и , подключенных к Интернету.
  • Настройте делегат приложения для получения уведомлений.
  • Ручная установка/обновление/удаление записей через портал CloudKit.

К сожалению, я никогда не получаю никаких push-уведомлений. Ниже приведен код. Буквально это единственный код в совершенно новом проекте.

// 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 
} 

Заранее благодарим за любые советы или предложения. Надеюсь, это не ошибка, и что я делаю что-то неправильно здесь ... это должно «просто работать»!

Приветствия

+0

Код выглядит нормально. Можете ли вы запросить свою общедоступную базу данных для теста TestType? Можете ли вы показать нам, что является результатом инструкций NSLog? вы могли бы попытаться выполнить registerForRemoteNotifications перед созданием подписки? –

+0

Года и теперь ответ :(У меня точно такая же проблема. Удивительно мало об этой теме в Интернете за пределами руководства, предоставленного Apple. – BadPirate

+0

Я в конечном итоге выполнил логику синхронизации. Посмотрите на первую страницу timroadley dot com на загрузите код. Это проект ezcloudkit.zip – Timbo

ответ

0

Убедитесь

  1. вы включили Push Notification, кроме CloudKit (и фоновый режим при необходимости) на вкладке Capabilities приложения. И при необходимости найдите сертификаты push (один для Dev, один для производства) из Portal Developer, загрузите их и установите (дважды щелкнув по ним);

  2. Тестирование приложения на устройстве. Apple не подталкивает к симулятору.