2013-04-16 2 views
1

Я работаю над проектом, который уведомляет приложение Android с помощью push-уведомлений с использованием Google Cloud Messaging. Я реализовал сервер приложений в PHP. Когда я запускаю приложение Android, устройство получает идентификатор регистрации с сервера GCM и отправляет идентификатор регистрации на сервер PHP (сервер приложений). Но я получаю следующий httpresponse с сервера:Gcm не записывается

{ 
    "multicast_id": 7015234441922271670, 
    "success": 1, 
    "failure": 0, 
    "canonical_ids": 0, 
    "results": [{ 
     "message_id": "0:1344007383866721%2adac3a0ad8b3148" 
    }] 
} 

Но сообщения не доставлены на устройство. любые предложения PLS.

Если кто-то есть выше проблемы, пожалуйста, проверьте ниже Это может помочь вам

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

GCM предоставляет средство под названием «идентификационные записи для канонической регистрации», чтобы легко восстановить эти ситуации. Идентификатор канонической регистрации определяется как идентификатор последней регистрации, запрошенной вашим приложением. Это идентификатор, который сервер должен использовать при отправке сообщений на устройство.

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

+0

см. Мой ответ, это может быть полезно http://stackoverflow.com/questions/14017176/i-cant-open-a-dialog-from-gcm-onmessage-in-android/14017645#14017645 –

+0

Из руководства [gcm ] (http://developer.android.com/google/gcm/gcm.html). Примечание. «Если в вашей организации есть брандмауэр, который ограничивает трафик в Интернете или из Интернета, вам необходимо настроить его для обеспечения возможности подключения к GCM в Открывать порты: 5228, 5229 и 5230. GCM обычно использует только 5228, но иногда использует 5229 и 5230. GCM не предоставляет определенные IP-адреса, поэтому вы должны разрешить использовать ваш брандмауэр для приема входящих соединений со всех IP-адресов, содержащихся в блоках IP, перечисленных в ASN от 15169. Проверьте свой брандмауэр. – AlexBcn

+0

Прежде чем он сработает, но теперь он не работает, как я могу сделать выше? – Prabu

ответ

3

Если кто-то есть выше проблемы, пожалуйста, проверьте ниже Это может помочь вам

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

GCM предоставляет средство под названием «идентификационные записи для канонической регистрации», чтобы легко восстановить эти ситуации. Идентификатор канонической регистрации определяется как идентификатор последней регистрации, запрошенной вашим приложением. Это идентификатор, который сервер должен использовать при отправке сообщений на устройство.

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

0

это может, поможет вам PushNotification проверить Ваш Androidmanifest.xml ваш GCM уведомление с PackageName

<uses-permission android:name="yourpackege.permission.C2D_MESSAGE" /> 

    <receiver 
      android:name="com.google.android.gcm.GCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 

       <!-- Receives the actual messages. --> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <!-- Receives the registration id. --> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="yourpackege" /> 
      </intent-filter> 
     </receiver> 
+0

Я проверил в androidManifest.xml. Я правильно поставил имя пакета, но я не знаю, что произойдет – Prabu

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