1

我正在寻找正确的描述in this question,但发送到Android客户端。 Android客户端如何正确处理alert对象中的loc-key,loc-argsaction-loc-key参数?Parse.com:向Android客户端发送本地推送通知 - 客户端实现是什么样的?

云代码:

Parse.Push.send({ 
     where: pushQuery, 
     data: { 
      title: title, 
      alert: { 
        "loc-key":"msg", 
        "loc-args":["John"], 
        "action-loc-key":"rsp" 
      }, 
      type: type 
     } 
    } 

如何能在Android客户端正确处理这些密钥和本地化的推动?我必须手动对Parse广播接收器进行子类化吗?

回答

1

是的,你必须继承解析广播接收机

首先,在您的清单

 <receiver android:name="com.example.PushReceiver" 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> 

然后创建一个子类ParsePushBroadcastReceiver声明一个接收器和覆盖的onReceive方法。

public class PushReceiver extends ParsePushBroadcastReceiver{ 
     @Override 
     public void onPushReceive(Context context, Intent intent) { 

    try { 
     JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data")); 

     //This is where you get your values 
      JSONObject alertObject = json.getJSONObject("alert"); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    } 
} 
+0

还有更多的工作。我有一个小时左右的时间,我必须重写'getNotification'方法 - 这很烦人,因为它构建通知而不是将它留在Builder中。所以我不能修改它返回的Notification对象上的'alert'文本。嗯。我可能不得不复制整个该死的方法,并在那里进行警报定位。为什么Parse使这个如此复杂? – Aphex

+0

顺便说一下,正确的重写方法是'onPushReceive',而不是'onReceive' - 但是感谢我指出了正确的方向。 – Aphex

+0

当然,我不知道为什么解析这么复杂,我用GCM做了几次,客户端部分变得更容易了 – wnieves19