2016-01-06 89 views
1

我已经在我的应用程序中实现了GCM,并且已经通过两个Android设备进行了测试,并且工作正常。我在我的应用程序中实现了一个简单的聊天应用我的应用程序实际上是销售或购买产品。通过GCM推送通知和相应的聊天活动

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

+0

更改每个产品的通知图像 –

+1

您是否正在发送GCM与服务器?因为如果你是,你可能有一个名为“消息”的数据元素来传递消息,你可以添加另一个元素来传递“productId”。这些信息可以从您的意向服务中的额外信息中检索出来。如果您使用服务器 – Keith

回答

4

我在评论中提到什么,如果你是通过服务器发送,你可以这样做:

$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); 
+1

梦幻般的答案! –

1

您可以用特定的方式格式化您的GCM消息,因此消息开销采用您知道的格式发送,然后您可以解析它并采取任何需要的操作。

ProdID:123456,Action:Bid,... 

你会采取逗号(或者任何其他符号)作为分隔符,获得它的零件和做任何你想要与他们:例如,你可以这样发送邮件。

+0

,我会发布答案,但我不想在推送通知中向用户显示ProductID?可能吗? ProductID是每个项目的唯一标识 – hotspring

+0

我不确定你的意思,通常推送通知处理在后台工作,即对用户“透明”。用户将点击一个按钮,该按钮将获得所需的产品ID和任何其他信息,并创建一个'GCM'推送消息,然后发送给远程服务器,但用户不会注意到推送通知不会显示给他们。 – nKn

+0

我问的是卖方,而不是买方。当潜在买家发送邮件时,我可以在服务器端附加产品ID,这非常简单。我有这个担心,我不想向卖家展示产品ID。 – hotspring