如何在从解析接收通知时打开不同的活动

时间:2015-07-05 12:59:39

标签: android-activity parse-platform push-notification broadcastreceiver google-cloud-messaging

我的应用中有不同的类别,例如新闻,天气,体育和 技术,我使用解析来接收通知,但我希望通知可以自定义一旦收到关于新闻的通知,它应该开放新闻活动,如果收到关于技术的通知,它应该开放技术活动。   我不想要自定义推送接收器,我尝试了很多例子,但我无法得到它。提前感谢任何想法

1 个答案:

答案 0 :(得分:3)

首先,您需要创建一个扩展ParsePushBroadcastReceiver的自定义类。 在那个类中你覆盖onPushOpen方法:

public class ParsePushCustomReceiver extends ParsePushBroadcastReceiver {

protected  static  String pushTitle="";

@Override
protected void onPushOpen(Context context, Intent intent) {
    super.onPushOpen(context, intent);

    pushTitle="";
    try {
        Bundle extras = intent.getExtras();
        if (extras != null) {
            String jsonData = extras.getString("com.parse.Data");
            JSONObject json;
            json = new JSONObject(jsonData);
            pushTitle = json.getString("title");
            String pushContent = json.getString("alert");
      //intent to your activity

        }
    } catch (JSONException e) {

        e.printStackTrace();
    }
}


}

现在,当您拥有推送的标题和内容时,您可以直接进入您想要去的活动......

您需要在AndroidManifest.xml中将自定义ParsePushBroadcastReceiver定义为接收器:

        <!-- Parse PushService-->
    <service android:name="com.parse.PushService" />

    <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.appname.appname.ParsePushCustomReceiver"
        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="com.appname.appname" />
        </intent-filter>
    </receiver>