2014-09-19 17 views
0

我希望用戶在特定時間內嘗試某些功能,比如安裝後2周(以及之後他們可以購買它)。如何在Android上編寫出色的「時間有限的功能」?

所以我天真的想法是,比如說,使用sharedPreference來存儲第一次啓動時間,然後繼續檢查這個日期與System時間。

但是,用戶可以簡單地更改android手機的系統時間,並無限期地使用此「有限功能」。我的應用程序也應該能夠離線工作,所以用互聯網時間檢查似乎不是一個好主意。

有沒有什麼好的框架可以做這種編碼?

+0

將它寫入設備上的文件?假設用戶不知道如何從手機中刪除文件。 – kosa 2014-09-19 17:51:53

+0

我認爲這個功能的主要破解是改變手機的系統時間...比第一次啓動時更容易訪問文件 – Ivan 2014-09-19 17:56:05

回答

2

您必須使用遠程服務器和數據庫。系統時鐘不是唯一的調整,用戶可以簡單地清除與應用程序相關的數據。

您需要unique ID of the device。在首次使用應用程序時,您可以在遠程數據庫中註冊該應用程序並在其上添加時間戳。無論何時觸發此功能,您只需檢查服務器。

+0

如何檢查固定日期?所以我不需要調用sharedPreference ...但是然後互聯網仍然需要檢查時間 – Ivan 2014-09-19 17:47:01

+0

@Ivan檢查我的編輯 – Olayinka 2014-09-19 17:47:33

+0

遠程數據庫絕對是一個有效的解決方案...如果我可以處理遠程服務器。但我沒有一個...我不想存儲用戶信息,以避免隱私問題... – Ivan 2014-09-19 17:51:13

0

您可以嘗試在應用程序的數據文件夾之外存儲文件,這基本上意味着外部存儲(如/sdcard)。根據它的性質,這個目錄是公開的,用戶可以刪除該文件。你將不得不申請一些加密,並給這個文件一個名稱,看起來它不是你的應用程序的一部分,或者有任何信息會影響你的應用程序的功能的使用,並希望它不會被用戶以某種方式刪除。

0

這可以通過跟蹤兩個值值(存儲在sharedPreference)來完成。

當應用程序第一次啓動時(即,該值不存在),請存儲您的first launch date/time
每次啓動也存儲current date/time(這應該在您的設置中被稱爲last launch date)。

開始時,首先檢查是否current date of the device比存儲last launch date - 如果它是那麼用戶已經改變了日期/時間 - 或促使一個時間旅行裝置:)在這種情況下,您可以顯示一個警告告訴用戶行爲的消息,或者只是默默地失敗並阻止用戶訪問功能。

如果日期沒問題,請繼續並將值更新爲新的current date(用於將來啓動),然後檢查期限是否已過期,並根據需要提供該功能。

這應該是離線工作,除了那些植根於設備並且可以修改sharedPreference中的值的用戶 - 但它們應該是少數。爲了防止root用戶,你需要採用在線服務。

也只是一個警告,這可能會導致誤報當用戶旅行(穿越時區)。但是,通過檢查時區(如果需要),您應該能夠將其作爲特殊情況處理。