Я искал некоторые разъяснения относительно эффективного использования 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();
}
}
Надеюсь, мой вопрос ясен. Я конденсировал и повторил его ниже:
- Есть ли способ объединить эти два метода, чтобы получить толчок, когда приложение находится в фоновом режиме? У меня есть некоторые идеи, но я задаюсь вопросом, есть ли уже лучшая практика для этого или, по крайней мере, направление, к которому я могу идти.
так что вы говорите, я удаляю метод отправки push и добавляю pn_gcm к моей полезной нагрузке, можете ли вы привести пример этого с текущими данными примера, которые у меня есть. Я не прокодер, поэтому я полагаюсь на примеры или ясное объяснение – Blaasd
, что очень полезно. Я поиграю с этим и вернусь к вам – Blaasd
быстрый вопрос - мой поток будет таким: пользователь отправляет pnGcmMessage (только с заголовком и типом), добавленным в PnMessage, который содержит остальную часть моих данных, затем пользователь получает PnMessage и если приложение находится в фоновом режиме, либо нажмите кнопку push, либо обновите пользовательский интерфейс. Единственное, что меня задевает, - это иметь дело с onClick от нажатия ... Я мог бы получить мое намерениеУслуги получить «тип» и использовать оператор switch, чтобы иметь дело с отправкой остальной части полезной нагрузки до ожидающего намерения, прежде чем показывать уведомление? – Blaasd