检测应用重新聚焦事件(Detect application refocus event)

2019-08-17 14:43发布

我需要每个用户开始使用应用程序时就知道了。

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

用户开始从头开始应用。

我上添加应用程序的自举一个听众,我知道在启动时。

案例2(TODO):应用程序已启动,但它不活跃了

用户重新从任务栏中的应用程序。

我想知道当应用程序来自于任务栏的前景(如ALT + TAB)。

这是棘手赶,因为应用程序仍在运行,我不知道该听哪个事件。 事实上,我甚至不知道如何命名此行为。

Answer 1:

没有为应用程序的简历和暂停在科尔多瓦的事件,所以你不需要编辑科尔多瓦类文件。 下面是我目前使用的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');
}


Answer 2:

在iOS应用程序内developper接受帮助我。 他的回答很适合我非常好,因为它看起来干净等可重复使用的。 所以,我将在这里产生的:

在“应用程序来前台”事件可以通过applicationWillEnterForeground事件被捕获。 PhoneGap的/科尔多瓦允许通过科尔多瓦类调用JavaScript函数。 web视图对象有一个专门的方法来启动JS脚本。

所以,我打开该文件谟/班/科尔多瓦/ 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
}



Answer 3:

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



文章来源: Detect application refocus event