2016-02-03 4 views
1

Я искал некоторые разъяснения относительно эффективного использования PubNub и GCM. Я уже установил свое приложение, как описано в this PubNub guide, и он работает на 100%. Однако теперь мне нужно вставить свой собственный код в эту вещь, и мне интересно, есть ли четкий способ добиться того, чего я хочу от этого.PubNub + GCM Push-уведомления против обычных сообщений PubNub

  • Если приложение находится на переднем плане, получите сообщение как обычно и обновите интерфейс, как обычно. Когда приложение находится в фоновом режиме, отправьте сообщение GCM с полезной нагрузкой сообщения в качестве дополнительного в pendingIntent. Пожалуйста, поймите, я не спрашиваю, как определить, находится ли приложение в фоновом режиме/на переднем плане.

Мои мысли прямо сейчас состоят в том, чтобы полностью полагаться на толчок GCM для переноса моих данных полезной нагрузки, так как излишне отправлять его дважды. Подписка будет вызываться только для того, чтобы присоединиться к каналу, откуда они будут получать push. OnReceive получателя будет проверять isAppInBackground, и если да, вызовите метод sendNotification. Есть ли проблема с этим?

В настоящее время передачи информации с PubNub на канал делается так:

private void sendThatJSONInfo(String channelID){ 
    JSONObject jason = new JSONObject(); 

    try { 

     jason.put("data1", aString); 
     jason.put("data2", anotherString); 
     jason.put("fromWho", username); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    pN.publish(channelID, jason, new Callback() { 
    }); 
} 

И послать GCM к тому же каналу, мой код выглядит так:

public void sendNotification(View view) { 
    PnGcmMessage gcmMessage = new PnGcmMessage(); 
    JSONObject jso = new JSONObject(); 
    try { 
     jso.put("data1", aString); 
     jso.put("data2", anotherString); 
     jso.put("fromWho", username); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    gcmMessage.setData(jso); 

    PnMessage message = new PnMessage(
      pubnub, 
      CHANNEL, 
      callback, 
      gcmMessage); 
    try { 
     message.publish(); 
    } catch (PubnubException e) { 
     e.printStackTrace(); 
    } 
} 

Надеюсь, мой вопрос ясен. Я конденсировал и повторил его ниже:

  • Есть ли способ объединить эти два метода, чтобы получить толчок, когда приложение находится в фоновом режиме? У меня есть некоторые идеи, но я задаюсь вопросом, есть ли уже лучшая практика для этого или, по крайней мере, направление, к которому я могу идти.
+0

так что вы говорите, я удаляю метод отправки push и добавляю pn_gcm к моей полезной нагрузке, можете ли вы привести пример этого с текущими данными примера, которые у меня есть. Я не прокодер, поэтому я полагаюсь на примеры или ясное объяснение – Blaasd

+0

, что очень полезно. Я поиграю с этим и вернусь к вам – Blaasd

+0

быстрый вопрос - мой поток будет таким: пользователь отправляет pnGcmMessage (только с заголовком и типом), добавленным в PnMessage, который содержит остальную часть моих данных, затем пользователь получает PnMessage и если приложение находится в фоновом режиме, либо нажмите кнопку push, либо обновите пользовательский интерфейс. Единственное, что меня задевает, - это иметь дело с onClick от нажатия ... Я мог бы получить мое намерениеУслуги получить «тип» и использовать оператор switch, чтобы иметь дело с отправкой остальной части полезной нагрузки до ожидающего намерения, прежде чем показывать уведомление? – Blaasd

ответ

0

Отправка GCM Push-уведомления с PubNub Android SDK

Вы можете создать PnGcmMessage и добавить его в PnMessage, что вы публикуете. Я предпочитаю работать с необработанным JSObject и создавать все содержимое самостоятельно без вспомогательных методов, но эта техника будет проще для вас. Также, пожалуйста, прочитайте Publishing to GCM with Java docs‌?

При желании вы можете игнорировать специальный метод отправки push-сообщения и только add pn_gcm content to the message payload in the publish.

И этот пример, Sending and Receiving Android Push Notifications w/ GCM, должен предоставить требуемые детали.

Смежные вопросы