当我从GCM获取新数据时,有人可以向我显示该流程背后的层次结构吗?只在客户端发生的过程。示例:首先,数据将转到CommonUtilities类中的displayMessage函数。秒将数据传输到GCMIntentService类中的onMessage函数,依此类推。
谢谢!
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
// Waking up mobile if it is sleeping
WakeLocker.acquire(getApplicationContext());
// Showing received message
lblMessage.append(newMessage + "\n");
Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show();
// Releasing wake lock
WakeLocker.release();
}
};
答案 0 :(得分:3)
如果注册设备并获取registrationId
的所有流程都按原样通过,那么获取onMessage()
中的数据应与此类似:
@Override
protected void onMessage(Context arg0, Intent intent) {
Log.d(TAG, "MESSAGE RECEIVED : "+intent.getExtras().toString());
String action = intent.getStringExtra("action");
int extra = 0;
try {
extra = Integer.parseInt(intent.getStringExtra("action_id"));
} catch (Exception e){
/* ignore */
}
String message = intent.getStringExtra("message");
generateNotification(getApplicationContext(), message, action, extra);
}
当然,这是在我的应用程序中,您将用于获取正确数据的密钥取决于将服务器发送到客户端设备的数据类型。收到这部分数据后,您可以随意使用它,也可以创建通知并提醒用户该消息。
修改:
如果您想使用BroadcastReceiver
在活动中显示某种消息,可以执行以下操作:收到消息后onMessage
发送broadcastIntent
Intent intent = new Intent("messageReceived");
sendBroadcast(intent);
并添加
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(messageReceived);
到您的活动并注册您的广播接收器,如:
registerReceiver(myReceiver, intentFilter);
并在接收器中处理消息,如下所示:
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("messageReceived")) {
// Do your stuff here.
}
}