我有一个应用程序,我想应用cordova“暂停”和“恢复”功能。我实施了“暂停”。在“Pause”侦听器中,我将用户注销。我需要的是仅在“暂停”时间超过5秒时才将用户注销。因此,如果用户离开应用程序,然后在5秒内返回应用程序,我不想将其注销,但允许他们继续使用该应用程序。
我使用了以下内容,但它等待了5秒钟,然后即使它们返回也会将其记录下来。
$timeout(function(){
myLogoutFunction(); //I want to cancel this if the user returns before the function fires.
}, 5000);
答案 0 :(得分:0)
您需要取消$ timeout。触发应用恢复事件时尝试$timeout.cancel(promise)
,这将中止操作。或者使用简单的javascript:
// on pause
let _timer = setTimeout(function(){
//logout the user
}, 5000);
// on resume
clearTimeout(_timer);
$ timeout 只是setTimeout的包装 希望这能提供一些见解。
答案 1 :(得分:0)
在Ionic 1中,'pause'
事件处理程序永远不会在iOS上实际调用,因为运行该应用程序的Web视图会立即停止。
我使用了以下内容,但只需等待5秒钟,即使它们返回也会将其记录下来。
The actual 'pause'
event handler will be called on the subsequent 'resume'
event being fired.计时器的用户在这种情况下无法工作,因为他们将在'resume'
上排队。相反,您可以跟踪用户完成的上一个操作,通过可以序列化到文件系统的本地数据库管理会话,或远程管理会话并远程销毁注销并检查会话是否仍然有效{{1 }}。如果会话不再有效,则重定向回登录屏幕。但是,在这些情况下,您可能希望将超时时间增加到大于30秒的时间。也许10分钟会是一个更好的数字。
这是Cordova使用webview无法访问底层本机生命周期事件的结果。
你可以尝试使用ng-idle
module但是,我还没有真正使用它,所以我不能说它是否有效但它说它跟踪触摸/滚动等等在用户上次活动时进行维护。
有关'resume'
以及检测空闲用户的其他潜在方法的其他信息,请参阅此question。