【问题标题】:Cordova detect cold start from Push NotificationCordova 从推送通知检测冷启动
【发布时间】:2014-12-16 10:17:36
【问题描述】:

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

注意:这与应用在后台运行时从推送通知启动应用无关。仅当应用完全关闭时!

我现在有以下工作流程:

正常启动:

  • 等待 cordova.js 触发 ondeviceready 事件。
  • 在 ondeviceready 事件中重定向到我的应用程序的启动视图(通过 window.location.hash)

通过推送通知冷启动应用:

  • 等待 cordova.js 触发 ondeviceready 事件。
  • 在 ondeviceready 事件中重定向到我的应用程序的启动视图(通过 window.location.hash)
  • 插件启动并在我的应用程序中触发一个名为 notificationreceived 的 javascript 函数
  • 在notificationreceived 函数中重定向到基于推送通知的视图

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

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

有没有办法将额外的参数传递给 deviceready cordova 事件?或者有没有人有其他想法或解决方案来解决这个问题?

【问题讨论】:

  • 您好 Jermaine,我想知道您是否找到了解决此问题的方法。现在我检查我的服务器以在启动期间下载新数据,这会为同一事件创建第二个通知。我查看了插件的源代码,它似乎为我们的cordova应用程序发送了一些额外的参数来启动(),尽管我不确定这些参数是否最终到达应用程序:... originalExtras.putBoolean(“前景”,假); originalExtras.putBoolean("coldstart", !isPushPluginActive); ...我也没有找到如何在我的源中接收这些参数
  • 嗨 rotoxl,我确实找到了解决方法。我将在下面发布我的答案

标签: javascript ios cordova push-notification phonegap-pushplugin


【解决方案1】:

我最终设法解决了这个问题。似乎在启动期间,在以下方法中,launchOptions 参数指示应用程序是否从推送通知启动。

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

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

  • 在 ondeviceready 事件中读取启动参数。
  • 如果应用是从推送通知启动的,则什么也不做,等待插件重定向到正确的视图
  • 如果应用程序未从推送通知重定向到启动视图启动。

希望对某人有所帮助。

【讨论】:

    【解决方案2】:

    我想你可以解决方法:

    var coldstart = true;
    
    // Update flag if app coldstart
    document.addEventListener("pause", function() {
      coldstart = false;
    }, false);
    

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 2015-11-17
      • 2013-04-29
      • 2015-03-02
      • 1970-01-01
      • 2016-10-30
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多