2014-10-09 100 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。

相關問題