Android GCM SENDER_ID, как его получить?

Я пытаюсь перейти на GCM, и у меня возникла проблема с SENDER_ID, которую мне нужно предоставить. Я использую демо-проект от Google. В этом проекте мне нужно, если я это хорошо понимаю, предоставить SENDER_ID приложению в файле CommonUtilities.java.

Предоставленный мной SENDER_ID — это ключ API, который я зарегистрировал на https://code.google.com/apis/console/ и имеет следующую форму: AIzaSyAxxxxxxx_xxxxxxxxxxxnoGZw (всего 40 символов).

Используя эту строку как SENDER_ID, я получаю на "BroadcastReceiver mHandleMessageReceiver" сообщение об ошибке: From GCM: error (INVALID_SENDER)..

Где ошибка? Строка, которую я предоставляю, не является SENDER_ID?

Спасибо.


person Zelter Ady    schedule 02.07.2012    source источник
comment
Вот пошаговый процесс получения идентификатора отправителя GCM и ключа API. - ajaxtown.com/article/< /а>   -  person Abhishek Saha    schedule 18.04.2016


Ответы (10)


Нет, SENDER_ID — это идентификатор проекта, который вы зарегистрировали в консоли API Google, он должен быть числовой строкой. например в URI вашего браузера вы должны увидеть это:

https://code.google.com/apis/console/#project:4815162342

Идентификатор отправителя: 4815162342.

Обновленный ответ:

Google не полностью обновил свои документы. Приведенный выше ответ устарел и основан на этой документации, и кажется, что она до сих пор не обновлена.

Согласно обновленным документам Google, кажется, что Номер проекта в Google API Console используется как ИДЕНТИФИКАТОР ОТПРАВИТЕЛЯ

person azgolfer    schedule 02.07.2012
comment
Я провел несколько экспериментов — полного ответа в Интернете не нашел и в конце концов обнаружил, что sender_id — это адрес электронной почты, используемый для регистрации в сервисе. Если вы хотите, чтобы ваш ответ был отмечен как принятый, отредактируйте его. - person Zelter Ady; 02.07.2012
comment
Zelter, использование адреса электронной почты в качестве sender_id является устаревшим способом регистрации C2DM. См. здесь: developer.android.com/guide/google/gcm/c2dm.html. в разделе «Изменения клиента»: миграция проста! Единственное изменение, которое требуется в приложении, — это замена учетной записи электронной почты, переданной в параметре отправителя намерения регистрации, идентификатором проекта, сгенерированным при регистрации в новой службе. - person azgolfer; 03.07.2012
comment
Ты прав. Оно работает. Спасибо за вашу помощь! Знаете ли вы, может ли серверная часть быть такой же? Стоит ли что-то менять в серверной части по сравнению со старой версией C2DM? - person Zelter Ady; 03.07.2012
comment
Для серверной стороны это более сложно, URL-ссылка, на которую я ссылался в комментарии выше, является хорошей отправной точкой. В основном измените заголовок авторизации, чтобы использовать новый ключ API, а тело Http POST теперь принимает строку JSON. - person azgolfer; 03.07.2012
comment
Спасибо, азгольф. Как миграция может ожидать, что кто-то узнает об этом? Это похоже на то, как будто Google изо всех сил старается сделать его как можно более сложным. - person Eurig Jones; 18.10.2012
comment
эй, @azgolfer, можешь обновить свой ответ, основываясь на моем ответе ниже? stackoverflow.com/a/27020029/231768 GCM изменился с используемого идентификатора проекта, и они используют номер проекта - person Adam; 02.01.2015
comment
@ Адам и другие, если мы должны использовать номер проекта, почему Google не обновляет документы, чтобы сказать об этом ... - person Bobby Hargett; 03.06.2015
comment
многие их документы, к сожалению, довольно устарели. Я полагаю, что мы могли бы указать, где они устарели, и они могут быть обновлены, но я не могу себе представить, сколько страниц документов для стольких разных вещей они имеют сейчас. Угу. - person Adam; 03.06.2015
comment
Они обновили документы. Вот ссылка на обновленные документы.developers.google. com/android/reference/com/google/android/gms/ Сообщите, если какие-либо страницы все еще устарели :) - person Sheraz Ahmad Khilji; 16.06.2015
comment
SENDER_ID можно найти в файле google-services.json (файл конфигурации) как номер проекта: 12456789. - person Erdi; 21.04.2016
comment
Ответ StackOverflow для борьбы с мусором Google Docs. Так мило. - person LyteSpeed; 01.11.2016


Перейдите на страницу консоли API Google. Выберите проект, который вы используете, из выпадающего меню слева. Выберите «Обзор», и теперь вы можете видеть себя project number. Это SENDER_ID, который вы должны использовать

Другой способ получить номер вашего проекта — получить значение «проект» из вашего URL-адреса. Ваш URL должен быть таким: "https://code.google.com/apis/console/b/0/#project:886025556782". Здесь номер проекта "886025556782". этот номер SENDER_ID

person PankajAndroid    schedule 02.11.2012
comment
Что делать, если мой URL-адрес из проекта не показывает никакого номера? на самом деле мой URL-адрес похож на этот идентификатор console.developers.google.com/project/Project - person Priyank; 19.11.2014
comment
Приянк, посмотри мой ответ. Google немного изменил это недавно. stackoverflow.com/a/27020029/231768 - person Adam; 08.02.2015

Обновленный ответ от ноября 2014 г. ЕСЛИ ВЫ НЕДАВНО СОЗДАЛИ ПРОЕКТ API.

Прежде всего, правильно, вам обязательно нужно зайти в Google Developers Console и найти проект, в котором у вас включен GCM. При просмотре раздела «Обзор» (левая панель навигации) вы увидите идентификатор проекта и номер проекта, указанные справа. Идентификатор проекта не удался (что и привело меня сюда), но когда я попробовал номер проекта, теперь я могу правильно зарегистрировать своих клиентов.

Обратите внимание, что это отличается, потому что Google недавно изменил способ назначения идентификаторов проектов. В октябре я сделал проект и получил числовой идентификатор проекта, который, как я полагаю, будет работать нормально. Но тот, который я создал сегодня, получил двухсловный и числовой идентификатор (например, Hamster-Party-420) и числовой номер проекта. URL-адрес моего проекта содержит Hamster-Party-420, а номер проекта виден только на экране обзора.

person Adam    schedule 19.11.2014

Еще один обновленный ответ с небольшим объяснением запутанного (.. как я) (с должным уважением к @azgolfer, @PankajAndroid и @Adam)

1- Если вы создаете проект на странице https://console.developers.google.com, вы можете см. две вещи: «ИДЕНТИФИКАТОР ПРОЕКТА» и «НОМЕР ПРОЕКТА» в обзоре проекта. Идентификатор проекта больше не числовой, а буквенно-цифровой, например master-xxxxx-1234. Номер проекта — это 11-значное число, например, 123456789100.

панель проекта

2- Даже когда вы просматриваете ссылку браузера, вы можете найти ее как: https://console.developers.google.com/project/master-xxxxx-1234.

Итак, master-xxxxx-1234 — это SENDER_ID (в некоторых местах упоминается как PROJECT ID)? НЕТ.

Вы должны использовать номер проекта в качестве идентификатора проекта в GCM.

3- Где можно проверить, используется ли идентификатор проекта в качестве идентификатора проекта?

В API Dashbaord. (url: https://code.google.com/apis/console/b/0/?noredirect#project:12345678900 — где 12345678900 — номер вашего проекта на панели управления проектом.

панель API Google

РЕЗЮМЕ. Идентификатор проекта на панели управления проекта и на панели API отличается. Номер проекта в панели управления проектом используется в качестве идентификатора проекта в панели управления API, а идентификатор проекта в панели управления проектом используется в качестве имени проекта в панели управления API. Таким образом, номер проекта отображается на панели управления проекта при создании проекта в консоли разработчика. используется как SENDER_ID в GCM.

person Dexter    schedule 26.12.2014

Перейдите в «Панель инструментов» в последней версии консоли разработчика, щелкните стрелку раскрывающегося списка под «Проект: сила черепах», и вы увидите номер проекта прямо там! Используйте это как SENDER_ID

(фальшивый проект, так что даже не пытайтесь =P)

введите здесь описание изображения

person Micro    schedule 04.03.2016

Возможно, вы не активировали Google Cloud Messaging для Android в API CONsole. Вот инструкции:

http://developer.android.com/google/gcm/gs.html

person insomniac    schedule 26.01.2013

Мы часами пытались это выяснить. Проблема заключалась в том, что наш манифест Android не включал идентификатор отправителя!

person Tyler Brock    schedule 19.05.2016

Если вы пришли сюда, потому что вы делаете веб-пуш, Android-пуш или что-то подобное, есть другой ответ.

Источник: https://firebase.google.com/docs/cloud-messaging/js/client

введите здесь описание изображения

person Josh Wolff    schedule 31.07.2019