2017-02-14 14 views
0

У меня проблема с Push Notification для iOS в режиме производства.Ionic Push Notification даже не отправляется в iOS (не говоря уже о получении) о производстве

я первый разработал толчок для развития:

  • создал DEV инициализации профиль на Mac
  • создал сертификат DEV на Mac
  • создал профиль безопасности Дев в Ионическом Dashboard
  • добавлен сертификат Dev Деву профиль безопасности Ionic dashboard

Все работает отлично для Android, а также для iOS ,


Затем я перешел на производство:

  • создан профиль обеспечения и сертификат в прямом эфире на Mac
  • создал живой профиль безопасности в Ионическом Dashboard и добавил живой сертификат


Я всегда проверяю Push с помощью почтового менеджера:

отправить POST в https://api.ionic.io/push/notifications с телом:

{ 
    "tokens": [ 
     "<ios token>", 
     "<android token>" 
    ], 
    "profile": "live", 
    "notification": { 
     "message": "test", 
     "ios": { 
      "priority": 10 
     }, 
     "android": { 
      "priority": "high" 
     } 
    } 
} 

ответ:

{ 
    "data": { 
    "status": "open", 
    "config": { 
     "profile": "live", 
     "notification": { 
     "android": { 
      "priority": "high" 
     }, 
     "ios": { 
      "priority": 10 
     }, 
     "message": "test" 
     }, 
     "tokens": [ 
     "<ios token>", 
     "<android token>" 
     ] 
    }, 
    "created": "2017-02-14T15:07:58.988762+00:00", 
    "app_id": "<app id>", 
    "uuid": "<uuid>", 
    "state": "enqueued" 
    }, 
    "meta": { 
    "status": 201, 
    "request_id": "<request id>", 
    "version": "2.0.0-beta.0" 
    } 
} 


Чтобы понять, что происходит, я всегда отправить GET впоследствии https://api.ionic.io/push/notifications/<uuid>/messages(uuid от первого ответа) и получить следующий ответ:

{ 
    "data": [ 
    { 
     "status": "sent", 
     "created": "2017-02-14T15:07:59.165266+00:00", 
     "user_id": null, 
     "token": { 
     "token": "<android token>", 
     "valid": true, 
     "type": "android", 
     "app_id": "<app id>", 
     "invalidated": null, 
     "id": "<id>", 
     "created": "2017-02-14T14:27:27.585235+00:00" 
     }, 
     "error": null, 
     "notification": "<notification uuid>", 
     "uuid": "<message uuid>" 
    } 
    ], 
    "meta": { 
    "status": 200, 
    "request_id": "<request id>", 
    "version": "2.0.0-beta.0" 
    } 
} 

я заметил, что данные для соответствующего <ios token> отсутствует в ответе.
Мне интересно, почему нет ответа об ошибке, как указано в Ionic Docs.
Если я отправлю оба запроса с использованием dev профиль безопасности Я получаю данные для iOS, заявляя «error» (APNS_BAD_DEVICE_TOKEN) - это правильно.

Я уже пробовал пересоздать сертификат и прочее, что не меняет результат. Я также ждал целый день, чтобы получить уведомление, в случае, если что-то занимает очень много времени. Я сделал двойной уверен, что я создал приложение с правильными профилями в Xcode.

Я использую Xcode 8.2 кстати - и определенно был включен, чтобы включить «Push Notifications» в возможностях.

Что мне не хватает?

+0

Какая версия Xcode вы используете? –

+0

@stackfan Я использую Xcode 8.2 и уверенно включил возможности Push on. – Seika85

ответ

0

После контакта с ионной поддержкой они подняли идею проверить, являются ли токены действительными.

How-To документирована в their docs:

(GET) https://api.ionic.io/push/tokens/:token_id (где token_id является md5 хэш маркера устройства)

Я добавил предварительного запроса сценария в Почтальон для этого, как:

var token = "<your-device-token-to-check>"; 
var hash = CryptoJS.MD5(token).toString(); 
postman.setEnvironmentVariable('token_hash', token); 

... и добавил новую среду variale в качестве параметра (не в URL запроса), как key: (leave empty); value: ":{{token_hash}}"

Затем я узнал, что все мои токены iOS были признаны недействительными вскоре после их регистрации. Вот так наши первые тесты преуспели и при дальнейшем развитии внезапно провалились.
Я не знаю, почему они остались в ответе, проверяя статус уведомления против Ionic API. Я предложил поддержку добавить ответ об ошибке (как я понимаю, там уже есть один: «APNS_BAD_DEVICE_TOKEN» как «Указанный токен устройства был плохим. Убедитесь, что вы указали действительный токен [...]».)


Поскольку я не могу объяснить, почему, я только что заново создал новые профили и сертификаты (снова!) И удалил старые из Access Keychain Access на Mac. Я перестроил приложение, и все прошло хорошо. Weird ...

+0

Я хочу добавить, что я где-то читал, чтобы никогда не смешивать dev и живые жетоны при отправке PN в APNS. Apple, как правило, делает недействительными все жетоны. Поэтому я очистил свою базу данных, где я сохранил все зарегистрированные устройства (то есть токены), чтобы отправлять PN. – Seika85

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

  • Нет связанных вопросов^_^