アプリで解析通知を使用しています。GcmBroadcastReceiver を使用して通知アラートを受信しています。しかし、私のアプリに多くの通知が届いています。ステータスバーの通知を更新することを考えたので、カスタムレシーバーを使用しました。GcmBroadcastReceiver を介して通知を受信すると、カスタムのブロードキャストレシーバーが呼び出されました。私のステータスバーには、gcm 通知とカスタム通知の両方があります。カスタム通知のみが必要です。この問題を解決するには?
マニフェスト コード:
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<!-- IMPORTANT: Change "com.parse.tutorials.pushnotifications" to match your app's package name. -->
<category android:name="com.packagename" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver
android:name="com.packagename.IncomingReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="com.packagename.UPDATE_STATUS" />
</intent-filter>
</receiver>
アプリケーション クラス:
Parse.initialize(this, "app id", "client id");
Incomingreceiver クラス:
public class IncomingReceiver extends BroadcastReceiver {
private static final int NOTIFICATION_ID = 1;
public static int numMessages = 0;
@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
if (action.equalsIgnoreCase("com.packagename.UPDATE_STATUS")) {
String title = "appname";
if (json.has("header"))
title = json.getString("header");
generateNotification(context, title, json,contenttext);
}
} catch (JSONException e) {
Log.d("jsonexc", "JSONException: " + e.getMessage());
}
}
private void generateNotification(Context context, String title, JSONObject json, String contenttext) {
Intent intent = new Intent(context, NewActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.app_icon).setContentTitle(title).setContentText("contenttext").setNumber(++numMessages);
mBuilder.setContentIntent(contentIntent);
mNotifM.notify(NOTIFICATION_ID, mBuilder.build());
}
}