2016-06-12 6 views
0

То, что я хочу:didReceiveRemoteNotification не вызывается, когда CloudKit запись добавляется

Я хочу, чтобы мой IOS приложение, чтобы выполнить действие, как только CloudKit запись добавляется.

Что я сделал:

Я последовал Apple, info сделать это.

Проблема:

application:didReceiveRemoteNotification никогда не вызывается.

То, что я пытался решить эту проблему:

Я успешно настроить подписку, чтобы получить уведомление при добавлении CloudKit записи. Я подтвердил это с помощью application:didRegisterForRemoteNotificationsWithDeviceToken.

Я также подтвердил, что запись действительно создана.

Я могу взять запись, используя CKQueryOperation.

Я также пробовал его с application:didReceiveRemoteNotification:fetchCompletionHandler, но этот метод также не называется.

Я искал форумы разработчиков Apple, а также StackOverflow, но не нашел решения для своей работы.

Что я могу сделать?

код для создания подписки:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; 

    CKSubscription *subscription = [[CKSubscription alloc] initWithRecordType:@"command" predicate:predicate options:CKSubscriptionOptionsFiresOnRecordCreation]; 


    CKNotificationInfo *notificationInfo = [CKNotificationInfo new]; 
    notificationInfo.alertLocalizationKey = @"New command."; 
    notificationInfo.shouldBadge = YES; 

    subscription.notificationInfo = notificationInfo; 

    [VMKGlobalVariables.GLOBAL_appDelegate.privateDatabase saveSubscription:subscription 
        completionHandler:^(CKSubscription *subscription, NSError *error) { 
         if (error) 
         { 
          // insert error handling 
         } 
         else 
         { 
          DDLogVerbose(@"Added command subscription successfully."); 
         } 
        } 

    ]; 
+0

Удаленное уведомление не работает на симуляторе. Вам нужно использовать реальное устройство. Это так? – Starlord

+0

Спасибо. Да, я использую iPhone 6s. – vomako

+0

Обновите свой вопрос более подробной информацией о подписке и добавленной записи. И подтвердите, что вы говорите о добавлении записи на одном устройстве и получении уведомления на втором устройстве. Вы не получите уведомление на том же устройстве, которое использовалось для добавления записи. – rmaddy

ответ

0

ли вы зарегистрировать ваше приложение делегата с линией.

application.registerForRemoteNotifications() 

У вас есть код, похожий на этот, в делегате приложения?

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    let notification = CKQueryNotification(fromRemoteNotificationDictionary: userInfo as! [String : NSObject]) 

    let container = CKContainer(identifier: "iCloud.blah.com") 
    let publicDB = container.publicCloudDatabase 

    if notification.notificationType == .Query { 
     let queryNotification = notification as! CKQueryNotification 
     if queryNotification.queryNotificationReason == .RecordUpdated { 
      print("queryNotification.recordID \(queryNotification.recordID)") 


     } 
    } 
} 
+0

Спасибо. Да, я зарегистрировался для удаленных уведомлений. – vomako

Смежные вопросы