Appcelerator:检测用户何时按下主页按钮(iOS & Android)

Appcelerator: Detect when user presses home button (iOS & Android)

我想检测用户何时在 Android 和 iOS 中按下主页按钮,然后从会话中注销。有什么办法吗?

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

在 Android 我尝试了类似的事情。但是我也遇到了同样的问题。

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

不过你可以做一件事,使用布尔型全局变量来存储画廊或相机或其他完成的事件,这些事件会暂停应用程序到后台。这样你就可以捕捉到主页按钮的点击。

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

您可以根据需要使用任何东西。对于 Android,请查看可能对 pause/resume Android.

有帮助的 post

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

检测主页按钮按下与检测应用程序是否暂停或恢复有关,在 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) 
});