Я пытаюсь перейти на 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