2

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();
    }
};
4

1 に答える 1

3

デバイスの登録とregistrationIdisの取得に関するすべてのプロセスが正常にパスした場合、データの取得は次の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.
    }
 }
于 2013-02-27T09:08:15.220 に答える