当前位置: 首页 > 知识库问答 >
问题:

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

孟华晖
2023-03-14

我有一个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个答案

经正祥
2023-03-14

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

    openIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 类似资料:
  • 我看了很多问题和答案为同一问题。 我现在知道的是 当应用程序是后台应用程序时,不会调用“DidReceiveEmotonification” DidReceiveEmotentification只在应用程序位于前台时调用,或者当用户点击应用程序位于后台的通知时调用 应用程序:didFinishLaunchingWithOptions:在用户点击通知打开应用程序(如果应用程序被终止)时调用 我的情况

  • 大家早上好,我已经几个小时没有找到解决办法了。 我使用推送通知电容器插件(https://capacitor.ionicframework.com/docs/apis/push-notifications/)来收听从Firebase(通知和数据类型)向我推送通知,收听通知发生得非常好,即使在应用程序被杀死或在背景。 问题如下: 我想在收到通知时打开应用程序,如果它在后台或已被杀死。 > 如果在应用

  • 我想用Xamarin格式的C#创建一个基于文本的Android游戏。 在故事中,我想设置角色任务,这需要一些时间,例如“我去挖这个洞,完成后给你打电话。” 如何将通知设置为在设置的时间之后显示?例如,上述声明可能需要10分钟,然后用户收到继续游戏的通知? 我一周前才开始做C#,所以如果这是noobish,或者已经被问到了,我道歉。我到处都找过,但有几种类型的通知,当我试图理解它时,似乎我在读法语。

  • 我正在尝试用远程通知处理所有可能的情况。当调用Foreground-DidReceiverEmoteNotification中的app时我就ok了。问题是当应用程序处于后台状态时,我收到推送通知。什么都不叫。如何让用户知道他有新的远程通知当应用程序回到前台?

  • 我想在我的应用程序处于后台时显示推送通知 我正在使用flatter\u local\u通知包和firebase\u消息包。 推送通知在firebase_消息和我的应用程序为后台时非常有效 但是,以下方法: 如果通过传递对象,则不会调用: 因此,我必须传递对象,它是一个

  • 我对Android开发和fcm都是新手。我一直在开发一个移动应用程序,我想使用Firebase Cloud Messaging向特定用户推送通知(通过让他们订阅不同的主题)。我已经创建了一个Java服务器(除了移动应用程序之外),但我不知道如何在我的应用程序上测试它,因为我不知道如何为我的应用程序找到fcm密钥(如果有的话)。有没有办法在本地测试我的服务器,或者它有义务将应用程序注册到谷歌Fire