2014-10-09 2 views
1

몇 시간 동안 내 머리를 먹었으며 답변을 찾을 수 없습니다. 내 문제는 웹의 Parse.com 콘솔에서 내 안드로이드 장치에 푸시 알림을 보내려고한다는 것입니다. 메시지를 보내면 문제가 없지만 JSON을 보내려고하면 알림이 표시되지 않습니다. 나의 기기.Parse.com android에서 JSON 푸시 알림을받을 수 없습니다.

내 관련 매니페스트 코드

<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 :

은 내가 JSON의 this-로 간단한 메시지> { "1", "x"를} 보내려고하고있다. 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"태그가 포함되어야합니다.

"경고"태그가 지정되지 않으면 알림이 표시되지 않습니다. 따라서 내 {"x":"1"}이 표시되지 않지만

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

이 정상적으로 표시됩니다. 불행히도 구문 분석 사용자 가이드에서이 위치를 찾지 못했습니다. 따라서 Parser가 다른 개발자가 시간을 낭비하지 않도록 가이드에 추가하십시오. 감사합니다.

+0

예, 구문 분석 문서가 중요한 사항을 정말로 놓친 것입니다. JSON 푸시 알림을 수신하고 처리하는 방법을 설명하는 아이디어가 있습니까? – Noor

+0

https://parse.com/docs/push_guide#receiving/Android에서 시작할 수 있지만 수신에 대한 실제 가이드는 https://parse.com/tutorials/android-push-notifications에서 확인할 수 있습니다. 푸시 알림의 JSON 페이로드를 읽으려면 ParsePushBroadcastReceiver를 서브 클래 싱하여 그에 따라 작동하십시오. –

+0

okk 고맙습니다. 확인해 보겠습니다. – Noor

0

보십시오 당신이 보내는 POST 유형 기본적으로 application/json

의 것을 지정하려면 POST는 application/x-www-form-urlencoded의 미디어 유형이 있습니다. 이것은 분명히 기계에 의해 JSON으로 인식되지 않을 것입니다.

관련 문제