Я пытаюсь перейти на GCM
в Android, C2DM
теперь устарел. Процесс регистрации, описанный здесь, отличается от описанной здесь здесь. Являются ли они одинаковыми? Можем ли мы узнать код для GCMRegistrar
, чтобы знать наверняка?
Регистрация путаницы Android GCM
Ответ 1
Они на самом деле одно и то же. Второй инкапсулирует первый в статическом методе и регистрирует широковещательный приемник. Вы можете прикрепить источник к gcm.jar и убедиться в этом сами. Вы можете найти исходный код в файлах ~/android-sdks/extras/google/gcm/gcm-client/gcm-src.jar
Ответ 2
Я успешно перенес проект C2DM в GCM. Протестировано, он отлично работает. Единственные изменения:
- в приложении Android - измените значение
sender
при регистрации - на стороне сервера - измените заголовок auth и URL
Вот и все, что касается взаимодействия с Google. Было внесено несколько изменений, продиктованных логикой приложения:
- в Android-приложении идентификатор регистрации был кэширован в своих настройках. После обновления я удаляю reg ID из настроек, чтобы принудительно перерегистрировать, на этот раз с GCM.
- логика передачи идентификатора reg на сервер получила дополнительный логический параметр - если это идентификатор реестре C2DM или GCM
- логика отправки сообщений стала обусловлена указанным параметром.
Выброс логики C2DM полностью из сервера был бы неразумным - не все обновляют свои приложения для Android. Старые версии с поддержкой C2DM в течение некоторого времени останутся в дикой природе. И Google пообещал сохранить работу C2DM в краткосрочной перспективе. Таким образом, отправка сообщения является условной - в зависимости от типа идентификатора reg, она отправляется либо в GCM, либо в C2DM.
EDIT re: условная логика:
if($RegID_Is_GCM)
{
$Auth = GCM_Auth();
$URL = $GCM_URL;
}
else
{
$Auth = C2DM_AUTH();
$URL = $C2DM_URL;
}
Ответ 3
Вещь, которая мне больше всего нравится в GCM, - это RegID, который мы будем получать с сервера GCM, это не только ID, это адрес этого приложения на этом устройстве. Поэтому на этот раз вам не нужно отправлять идентификатор устройства на сервер вместе с вашим регистрационным идентификатором, как это было в C2DM.
В C2DM каждый раз, когда вы запрашиваете идентификатор регистрации, вы получите новый идентификатор.
Но в GCM RegId, сгенерированном с помощью пакета приложений вместе с некоторым идентификатором устройства, поэтому, если вы снова и снова запрашиваете идентификатор регистрации, вы получите тот же RegId.
И если вы удалите приложение и снова установите его, сервер GCM предоставит вам тот же регистрационный идентификатор.
Таким образом, один идентификатор регистрации не будет нуждаться в каком-либо идентификаторе устройства для отправки на сервер.
Ответ 4
GCMRegistrar - это просто помощник, который выполняет работу ног, описанную на первой странице.
Здесь вы можете увидеть класс. android-sdk\extras\google\gcm\gcmclient\src\com\google\android\gcm
.
Ответ 5
Мне удалось перейти от C2DM к GCM. Я также документировал, как внедрить GCM в http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html