#android #push-notification #xamarin #xamarin.android #google-cloud-messaging
#Android #push-уведомление #xamarin #xamarin.android #google-cloud-messaging
Вопрос:
Я использую следующий учебник, чтобы настроить Google Cloud Messaging в моем приложении Android для push-уведомлений:
Когда я пытаюсь зарегистрировать свое приложение в OnCreate
методе в MainActivity
классе, он не возвращает registration_id
или error
. Он возвращается null
для обоих.
Вот фрагмент кода из моего приложения:
Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
intent.SetPackage("com.google.android.gsf");
intent.PutExtra("app", PendingIntent.GetBroadcast(Application.Context, 0, new Intent(), 0));
intent.PutExtra("sender", AndroidUserPreferences.GoogleCloudMessagingSenderId);
Application.Context.StartService(intent);
Что мне нужно проверить, чтобы мое приложение зарегистрировалось для получения уведомлений Google Cloud Messaging?
РЕДАКТИРОВАТЬ # 1:
В разделе Регистрация в Google Cloud Messaging в связанном документе приведен следующий фрагмент кода для получения regsitration_id
:
string registrationId = intent.GetStringExtra("registration_id");
Я еще ничего не сделал с HandleRegistration
этим методом, потому что у меня еще не заработал процесс регистрации.
Комментарии:
1. Вы опубликовали код, который используете для регистрации, но не опубликовали код, который используете для получения ответа на ваше намерение ЗАРЕГИСТРИРОВАТЬСЯ. Код, который вы используете для регистрации, является асинхронным. Существует более новый способ синхронной регистрации в GCM, используя библиотеку сервисов Google Play, но я не знаю, поддерживается ли она xamarin.
2. @Eran — В руководстве ничего не показано относительно асинхронного метода получения
registration_id
. Единственный фрагмент кода, который они показали, был следующим:string registrationId = intent.GetStringExtra("registration_id");
В службе естьHandleRegistration
метод обработкиMyIntentService
, используемый для прослушивания push-уведомлений из приложения GCM.3. можете ли вы показать свой метод HandleRegistration?? и что вы получаете в намерении. getStringExtra, null???
4. @Mak — Я обновил свой вопрос на основе вашего комментария
Ответ №1:
Я еще ничего не сделал с методом HandleRegistration, потому что я еще не запустил процесс регистрации.
HandleRegistration
вызывается, когда ваше приложение получает ответ на регистрацию от GCM.
Поэтому вы должны ввести регистрационный идентификатор HandleRegistration
, поэтому я не уверен, где вы поставили string registrationId = intent.GetStringExtra("registration_id");
строку, но, вероятно, вы поставили ее не в том месте.
Комментарии:
1. Я переместил эту строку кода из
OnCreate
метода вMainActivity
классе вHandleRegistration
метод в пользовательском сервисном классе, который наследуется отIntentService
класса, и это сработало. Спасибо, что обратили на это внимание.