使用Sencha + Phonegap应用推送通知处理

时间:2014-04-03 04:35:48

标签: android cordova sencha-touch-2 android-notifications urbanairship.com

我有一个 Sencha Touch + Phonegap 应用程序,它是处理推送通知所必需的。当应用程序未运行或在后台运行并且通知到达时,用户点击通知,并打开应用程序,并将其正确导航到Sencha Touch应用程序中的相应页面。

问题是当应用已经在前台时。

我也在此应用中使用 Urbanairship Library 。在Urbanairship配置中,我必须指定当用户点击通知时应该打开的活动。

配置如下:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    if (intent.getAction().equals(
            "com.urbanairship.push.NOTIFICATION_OPENED")) {
        Intent openIntent = new Intent(context,
                MainActivity.class);
        openIntent.setAction(intent.getAction());
        openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        openIntent.putExtra("where", "push");
        openIntent.putExtra("data", intent.getExtras());
        context.startActivity(openIntent);
    }
}

现在,如果我将标志指定为NEW_TASK,它会打开应用程序的另一个实例,再次重新加载所有内容。然后会转到相应的页面来处理通知。

如果我不使用NEW_TASK标志,应用程序崩溃,因为它是从非活动环境调用的。

如果应用程序已经在前台,我应该如何设置它以便我不创建应用程序的新实例?

1 个答案:

答案 0 :(得分:0)

我会尝试使用FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_NEW_TASK的组合。

    openIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);