无法读取Parse推送通知包数据

时间:2014-10-16 19:22:52

标签: android json push-notification parse-platform

我正在尝试使用Parse推送通知服务发送自定义数据,但是从Bundle中提取时,将返回null值。

自定义广播接收器:

    @Override
public void onReceive(Context context, Intent intent) {
    Log.e("Receiver","Invoked");
    Bundle bundle = intent.getExtras();
    Intent contentIntent = new Intent(context, MainPage.class);
    String alertMsg = bundle.getString("heading"); //never get this value
    String urlString = bundle.getString("dataString"); //never get this value
    contentIntent.putExtra(EXTRA_URL, urlString);
    PendingIntent pendingIntent = PendingIntent.getActivity(context,
            NOTIFY_REQUEST_CODE, contentIntent, PendingIntent.FLAG_ONE_SHOT);
    showNotification(context, notificationId, alertMsg, pendingIntent);
}

宣言声明:

        <receiver
        android:name=".receiver.NotificationReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="link_notification"/>
        </intent-filter>
    </receiver>

我正在从解析仪表板发送以下JSON:

{ "dataString": "objectId", "heading": "type", "action": "link_notification" }

当我记录Bundle数据时,我能够看到标题 dataString ,但无法访问它。该包总是返回null。

请帮忙! 感谢。

3 个答案:

答案 0 :(得分:16)

JSON将使用额外的字符串com.parse.Data

@Override
public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    String jsonData = extras.getString("com.parse.Data");
    JSONObject jsonObject;
    try {
        jsonObject = new JSONObject(jsonData);
        String heading = jsonObject.getString("heading");
        String dataString = jsonObject.getString("dataString");
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:3)

好的,现在我明白了。要获取Json字符串,您需要执行以下操作:

public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Bundle extra = intent.getExtras();
    String json = extra.getString("com.parse.Data");
}

答案 2 :(得分:0)

这是因为包数据包含json对象作为可检索的字符串,您可以在解析时检查该键。只有这样你才能用gson解析这个字符串,例如获取Java对象。