使用PIN码锁定PhoneGap Android应用程序

Locking a PhoneGap Android app with a PIN code

本文关键字:Android 应用程序 PhoneGap 锁定 PIN 使用      更新时间:2023-09-26

我正在使用PhoneGap构建一个应用程序。在以下情况下,我希望它用PIN码锁定自己(它必须是应用程序内锁,与原生Android锁分开):

  • 在没有用户输入的情况下经过了一定时间
  • 用户导航离开应用程序,例如,如果应用程序被最小化,或者手机被放置一段时间后屏幕关闭

问题:

  • 我假设手机超时并关闭屏幕会触发暂停事件,但这真的是怎么回事吗
  • 是否可以运行setInterval()功能,即使在手机"暂停"时也可以运行,以便与服务器核实推送通知?我只对安卓系统感兴趣,我知道iOS有一些怪癖
  • 最后,实现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

这就是暂停方法应该看起来像

function onPause()
    NavigateTo("lockscreen")
end

我当然希望这会有所帮助。

您还可以创建一个CanBack()方法,而不是在后面执行try-and-catch函数。

function CanBack()
    return (backstring.length > 0)
end

报价

根据应用程序的屏幕流,您可能还需要禁用后退按钮功能,防止用户"逃离"您的锁定模式Garcia Hurtado

这是一个很好的观点,但是,如果你坚持使用我给出的伪代码,并且不将其连接到后退按钮机制,你就可以了。只要确保当您导航到密码屏幕时,您将其视为根。

您也可以创建一个覆盖,并简单地维护一个布尔值来决定是否显示它。默认值可能为true,因此每次打开应用程序时都必须输入密码。您可以使用onpause函数将布尔值设置为false,以通知应用程序需要再次锁定。

1)每当屏幕关闭或应用程序最小化时,都会触发暂停事件。您可以使用暂停事件在屏幕上创建锁定。在这种情况下,您可能还需要禁用bwck按钮,这样当您显示锁定屏幕时,用户就不会导航到上一页。

2) 可以在暂停事件上运行setinterval功能,这样无论何时手机暂停,都可以与服务器进行通信。这里有一些代码:

document.addEventListener("pause", onPause, false);
function onPause() { // Handle the pause event
setInterval( function() {
    Ext.data.JsonP.request({
            url: 'http://convert4mobile.net/backend/API/qr/push.php',
            callbackKey: 'callback',
            success: function(data)
            {
                if(data.success == true)
                {
                    if (typeof plugins !== "undefined") {
              window.plugins.localNotification.add({
                        date : new Date(),
                        message : data.time+"'r'n"+data.msg,
                        ticker : "A new code was generated",
                        repeatDaily : false,
                        id : 4
                });
                }
                }
            }
           });
} , 2000);
}

3) 如果它只是一个屏幕,不让用户在没有输入正确pin的情况下与应用程序交互,那么它应该是一个覆盖。您也可以使用saperate屏幕,但使用带有消息的模式覆盖来输入pin,同时禁用后退按钮就足够了。这样你就不会在重定向时陷入页面。