簡體   English   中英

使用PIN碼鎖定PhoneGap Android應用

[英]Locking a PhoneGap Android app with a PIN code

我正在使用PhoneGap構建應用程序。 在以下情況下,我希望它使用PIN碼進行鎖定(它必須是應用內鎖,必須與本機Android鎖分開):

  • 在沒有用戶輸入的情況下經過了一定時間
  • 用戶導航離開該應用程序,例如,如果該應用程序最小化或手機擱置一會兒且屏幕關閉。

問題:

  • 我假設電話超時並關閉屏幕會觸發暫停事件 ,但這真的是工作原理嗎?
  • 是否可以運行setInterval()函數以在電話“暫停”時運行,以便與服務器核對以推送通知 我只對Android感興趣,我知道iOS有一些怪癖。
  • 最后,實現PIN鎖的最佳方法是什么? 覆蓋當前界面或將應用重定向到“鎖定頁面”,同時還記得原始頁面或其他內容嗎?

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的應用程序(我知道的措辭不好)。 因此,每當首次打開該應用程序時,都應要求輸入密碼。

實施重定向時,我將使用Back方法向后移動(DevExtreme具有默認的back方法,我不確定phonegap是否具有一個)

如果失敗,嘗試訪問back方法。 繼續前進。

使用try / catch完成此操作,然后嘗試返回,如果它的錯誤假定發生錯誤,因為沒有可返回的位置。 進入主屏幕。

在設備暫停后,實現onPause方法以移至鎖定屏幕。

如果您沒有默認的back方法,請在此處使用偽代碼實現模擬

為了創建模型,我們將劫持導航方法,或者更好的是,我們將重新創建導航方法,但仍使用現有方法。

define backstring = ""

function NavigateTo(string navigateto)
    backstring = currentnavigationscreen
    this.Navigate(navigateto)
end

此方法設置backstring的值並導航到下一個屏幕

function GoBack()
    NavigateTo(backstring)
end

這就是onpause方法的外觀

function onPause()
    NavigateTo("lockscreen")
end

我當然希望這會有所幫助。

除了應該嘗試使用back函數之外,您還應該創建CanBack()方法。

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

引用

根據您應用程序的屏幕流,您可能還需要禁用后退按鈕功能,以防止用戶“逃脫”您的鎖定模式。 –加西亞·赫爾塔多(Garcia Hurtado)

這是一個很好的觀點,但是,如果您堅持使用我提供的偽代碼,並且不將其連接到后退按鈕機制,則可以。 只要確保在導航到密碼屏幕時將其視為根即可。

您還可以創建一個疊加層,只需維護一個布爾值即可確定是否顯示它。 默認值可能為true,因此每次打開應用程序時,您都必須輸入密碼。 您可以使用onpause函數將布爾值設置為false,以通知應用程序它需要再次鎖定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM