我想检测用户何时按下Android和iOS中的主页按钮,然后从会话中注销。有没有办法做到这一点?
在iOS上,我尝试使用Titanium.App.pause侦听器,当我按下主页按钮时它会起作用,但问题是当我在应用程序中执行其他操作时也会触发此侦听器,例如打开图库或应用程序中的摄像头甚至使用控制中心。
在Android上我尝试过类似的事情。但我面临着同样的问题。
答案 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)
});