Parse.com android无法接收JSON推送通知

时间:2014-10-09 13:40:06

标签: android json parsing push-notification parse-platform

我几个小时都在吃脑筋,找不到答案。 我的问题是我正在尝试从网络上的Parse.com控制台向我的Android设备发送推送通知,当我发送消息没有问题,但如果我尝试发送JSON,那么我将永远不会看到我的通知设备

我正在尝试发送一条简单的JSON消息 - > { “×”: “1”}

我的相关清单代码

    <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission android:protectionLevel="signature"
    android:name="my.app.package.permission.C2D_MESSAGE" />
<uses-permission android:name="my.app.package.permission.C2D_MESSAGE" />


       <!-- Parse push notification receiver -->
    <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.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="my.app.package" />
      </intent-filter>
    </receiver>
    <receiver android:name="my.app.package.parse.NotificationReceiver" 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>

my.app.package.parse.NotificationReceiver正常存在并成功处理应用程序打开消息通知

我的应用程序的onCreate()运行以下

    Parse.enableLocalDatastore(this);
    Parse.initialize(this, "..........", ".............");

    ParseACL defaultACL = new ParseACL();
    defaultACL.setPublicReadAccess(true);
    ParseACL.setDefaultACL(defaultACL, true);

    ParsePush.subscribeInBackground("everything", new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e == null) {
                Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
            } else {
                Log.e("com.parse.push", "failed to subscribe for push", e);
            }
        }
    });

我的想法已经用完所以请帮忙!

2 个答案:

答案 0 :(得分:6)

我的下一个想法解决了我的问题。 似乎JSON消息应该包含标记“alert”,其中包含需要显示为通知的文本值。

如果未指定“alert”标记,则不显示通知。所以我的{"x":"1"}不会出现,而是

{ "x": "1", "alert": "show me to the user" }

正常显示。 不幸的是,我没有在解析用户指南中找到这个,所以PLEASE Parsers将这个添加到指南中,让其他开发人员不浪费时间。 感谢

答案 1 :(得分:0)

尝试指定您发送的POST类型为application/json

默认情况下,POST的媒体类型为application/x-www-form-urlencoded。这显然不会被机器识别为JSON。