Как заставить удаленные уведомления работать с подписками 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 он устаревает, это не причина, возможно будет?