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

Posted

技术标签:

【中文标题】使用 Sencha+Phonegap 应用程序处理推送通知【英文标题】:Push notification handling with Sencha+Phonegap app 【发布时间】:2014-05-14 17:02:18 【问题描述】:

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

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

我也在这个应用程序中使用 Urbanairship 图书馆。在 Urbanairship 配置中,我必须指定当用户点击通知时应该打开的活动。

并且配置如下:

@覆盖 公共无效 onReceive(上下文上下文,意图意图) super.onReceive(上下文,意图); if (intent.getAction().equals( “com.urbanairship.push.NOTIFICATION_OPENED”)) 意图 openIntent = new Intent(context, MainActivity.class); openIntent.setAction(intent.getAction()); openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); openIntent.putExtra("where", "push"); openIntent.putExtra("数据", intent.getExtras()); context.startActivity(openIntent);

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

如果我不使用 NEW_TASK 标志,应用程序会崩溃,因为它是从非活动上下文中调用的。

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

那么,这会清除当前任务,杀死活动,然后重新启动一个新的,对吧? 没错。这就是你想要的吗? 不是真的,我需要让正在运行的活动处理通知。

以上是关于使用 Sencha+Phonegap 应用程序处理推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在 Phonegap / Sencha 中观看 YouTube 的最佳实践

是否仍需要PhoneGap 才能将Sencha Touch 2 应用程序放入应用商店?

Sencha Phonegap Android 推送通知

sencha touch / phonegap - 数据库

sencha + Phone Gap中的相机应用程序[关闭]

在 PhoneGap/Sencha Touch 中加载外部 Web 服务