2014-10-09 90 views
1

我一直在吃我的大脑数小时,无法找到答案。 我的问题是,我试图从网上Parse.com控制台发送推送通知到我的android设备,当我发送消息时没有问题,但如果我尝试发送JSON,那么我将永远不会看到通知我的设备。Parse.com android无法接收JSON推送通知

我想送的这个 - 作为一个简单的JSON消息> { “X”: “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); 
      } 
     } 
    }); 

我已经用完了所以请帮忙!

回答

6

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

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

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

正常显示。 不幸的是,我没有在解析用户指南的任何地方找到它,所以请将解析器添加到指南中让其他开发人员不要浪费时间。 谢谢

+0

是的,解析文档真的错过了重要的东西,你有一个想法,他们解释如何接收和处理JSON推送通知? – Noor 2014-11-12 08:09:47

+0

你可以从这里开始https://parse.com/docs/push_guide#receiving/Android,但真正的接收指南在这里https://parse.com/tutorials/android-push-notifications。 我使用ParsePushBroadcastReceiver子类来读取推送通知的JSON负载,并采取相应的行动 – 2014-11-14 15:21:38

+0

okk谢谢,我会检查它 – Noor 2014-11-15 05:34:56

0

尝试指定要发送的POST的类型是application/json

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