【问题标题】:Push notification with GCM and corresponding Chat Activity使用 GCM 和相应的聊天活动推送通知
【发布时间】:2016-01-07 02:13:05
【问题描述】:

我已经在我的应用程序中实现了 GCM,并且我已经通过两个 android 设备进行了测试,它可以工作。我正在我的应用程序中实现一个简单的聊天应用程序。我的应用实际上是在销售或购买产品。

当用户想要出价时,他键入他的消息并将其发送到服务器,gcm 被激活,卖家收到潜在客户的消息。当卖家点击收到的推送通知消息时,它应该将他带到聊天活动。有了这个简单的短信,我怎么知道对应的产品是什么?

【问题讨论】:

  • 更改每个产品的通知图片
  • 您是否使用服务器发送 GCM?因为如果你是,你可能有一个名为“message”的数据元素来传递消息,你可以添加另一个元素来传递“productId”。可以从您的意图服务中的附加信息中检索此信息。如果您使用的是服务器,我会发布答案

标签: android google-cloud-messaging


【解决方案1】:

我在 cmets 中提到的,如果您通过服务器发送,您可以这样做:

$registatoin_ids = array($regId);
$message = array("message" => $message, "productId" => $uniqueProductId);

$result = $gcm->send_notification($registatoin_ids, $message);
echo $result;

然后在您的意图服务中:

Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);

String messageType = gcm.getMessageType(intent);
String message = extras.getString("message");
String productId = extras.getString("productId");

当你去构建你的通知时:

Intent productWindow = new Intent(this, ProductActivity.class);
productWindow.putExtra("productId", productId);
PendingIntent contentIntent = PendingIntent.getActivity(this,0,productWindow , 0);

【讨论】:

    【解决方案2】:

    您可以以特定方式格式化您的 GCM 消息,因此消息开销以您知道的格式发送,然后您可以对其进行解析并采取任何必要的操作。例如,您可以这样发送消息:

    ProdID:123456,Action:Bid,...
    

    您可以将逗号(或任何其他符号)作为分隔符,获取其中的各个部分,然后对它们做任何您想做的事情。

    【讨论】:

    • 但我不想在推送通知中向用户显示 ProductID?可能吗? ProductID 是每个项目的唯一 ID
    • 我不确定你的意思,通常推送通知处理在后台工作,即它对用户是“透明的”。用户点击一个按钮,该按钮将获取产品 ID 和所需的任何其他信息,并创建一个 GCM 推送消息,然后您将其发送到远程服务器,但用户不会注意到,所以推送通知不会显示给他们。
    • 我问的是卖方,而不是买方。当潜在买家发送消息时,我可以在服务器端附加产品 ID,这非常简单。我担心的是,我不想向卖家显示产品 ID。
    • 如果您以特定方式格式化消息,您可以获取消息字符串并使用分隔符(在我的示例中为逗号)将其拆分为多个部分。因此,您可以有一个类似["ProdID:123456", "Action:Bid", ...] 的数组,并且只获取您想要显示给用户的部分消息,而不包括其余部分。
    • 感谢您提供更多详细信息。我在哪里可以解析卖方的 gcm 消息?
    猜你喜欢
    • 2016-09-25
    • 2018-01-20
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多