デバイスにプッシュ通知を送信する動作中のサーバー/クライアントソリューションがあります。私のプロジェクトの次のステップは、C2DMReceiver
クラスでonReceiveイベントが呼び出されたときに、アクティビティウィンドウにダイアログを表示することです。C2DMプッシュ通知が受信されたときのアクティビティの動作の変更
私はアンドロイドに新しいです、私はこれを行う方法が分からないので、誰かが私にこれを説明することができれば、私は本当に幸せになります。
基本的に私は、C2DMのためchrometophoneアプリケーションからクラスを再利用します。私がlogcatのログエントリを作成すると、onReceiveイベントが呼び出されます。 C2DMReceiver
はサービスなので、新しいメッセージがあれば私の活動についてどのように通知されますか?
私はたくさんのグーグルで探せましたが、実際の解決策を見つけることができませんでした...私はregisterReceiver()
を使用しようとしましたが、私は間違っていたと確信しています。誰かが例を持っていますか?
オクラホマので、ここで私は今のところ得たものである:
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
Log.w(Consts.LOG_TAG_SERVICE, "Test");
}
};
// Called when the activity is first created.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.w(Consts.LOG_TAG_SERVICE, "started");
}
// Called when the activity is restarted
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addCategory("com.mydomain.myapp.CONTEXT");
registerReceiver(mReceiver, filter);
}
// Called when the activity is closed
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
C2DMReceiver パブリッククラスC2DMReceiverがC2DMBaseReceiver {
public C2DMReceiver() {
super("[email protected]");
// TODO Load dynamic Gmail address
}
@Override
public void onRegistrered(Context context, String registrationId) {
Log.i(Consts.LOG_TAG_SERVICE, registrationId);
// Store the registration id in the preferences
SharedPreferences settings = Prefs.get(context);
SharedPreferences.Editor editor = settings.edit();
editor.putString("deviceRegistrationID", registrationId);
editor.commit();
// TODO: Send ID to server
}
@Override
public void onUnregistered(Context context) {
Log.w(Consts.LOG_TAG_SERVICE, "got here!");
}
@Override
public void onError(Context context, String errorId) {
Log.w(Consts.LOG_TAG_SERVICE, errorId);
}
@Override
protected void onMessage(Context context, Intent intent) {
Log.w(Consts.LOG_TAG_SERVICE, "C2DMReceiver: " + intent.getStringExtra("payload"));
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.mydomain.myapp.NEWMESSAGE");
broadcastIntent.putExtra("reading", intent.getStringExtra("payload"));
broadcastIntent.addCategory("com.mydomain.myapp.CONTEXT");
context.sendBroadcast(broadcastIntent);
}
}
これは、私が得たすべてであるが拡張
活動しかし、私は自分の放送を受け取ることはありません..誰かがいくつかの入力を持っていますか?
だけ明確にするために、ライン 'Log.w(Consts.LOG_TAG_SERVICE、 "C2DMReceiver:" + intent.getStringExtra( "ペイロード"));'右、到達しましたか? – uvesten
はいそれがあります!私はlogcatを使ってデバイスにプッシュしたものを見ることができます – nino
私の答えはまったく役に立ちましたか? – uvesten