之前,這是我設置的樣子。推送通知單擊通知
的LunchActivity具有代碼:
Parse.initialize(this, "MY_APP_ID", "MY_APP_KEY");
PushService.subscribe(this, "MyCity", HomeActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
HomeActivity類是打開默認使用一個簡單的屏幕一個簡單的活動類。我也寫了一個自定義接收器。
public class CityPushReceiver extends BroadcastReceiver {
private static final String TAG = "CityPushReceiver";
@Override
public void onReceive(Context context, Intent intent) {
try {
JSONObject json = new JSONObject(intent.getExtras().getString(
"com.parse.Data"));
Integer event_id = Integer.parseInt((String) json.get("event_id"));
Intent eventIntent = new Intent(context, EventResult.class);
eventIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventIntent.putExtra("event_id", event_id);
context.getApplicationContext().startActivity(eventIntent);
} catch (JSONException e) {
Log.d(TAG, "JSONException: " + e.getMessage());
}
}
}
清單文件中有條目:
<receiver
android:name="com.myapp.CityPushReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.myapp.CITY_NOTIFICATION" />
</intent-filter>
</receiver>
我用Python代碼推通知:
import json,httplib
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('POST', '/1/push', json.dumps({
"channels": [
"MyCity"
],
"data": {
"action": "com.myapp.CITY_NOTIFICATION",
"alert": "New Event Notification",
"event_id": "425"
}
}), {
"X-Parse-Application-Id": "APP_ID",
"X-Parse-REST-API-Key": "API_KEY",
"Content-Type": "application/json"
})
result = json.loads(connection.getresponse().read())
print result
預期這種設置不工作。我確實收到了設備上的通知(我正在使用AVD進行測試)。但它開啓了預期EventResult
活動,即使沒有我點擊托盤中的通知。即使我在設備主屏幕上,並且應用程序僅在後臺運行,也會發生這種情況。當我在托盤點擊該通知,它會打開它被定義爲默認類HomeActivity
類。
預期的行爲是打開EventResult
只有當我點擊托盤中的通知。你們能告訴我需要改變什麼嗎?
這是否意味着我只能在發送推送通知時才能打開HomeActivity?或者它只是一個默認的活動?如果我想根據不同的標準發送不同的活動怎麼辦?另外,我會嘗試這個解決方案,並分配賞金。 – rishi
我嘗試了簡單通知(來自儀表板而不是來自python腳本)的代碼,它僅在應用程序打開時處於活動狀態或在後臺運行時纔有效。我從托盤中刪除了應用程序,並停止收到通知。當我重新打開應用程序時,我收到了所有待處理的通知。 – rishi