Подтвердить что ты не робот

Google Cloud Messaging с Xcode 7 и iOS 9

Мне удалось использовать GCM с Android-устройствами, но теперь я пытаюсь реализовать приложение iOS.

Я думаю, что я выполнил все необходимые шаги, чтобы иметь возможность использовать службу GCM. Я добавил https://developers.google.com/cloud-messaging/ios/client?configured=true, чтобы добавить службу в существующее приложение.

Я думаю, что все настроено правильно, но я не получаю уведомления. У меня есть сертификаты APN и файл GoogleService-info.plist, на консоли это вывод:

2016-01-05 13: 47: 53.864: GCM | Недопустимый ключ в контрольном plist: GMSInstanceIDDeviceDataVersion Подключено к GCM 2016-01-05 13: 47: 57.501: GGLInstanceID | Недействительная последняя метка проверки в будущем. 2016-01-05 13: 47: 57.501 TerneraGallega [1014: 444977] Checkin успешно с authId: 4958686017822257121, дайджест: KSJNg + Aj82uavBXrFeOAfA ==, lastCheckinTimestamp: 1451998077000 Токен регистрации: nC-dd9fCvFs: APA91bHMfbvLczxSPLQsLeEJASU_RfV4wvVuPs2u4VJDtpC8oB2cm1AKr6cH_LFeLsQzb94Kk9iwez8fsOvgzNns_9DU3i8Ema1oCKIwcNFzenNpAhViyGHah4E7-RkQlg1durYSEQRD Уже подписаны на /themes/global

Как только я получу это, если я сделал запрос POST с:

{   msgstr "  " content_available ": true,   " уведомление ": {     " тело ":" отличный матч! ",     " title ":" Португалия против Дании"     } }

Первая попытка возвращает сообщение об успешном завершении, но на устройстве не отображается журнал или уведомление (с приложением на переднем плане)

Через несколько минут, после другой попытки запроса POST теперь он возвращает сбой с

{    "multicast_id": 7256343774952522277,    "успех": 0,    "сбой": 1,    "canonical_ids": 0,    "Результаты": [     {       "error ":" NotRegistered"     }   ] }

Теперь я загрузил пример GCM со страницы Google, настроил APN, а также получил GoogleService-info.plist, когда запускал файл примера GCM Example Swift, как только он открывается на устройстве, он говорит:

Регистрация Успешна! Проверьте консоль отладки xcode с регистрационным маркером, который вы можете использовать...

После этого, если вы установите POST-запрос с помощью

{   msgstr "  " content_available ": true,   " уведомление ": {     " тело ":" отличный матч! ",     " title ":" Португалия против Дании"     } }

он снова возвращает

{    "multicast_id": 7435981433811133310,    "успех": 0,    "сбой": 1,    "canonical_ids": 0,    "Результаты": [     {       "error ":" NotRegistered"     }   ] }

Может ли кто-нибудь, кто реализовал GCM в приложении, указать мне, что мне не хватает?

------- ------- РЕДАКТИРОВАТЬ

Наконец, я сделал это с использованием сертификата распространения вместо сертификата разработки... кажется, что у меня все настроено хорошо, но я что-то пропускаю с сертификатом разработки.

PS: На странице профиля APN под идентификатором я включил оба Push-уведомления (поэтому я думал, что все было хорошо настроено)

Но я оставлю этот вопрос открытым, потому что я не могу использовать его в условиях развития

4b9b3361

Ответ 1

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

В проекте примера Gcm (для objective-c) в приложении: didRegisterForRemoteNotificationsWithDeviceToken Я просто изменил код:

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};

Для

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};

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