使用CustomReceiver堆叠Parse推送通知

时间:2016-02-25 08:48:41

标签: android push-notification

我正在尝试将几个通知放在一个Whatsapp中,使用自定义ParsePushBroadcastReceiver,但GcmBroadcastReceiver接收我无法管理的自动推送。

Android Manifest:

            <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=".ws.ParseAppReceiver"
        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.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" />

            <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>

GmcBroadcasstReceiver:

public final void onReceive(Context context, Intent intent) {
ServiceUtils.runWakefulIntentInService(context, intent, PushService.class);

MyCustomReceiver:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    if(! intent.getAction().equals("com.parse.push.intent.DELETE")) {

        JSONObject data = getDataFromIntent(intent);

        try {
            mStringMessage = data.getString("alert");
        } catch (JSONException e) {
            e.printStackTrace();
        }

        NotificationsManager.getInstance(context).addMessageToArray(mStringMessage);


        mArrayMessages = NotificationsManager.getInstance(context).getPushMessages();

        Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(),
                R.drawable.ic_launcher);

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

        for(int i = 0; i < mArrayMessages.size(); i++) {
            inboxStyle.addLine(mArrayMessages.get(i));
        }

        String title = mArrayMessages.size() + "nuevas Notificaciones";

        Notification summaryNotification = new NotificationCompat.Builder(context)
                .setContentTitle(title)
                .setSmallIcon(R.drawable.ic_runator_launcher)
                .setLargeIcon(largeIcon)
                .setStyle(inboxStyle)
                .setGroup("example")
                .setGroupSummary(true)
                .build();

        NotificationManagerCompat notificationManager =
                NotificationManagerCompat.from(context);

        notificationManager.notify(NOTIFICATION_ID, summaryNotification);

    } else {
        NotificationsManager.getInstance(context).clearArrayMessages();
    }

}

GmcBroadcasstReceiver收到自动推送通知,MyCustomReceiver收到相同的通知,然后应用程序显示两次推送通知。

如果有任何想法,请帮助我,提前致谢。

0 个答案:

没有答案