Android 公共图书馆+;GCM推送通知与常规PubNub消息

Android 公共图书馆+;GCM推送通知与常规PubNub消息,android,google-cloud-messaging,pubnub,Android,Google Cloud Messaging,Pubnub,我正在寻找一些关于如何有效地一起使用PubNub和GCM的澄清。我已经按照中的说明设置了我的应用程序,并且它100%正常工作。然而,我现在需要在这个东西中插入我自己的代码,我想知道是否有一个明确的方法来实现我想要的 如果应用程序位于前台,则按正常方式接收消息并按正常方式更新UI。然而,当应用程序在后台时,发送一个GCM推送,并将消息负载作为PendingEvent中的额外负载。请理解,我不是在问如何检测应用程序是否在后台/前台 我现在的想法是完全依靠GCM推送来携带我的有效载荷数据,因为发送

我正在寻找一些关于如何有效地一起使用PubNub和GCM的澄清。我已经按照中的说明设置了我的应用程序,并且它100%正常工作。然而,我现在需要在这个东西中插入我自己的代码,我想知道是否有一个明确的方法来实现我想要的

  • 如果应用程序位于前台,则按正常方式接收消息并按正常方式更新UI。然而,当应用程序在后台时,发送一个GCM推送,并将消息负载作为PendingEvent中的额外负载。请理解,我不是在问如何检测应用程序是否在后台/前台
我现在的想法是完全依靠GCM推送来携带我的有效载荷数据,因为发送两次数据是多余的。然后,Subscribe将只被调用以加入他们将从中接收推送的频道。接收方的onReceive将检查ISappingBackground,如果是,则调用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() {
    });
}
 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();
    }
}
要向同一频道发送GCM,我的代码如下:

 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() {
    });
}
 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();
    }
}
我希望我的问题是清楚的。我将其浓缩并重复如下:

  • 当应用程序在后台时,有没有办法结合这两种方法来接收推送?我有一些想法,但我想知道是否已经有一个最好的做法,或者至少是一个方向,我可以走向
使用PubNub Android SDK发送GCM推送通知 您可以创建
PnGcmMessage
并将其添加到发布的
PnMessage
。我更喜欢使用原始的
JSObject
,自己创建所有内容,而不使用helper方法,但是这种技术对您来说更容易。另外,请阅读​?

或者,您可以忽略用于发送推送消息的特殊方法,只需执行以下操作

此示例应提供您所需的详细信息。

使用PubNub Android SDK发送GCM推送通知 您可以创建
PnGcmMessage
并将其添加到发布的
PnMessage
。我更喜欢使用原始的
JSObject
,自己创建所有内容,而不使用helper方法,但是这种技术对您来说更容易。另外,请阅读​?

或者,您可以忽略用于发送推送消息的特殊方法,只需执行以下操作


这个例子应该提供您需要的详细信息。

所以您的意思是我删除了发送推送方法,并将pn_gcm添加到我的有效负载中,您能用我现有的示例数据提供一个例子吗。我不是一个专业的程序员,所以我依靠的例子或一个非常有帮助的清晰的解释,谢谢。我将对此进行讨论,然后返回给您快速提问-我的流程如下:用户发送pnGcmMessage(仅包含标题和类型)添加到包含我其余数据的PnMessage,然后用户接收PnMessage,根据应用程序是否在后台,显示推送或更新UI。唯一让我心烦意乱的是一点点的推力。。。我可以让我的intentService获取“type”并使用switch语句来处理在显示通知之前将剩余有效负载发送到挂起的intent?我已经阅读并运行了它,我的另外一个问题是关于使用PubNub这样的服务背后的逻辑,但这是我可以而且可能会在我自己身上发现的,删除了我的评论并添加了官方答案。如果有帮助,请接受回答。那么您的意思是我删除了发送推送方法,并将pn_gcm添加到我的有效负载中,您能用我现有的示例数据提供一个示例吗。我不是一个专业的程序员,所以我依靠的例子或一个非常有帮助的清晰的解释,谢谢。我将对此进行讨论,然后返回给您快速提问-我的流程如下:用户发送pnGcmMessage(仅包含标题和类型)添加到包含我其余数据的PnMessage,然后用户接收PnMessage,根据应用程序是否在后台,显示推送或更新UI。唯一让我心烦意乱的是一点点的推力。。。我可以让我的intentService获取“type”并使用switch语句来处理在显示通知之前将剩余有效负载发送到挂起的intent?我已经阅读并运行了它,我的另外一个问题是关于使用PubNub这样的服务背后的逻辑,但这是我可以而且可能会在我自己身上发现的,删除了我的评论并添加了官方答案。如果有帮助,请接受回答。