Appcelerator:当用户按下主页按钮时检测到(iOS和Android)

时间:2017-07-05 16:23:15

标签: titanium appcelerator

我想检测用户何时按下Android和iOS中的主页按钮,然后从会话中注销。有没有办法做到这一点?

在iOS上,我尝试使用Titanium.App.pause侦听器,当我按下主页按钮时它会起作用,但问题是当我在应用程序中执行其他操作时也会触发此侦听器,例如打开图库或应用程序中的摄像头甚至使用控制中心。

在Android上我尝试过类似的事情。但我面临着同样的问题。

3 个答案:

答案 0 :(得分:1)

我认为没有事件可以检测到按下主页按钮然后使用pasue / resume事件。

你可以做一件事,使用boollean全局变量来存储画廊或相机或其他事件,它们将app暂停到后台。这样你可以点击主页按钮。

答案 1 :(得分:1)

暂停和暂停的eventlisteners之间存在细微差别。暂停仅在iPhone上按下主页按钮时检测到暂停,当应用程序出现一些中断时总是触发,如显示警报。看看文档。 http://docs.appcelerator.com/platform/latest/#!/api/Titanium.App-event-pause http://docs.appcelerator.com/platform/latest/#!/api/Titanium.App-event-paused

根据您的要求,您可以使用任何东西。对于Android,请查看此帖子,这可能有助于暂停/恢复Android。

http://www.tidev.io/2014/01/28/paused-resumed-events-on-android/

答案 2 :(得分:0)

检测主页按钮按下与检测应用程序是暂停还是恢复相关,在iOS中,这在过去相当容易,但对于Android来说这非常困难。我一直在使用诸如bencoding.android.tools模块之类的工具。有了这个,你基本上每秒检查应用程序是否仍在后台。

随着Hyperloop的推出,我们现在可以访问本机类了,所以我现在已经为此构建和发布了Hyperloop模块:

https://github.com/dieskim/Appcelerator.Hyperloop.appPauseResume

在这个模块中,iOS使用核心T.App EventListeners暂停和恢复,而Android使用通过Hyperloop的Narive Java类和setInterval来检查和检测

以下是您将如何监听暂停和恢复事件的示例,从而能够确定是否按下了主页按钮:

// require appPauseResumeModule
var appPauseResume = require('appPauseResume');
// run appPauseResume and add resume and pause callbacks
appPauseResume({pause: function(){
                    Ti.API.info("appPauseResume - pause - Home pressed");
                },
                resume: function(){
                    Ti.API.info("appPauseResume - resume");
                },
                setIntervalTime: 1000,  // Optional - Default: 1000 miliseconds (1 second) 
});