Как заставить удаленные уведомления работать с подписками CloudKit?

До сих пор мне не удалось заставить подписки работать. (получать push-уведомление на моем устройстве, подписки, похоже, будут созданы успешно)

Я играл с [CloudKitAtlas] [1]. Я сделал то, что он сказал в readme для этого проекта:

Требования

Build

  • iOS 8.0 SDK и Xcode 6
  • Включить право CloudKit в iCloud (из возможностей)
  • Измените имя контейнера для предоставления контейнера в учетной записи разработчика

Я могу запустить приложение, оно успешно регистрируется для удаленных уведомлений:

2014-06-09 11:15: 17.712 CloudKitAtlas [841: 220562] Зарегистрировано для Push уведомления с токеном:

Я также могу создавать записи, запрашивать их и подписываться:

2014-06-09 11:15: 21.966 CloudKitAtlas [841: 220934] Подписано на элемент

И если я иду на панель инструментов, я вижу несколько подписей. Но тогда, когда я создаю новую запись, ничего не происходит, обратный вызов:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)info

Никогда не выполняется ( Примечание: я запускаю приложение на iPhone 5S, а не на симуляторе)

Я использую отладочную подпись с явным идентификатором пакета (без шаблона), и для этого идентификатора приложения я также создал соответствующие сертификаты push-уведомлений, хотя я просто загрузил их, поскольку я не имею никакого отношения к этим файлам.

  • Я забываю что-то сделать?
  • Я не тестирую его правильно?
  • Кто-нибудь может получить удаленные уведомления на своем устройстве, вызванные подпиской?

Обновление 15/06/14 Видимо, это ошибка на стороне яблока, пусть ждет пару недель. https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599


Обновление 18/05/15

В случае, если кто-то задается вопросом, что эта ошибка была решена Apple давно, и теперь она работает как шарм, хотя вам нужно сделать некоторые соображения:

  • Убедитесь, что метод saveSubscription: completHandler: выполняется без ошибок
  • Если вы используете [application registerForRemoteNotifications]; Вы будете ТОЛЬКО получать уведомления с приложением на переднем плане, это может показаться бессмысленным, но это очень полезно, так как такие push-уведомления "молчат", и вы не требуете разрешения пользователя на их использование
  • Если вы хотите получать уведомления о старомодной push-кнопке с всплывающим окном, запрашивающим разрешение и предупреждение, которое появляется за пределами приложения, и все, что вам нужно, чтобы использовать что-то вроде:
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
                                        UIUserNotificationTypeBadge |
                                        UIUserNotificationTypeSound |
                                        UIUserNotificationTypeAlert
                                                                         categories:nil];
    

    [application registerUserNotificationSettings: settings];

Что все

Ответы

Ответ 1

registerForRemoteNotificationTypes: типы  NS_DEPRECATED_IOS (3_0, 8_0, "Пожалуйста, используйте registerForRemoteNotifications и registerUserNotificationSettings: вместо этого" );

//Возвращает разрешенные типы, также принимая во внимание любые системные настройки; не относится к подключению.

enabledRemoteNotificationTypes  NS_DEPRECATED_IOS (3_0, 8_0, "Пожалуйста, используйте - [UIApplication isRegisteredForRemoteNotifications], или - [UIApplication currentUserNotificationSettings], чтобы получить пользовательские удаленные уведомления и настройки уведомлений пользователя" );

Что из iOS8 он устаревает, это не причина, возможно будет?