我正在使用 PhoneGap构建一个应用程序。在以下情况下,我希望它使用 PIN 码锁定自身(它必须是应用内锁,与原生 Android 锁分开):
- 一段时间后没有用户输入
- 用户离开应用程序,例如,如果应用程序最小化,或者如果手机搁置一段时间后屏幕关闭。
问题:
- 我假设电话超时并关闭屏幕会触发 pause event ,但这真的是这样吗?
- 是否可以运行
setInterval()
函数以在手机“暂停”时运行,以便检查服务器以推送 notifications ?我只对 Android 感兴趣,我知道 iOS 有一些怪癖。 - 最后,实现 PIN 锁的最佳方法是什么?覆盖当前界面或将应用重定向到“锁定页面”,同时记住原始页面或其他内容?
最佳答案
我没有任何代码示例,但我可以讨论理论上的实现。
我会在应用程序打开时亲自实现锁定屏幕。为了保持该应用程序是基于 PIN 的应用程序的一致性(我知道糟糕的措辞)。因此,无论何时首次打开该应用,它都应该询问 PIN 码。
在实现重定向时,我会使用 Back 方法向后返回(DevExtreme 有一个默认的 back 方法,我不确定 phonegap 是否有)
尝试访问 back 方法,如果失败。继续前进。
使用 try/catch 完成此操作,尝试返回,如果它出错则假设它出错,因为没有地方可以返回。进入主屏幕。
实现onPause方法,在设备暂停后移动到锁屏。
如果你没有默认的返回方法,这里有一个使用伪代码实现的模型
为了创建模型,我们将劫持导航方法,或者更好的是,我们将重新创建导航方法,但仍使用现有方法。
define backstring = ""
function NavigateTo(string navigateto)
backstring = currentnavigationscreen
this.Navigate(navigateto)
end
此方法设置返回字符串的值并导航到下一个屏幕
function GoBack()
NavigateTo(backstring)
end
onpause 方法应该是这样的
function onPause()
NavigateTo("lockscreen")
end
我当然希望这会有所帮助。
您还可以创建一个 CanBack() 方法,而不是在 back 函数上尝试和捕获。
function CanBack()
return (backstring.length > 0)
end
报价
Depending on the screen flow of your app, you may need to also disable the back button functionality to prevent the user from "escaping" your lock modal. – Garcia Hurtado
这是一个很好的观点,但是如果您坚持使用我提供的伪代码并且不将其连接到后退按钮机制,您就可以了。只需确保当您导航到密码屏幕时,您将其视为根。
您还可以创建一个叠加层,并简单地维护一个 bool 值来确定是否显示它。默认值可能为 true,因此每次打开应用程序时都必须输入密码。并且您可以使用 onpause 函数将 bool 值设置为 false 以通知应用它需要再次锁定。
关于javascript - 使用 PIN 码锁定 PhoneGap Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577513/