即使我沒有訂閱頻道,我仍會收到推送通知。Parse.com即使未訂閱頻道,也會收到推送通知
我的應用程序從遠程JSON獲取用戶興趣並將其訂閱到Parse中的頻道。
我會盡量複製所有相關的代碼。
MyApplication.java
Parse.enableLocalDatastore(this);
Parse.initialize(this, ParseAppID, ParseClientKey);
ParseInstallation installation=ParseInstallation.getCurrentInstallation();
installation.put("UniqueId", android_id);
installation.saveInBackground();
MainActivity.java(一個的AsyncTask onPostExecute內部)
JSONObject jObject = new JSONObject(result);
int error = jObject.getInt("Error");
ArrayList<String> channels = new ArrayList<String>();
if(error==0){
JSONArray intereses = jObject.getJSONArray("Interests");
Log.d("ChannelsTrack", "Error: 0");
for(int j=0; j < intereses.length(); j++) {
int interes = intereses.getInt(j);
String channel_name="sdc_channel_" + interes;
channels.add(channel_name);
Log.d("ChannelsTrack", channel_name);
ParsePush.subscribeInBackground(channel_name);
}
List<String> subscribedChannels = ParseInstallation.getCurrentInstallation().getList("channels");
for(int j=0; j < subscribedChannels.size(); j++) {
if(!channels.contains(subscribedChannels.get(j))){
ParsePush.unsubscribeInBackground(subscribedChannels.get(j));
}
}
}else{
Log.d("ChannelsTrack", "Error: " + error);
}
這aparently工作。我可以看到我的Parse用戶訂閱了指定的頻道y控制檯
我無法發佈圖像,但在解析核心表中它是一行[[sdc_channel_6「,」sdc_channel_5「,」sdc_channel_2「,」sdc_channel_3 「,」sdc_channel_4「]在」頻道「列中,當我更新用戶興趣時,它會發生變化,因此我認爲它在這一點上正在發揮作用。
我使用REST API發送使用此JSON
{
"data": {
"action": "my.application.UPDATE_STATUS",
"t": "Text",
"d": "Text 2",
"f": "",
"u": "http://example.com"
},
"where": {
"channels": {
"$in": ["sdc_channel_99","sdc_channel_88"]
},
"deviceType": "android"
}
}
這裏是問題的推送通知。我收到發送到「sdc_channel_99」和「sdc_channel_88」頻道的推送通知,但我沒有訂閱他們(我從未訂閱過他們)。
顯然我失去了一些東西,任何幫助?謝謝。
謝謝,它的工作原理! – Angel
如果答案有幫助,您可以對它進行投票。 – Gordons