Получение GCM в приложении для Android, что мне нужно? - PullRequest
0 голосов
/ 15 ноября 2018

У меня новая версия моего приложения для Android, и оно не получает сообщения GCM с сервера, но предыдущая версия приложения работает нормально. Вот ситуация:

Раньше у меня было приложение с именем пакета com.mycompany.myappname здесь. (Очевидно, я меняю имена здесь, чтобы защитить невинных). В этой версии приложения GCM работал нормально - мой сервер отправлял сообщения, а мое приложение, работающее на любом устройстве Android, получало его.

Однако мой macbook умер, прежде чем я смог представить свою последнюю версию в Google Play, и, поскольку мои ключи подписи (для Android Studio) исчезли вместе с моим macbook, мне пришлось приобрести новый macbook и использовать новые ключи подписи. Это, конечно, означало, что новая версия приложения в Google Play была фактически совершенно новым приложением. Мне пришлось изменить имя пакета для нового приложения на com.mycompany.mynewapp.

Я заглянул в консоль Google API и увидел проект Google Console, созданный для моего первого приложения, скажем, MyApp. Внутри проекта MyApp я вижу несколько ключей, один из которых является ключом API сервера для GCM. Прямо сейчас этот ключ не ограничен (выбран переключатель «Нет»), поэтому он не имеет ограничений по применению. (Да, я знаю, что должен связать это, но пока все в порядке, пока я не решу эту проблему). Если я правильно понимаю, это означает, что мой сервер и любой другой сервер могут отправлять сообщения GCM с помощью этого ключа.

На странице «Учетные данные MyApp» в нижней части я также вижу один идентификатор клиента OAuth 2.0, который я должен создать, под названием «Клиент Android 1». Если я нажму на это, то увижу, что ввел имя пакета и получил отпечаток приложения из команды keytool (я получил это пару лет назад для моего старого приложения). Конечно, он указывает имя старого пакета приложения, которое отличается от имени нового пакета приложения.

Так что я хотел бы понять, что здесь происходит. Означает ли тот факт, что у меня есть один идентификатор клиента Oauth 2.0, который указывает на мое старое имя пакета приложения, означает, что только мое старое приложение может получать GCM? Если я снова пройду через этот процесс и добавлю новый ключ Oauth 2.0 с моим новым именем пакета приложения и новым отпечатком подписи приложения, это заставит GCM магически работать для моего нового приложения? Нужно ли каким-либо образом привязывать этот новый идентификатор клиента OAuth к моему новому приложению, либо в новом коде приложения, либо в консоли Google?

Примечание: мое новое приложение не внесло абсолютно никаких изменений в код GCM в Android или в код сервера, который отправляет GCM. Мы знаем, что код сервера в порядке, потому что старые приложения получают push-сообщения, а новое - нет. Так что это должно быть проблема с ключами.

Может кто-нибудь помочь и объяснить, что здесь происходит, и что я должен сделать, чтобы это исправить?

...