【问题标题】:Detect application refocus event检测应用程序重新聚焦事件
【发布时间】:2013-03-14 12:04:06
【问题描述】:

我需要知道用户每次开始使用该应用程序的时间。

案例 1(OK):应用未启动。

用户从头开始应用程序。

我在应用程序的引导程序上添加了一个侦听器,并且我知道它何时启动。

案例 2 (TODO):应用程序已启动,但不再处于活动状态

用户从任务栏重新加载应用程序。

我想知道应用程序何时从任务栏进入前台(如 alt+tab)。

这很难捕捉,因为应用程序仍在运行,我不知道要听哪个事件。事实上,我什至不知道如何命名这种行为。

【问题讨论】:

  • 为什么这个标签是“iPad”?
  • 因为该应用程序旨在运行在 ipad 上,带有 cordova/sencha touch 框架

标签: javascript ipad sencha-touch cordova-2.0.0


【解决方案1】:

Cordova 中有一个应用程序恢复和暂停事件,因此您无需编辑 Cordova 类文件。以下是我目前在 iOS/Android 应用程序中使用的工作代码。

window.onload = function() {  
    //only fired once when app is opened
    document.addEventListener("deviceready", init, false);
    //re-open app when brought to foreground
    document.addEventListener("resume", init, false);
    //trigger when app is sent to background
    document.addEventListener("pause", onPause, false);

}

function init() {
    console.log('device ready or resume fired');
}

【讨论】:

    【解决方案2】:

    一个 ios-app 开发者接受帮助我。他的回答非常适合我,因为它看起来很干净且可重复使用。所以我会在这里制作它:

    “应用程序来到前台”事件可以通过 applicationWillEnterForeground 事件捕获。 Phonegap/Cordova 允许通过 Cordova 类调用 javascript 函数。 webView 对象有一个专门的方法来启动 js 脚本。

    于是我打开了 Projet/Classes/Cordova/AppDelegate.m 文件:

    - (void)applicationWillEnterForeground:(UIApplication *)application {
        NSLog(@"applicationWillEnterForeground: %@", self.viewController.webView);
        [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"notifyForegroundEvent();"];
    
    }
    

    我在 js 文件的根目录中添加了 notifyForegroundEvent() 方法:

    var notifyForegroundEvent = function() {
      console.log('notifyForegroundEvent()');
      // Do something here
    }
    

    等等

    【讨论】:

      【解决方案3】:

      正如我前段时间在 facebook(destkop,非移动设备)上看到的,他们检查 mousemove 以确定收到的聊天消息是否应标记为已读。我知道这不是解决方案,但它可能会为您指明一个好的方向。 当您切换到其他应用程序时,我还会检查输入焦点会发生什么。也许它模糊了。

      【讨论】:

      • 好主意,虽然我想我会在objective-c中搜索一些东西,如果解决方案没有在sencha touch中实现
      猜你喜欢
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多