1
我在GoogleCloudMessaging(GCM)的帮助下构建一个聊天应用程序。我可以发送和接收消息。我的问题是,当我同时接收来自多个设备的消息时,所有这些消息都会附加到我的广播接收器类中的相同列表视图中。我如何根据发件人分开邮件并将当前聊天消息追加到列表视图中。并根据发件人单独通知其他邮件,并且当我点击通知时,它应该根据发件人打开相同的邮件列表视图。android GCM从多个设备接收消息
任何人都可以给我一个这样做的有效方法。如果您有任何示例代码来处理这种情况,请发布代码。
我当前的代码:
public class Serious extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action=intent.getAction();
if (action.equals("com.google.android.c2dm.intent.REGISTRATION"))
{
String registrationID=intent.getStringExtra("registration_id");
// Log.i("uo",registrationID);
String error=intent.getStringExtra("error");
String unregisterd=intent.getStringExtra("unregistered");
}
else if(action.equals("com.google.android.c2dm.intent.RECEIVE"))
{
String data1=intent.getStringExtra("data1");
String data2=intent.getStringExtra("data2");
addNewMessage(new Message(data2, false));
/* PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainActivity.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("My Notification")
.setDefaults(Notification.DEFAULT_SOUND)
.setAutoCancel(true)
.setContentText(data1+data2);
mBuilder.setContentIntent(contentIntent);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());*/
}
}
void addNewMessage(Message m)
{
MainActivity.messages.add(m);
MainActivity.adapter.notifyDataSetChanged();
//MainActivity.getListView().setSelection(MainActivity.messages.size()-1);
}
}
我需要在移动数据库上存储消息来维护堆栈,或者是否有gcm中的任何api来通过传递registrationid –
来检索消息,并且如果我从不同的registrationid的不同消息可以显示通知如果可以的话,请提供样本代码。如果有任何完整的聊天应用程序与多个用户发布该项目或链接给我,这样我就可以一次处理来自多个注册ID(朋友)的数据。请提供一些关于此主题的帮助 –
@madanV您必须将消息存储在移动数据库中,或在应用启动时从服务器加载它们。 GCM中没有检索旧消息的API(它们在交付后不存储在GCM服务器中)。 – Eran