0

Я использую Google Cloud Messaging для реализации push-уведомления в приложении для Android. Все работает отлично на большинстве устройств, но когда я тестирую приложение на Samsung Galaxy S Dous GT-S7562 (Android 4.0.4, API 15), когда я отправляю уведомление, он не вызывает onMessageReceived() способ.GCM onMessageReceived() не вызывается на определенных (или некоторых) устройствах

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

private boolean checkPlayServices() { 
    GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
    int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); 
    if (resultCode != ConnectionResult.SUCCESS) { 
     if (apiAvailability.isUserResolvableError(resultCode)) { 
      apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST) 
        .show(); 
     } else { 
      Log.i(TAG, "This device is not supported."); 
      finish(); 
     } 
     return false; 
    } 
    return true; 
} 

Хотя RegistrationIntentService() отправляет маркер устройства для моего сервера, а также GCM звонок с моего сервера ответы «success», приложение не вызывает onMessageRecieved() метод, когда я положил журнал в начале его.

Есть ли что-нибудь еще, что я должен проверить, чтобы отладить проблему?

Буду признателен за вашу помощь.

+0

Вы нашли решение на этом? Для меня это тоже происходит с FCM. – Questioner

ответ

0

Проверьте свой сценарий, если он содержит уведомление в полезной нагрузке

см ссылке ниже

https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages

+0

Я использую данные и сам ими управляю: {"registration_ids": ["... mytoken ..."], "data": {"type": "mynotification", "title": "1", "message ":" 2 "}} – SalmanShariati

+0

Я тоже пробовал это, но не повезло: {" registration_ids ": [" ... mytoken ... "]," data ": {" title ":" 1 "," «2»: «сообщение», «тип»: «mynotification»}, «уведомление»: {«тело»: «отличный матч!», «Название»: «Португалия против Дании», «значок»: «myicon», }} – SalmanShariati

0

Это конкретный случай. Во-первых, необходимо проверить токен регистрации по этой ссылке. Проверить регистрационный токен с помощью завитка: см. Это link.

# api_key=YOUR_API_KEY 
# curl --header "Authorization: key=$api_key" \ 
    --header Content-Type:"application/json" \ 
    https://gcm-http.googleapis.com/gcm/send \ 
    -d "{\"registration_ids\":[\"ABC\"]}" 

«Если вы хотите, чтобы подтвердить правильность регистрации маркеров, вы можете сделать это, заменив„ABC“с регистрационным маркером.»

Я подумал, что лучше исследовать после проверки результата от завитка. Вы также можете обратиться к этому site.

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

Надеюсь, это поможет.

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