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