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

Cordova从推送通知检测冷启动

蒋高杰
2023-03-14

我有一个cordova应用程序(codova(3.4.0)在iOS上运行,很快也在Android上运行。推送通知已实现并正常工作。我无法通过消息推送检测应用程序何时启动并将应用程序重定向到正确的页面。

注意:这与应用在后台运行时从消息推送启动应用无关。只有当应用完全关闭时!

我现在有以下工作流:

定期启动:

  • 等待科尔多瓦。js启动ondeviceready事件

从消息推送冷应用启动:

  • 等待科尔多瓦。js启动ondeviceready事件

如您所见,冷应用程序启动场景转到启动视图,这是不必要的,会导致用户等待第一个视图加载,然后再次重定向。

问题是,当设备准备触发时,我的javascript代码还不知道即将到来的消息推送,所以我正在寻找解决这个问题的方法。

有没有一种方法可以将额外的参数传递给设备准备好科尔多瓦事件?或者有人有其他想法或解决方案来解决这个问题?

共有2个答案

柴博
2023-03-14

我最终设法解决了这个问题。似乎在启动过程中,在以下方法中,LaunchOptions参数指示应用程序是否是从消息推送启动的。

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
...
}

在上面的方法中,我为我的应用程序设置启动url,如果应用程序是从推送通知启动的,则提供一个额外的url参数。现在我有以下解决问题的方案:

  • 在ondeviceready事件中,读取启动参数
  • 如果应用程序是从推送通知启动的,则不执行任何操作,等待插件重定向到右侧视图
  • 如果应用程序不是从推送通知启动的,请重定向到启动视图

希望它能帮助别人。

堵雅健
2023-03-14

我想您可以解决以下问题:

var coldstart = true;

// Update flag if app coldstart
document.addEventListener("pause", function() {
  coldstart = false;
}, false);
 类似资料:
  • 是否可以知道应用程序是否从消息推送中启动/打开? 我想发射活动可以在这里捕捉到: 然而,当应用程序处于后台时,如何从推送通知中检测到它被打开?

  • 我正在写一个iOS的应用程序,使用laravel的API和谷歌Firebase的推送通知。当我使用Firebase云消息传递发送消息推送时,它会进入我的设备。当我使用laravel发送推送通知时,它不会影响。这里是我的脚本发送推送通知laravel: 它返回一个成功的结果,但通知未发送到iOS设备。 PS:它可以在Android设备上成功运行。

  • 首先,我想声明我一直在研究推送通知和web通知之间的关系,但我有点困惑。 我从这里读到PWAs的推送通知在Safari上的iOS(iPhone)不起作用:从PWA向iOS发送推送通知 然而,如果iPhone用户使用的是Chrome,这是否意味着它们可以工作呢?或者推送通知在任何浏览器上对iPhone中的PWAs都不起作用? 这就把我带到了web通知。web通知在后台对PWAs起作用吗?我的问题是w

  • 通过上面的行,我得到了一个URL,它将在大约一个月内有用。 现在我不可能做的是将推送通知发送到应用程序。 任何关于如何使用Uri和如何将信息发送到它的光我会很高兴,因为我的400错误,那是关于我的post消息的一些错误。 我可以在发布或调试模式下获得推送通知吗? 使用PHP可以完成带有正确Uri的推送通知吗?

  • 我有一些关于实现推送通知的问题。事情是, > 订阅对象中的所有数据都是必需的吗?或者只有终点。 如果用户登录的设备超过10台,我是否需要为每个设备存储订阅值?是这样的吗?还是应该存储上次登录设备的订阅值?如果是这样,那么其余9个将不会收到任何通知。 如果您正在存储所有loggedin设备的订阅值,那么用户是否登录了多个浏览器?他会在每个浏览器中收到通知吗?这是标准做法吗? 欢迎提出建议,任何标准做

  • null 我的问题是; 我为什么不注册? 如何了解为什么不注册? Xamarin是否支持来自Azure notification Hub的iOS 11.0推送通知? 注意:我正在使用 Windows 10上的Visual Studio 2017(15.4.0版) Mac OS高Siera版本10.13 Xcode版本9.0.1 VS for Mac Community V7.2(build 636