GCM - pubSub.subscribe не работает

Я использую GCM в своем клиенте для Android и уже могу отправить уведомление с моего сервера приложений на клиент Android.

Но я не могу подписаться на тему. Я использую метод pubSub.subscribe и передаю токен регистрации и имя пользовательской темы в формате "/topics/mytopic". Вот что я сделал до сих пор:

  • Я оборачиваю метод внутрь try and catch, и он не генерирует никаких исключений.
  • Я отлаживал HTTP через Fiddler, но когда он не отправляет никаких запросов.
  • Я пытаюсь получить информацию об идентификаторе токена через https://iid.googleapis.com/iid/info/IID_TOKEN , но не возвращает клиенту темы, на которые подписаны.

здесь код публикации в службе намерений Android:

GcmPubSub pubSub = GcmPubSub.getInstance(this);
try
{
    pubSub.subscribe(token, "/topics/mytopic",null);
} catch (IOException e)
{
    e.printStackTrace();
}

person mehrdad khosravi    schedule 12.04.2016    source источник
comment
Вместо этого используйте pubSub= GcmPubSub.getInstance(getBaseContext()).   -  person Dexter    schedule 12.04.2016
comment
@Dexter попробовал, но все равно не работает   -  person mehrdad khosravi    schedule 12.04.2016


Ответы (2)


Я не уверен, видели ли вы этот пример IntentService, который показывает, как подписываться на темы. Пожалуйста, проверьте это и посмотрите, как далеко вы продвинетесь — это похоже на то, что вы пытаетесь сделать. В частности, проверьте способ создания строки маркера, которая затем используется в подписке:

 InstanceID instanceID = InstanceID.getInstance(this);
 String token = instanceID.getToken(SENDER_ID,GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

Согласно решению проблемы с токеном здесь, получение токена должно осуществляться с помощью InstanceID - в противном случае у вас возникнут проблемы с подпиской на тему.

person ishmaelMakitla    schedule 22.04.2016
comment
я знаю это. в своем вопросе я рассказал о своей проблеме только в pubSub.subscribe. - person mehrdad khosravi; 24.04.2016

Вы используете основной поток, вам следует использовать другой поток. Попробуйте добавить код подписки в AsyncTask или IntentService.

person Alaa AlDarf    schedule 25.03.2017
comment
Это поймало это для меня та - person Rippo; 25.09.2017