我希望用戶在特定時間內嘗試某些功能,比如安裝後2周(以及之後他們可以購買它)。如何在Android上編寫出色的「時間有限的功能」?
所以我天真的想法是,比如說,使用sharedPreference
來存儲第一次啓動時間,然後繼續檢查這個日期與System
時間。
但是,用戶可以簡單地更改android手機的系統時間,並無限期地使用此「有限功能」。我的應用程序也應該能夠離線工作,所以用互聯網時間檢查似乎不是一個好主意。
有沒有什麼好的框架可以做這種編碼?
我希望用戶在特定時間內嘗試某些功能,比如安裝後2周(以及之後他們可以購買它)。如何在Android上編寫出色的「時間有限的功能」?
所以我天真的想法是,比如說,使用sharedPreference
來存儲第一次啓動時間,然後繼續檢查這個日期與System
時間。
但是,用戶可以簡單地更改android手機的系統時間,並無限期地使用此「有限功能」。我的應用程序也應該能夠離線工作,所以用互聯網時間檢查似乎不是一個好主意。
有沒有什麼好的框架可以做這種編碼?
您必須使用遠程服務器和數據庫。系統時鐘不是唯一的調整,用戶可以簡單地清除與應用程序相關的數據。
您需要unique ID of the device。在首次使用應用程序時,您可以在遠程數據庫中註冊該應用程序並在其上添加時間戳。無論何時觸發此功能,您只需檢查服務器。
您可以嘗試在應用程序的數據文件夾之外存儲文件,這基本上意味着外部存儲(如/sdcard
)。根據它的性質,這個目錄是公開的,用戶可以刪除該文件。你將不得不申請一些加密,並給這個文件一個名稱,看起來它不是你的應用程序的一部分,或者有任何信息會影響你的應用程序的功能的使用,並希望它不會被用戶以某種方式刪除。
這可以通過跟蹤兩個值值(存儲在sharedPreference
)來完成。
當應用程序第一次啓動時(即,該值不存在),請存儲您的first launch date/time
。
對每次啓動也存儲current date/time
(這應該在您的設置中被稱爲last launch date
)。
開始時,首先檢查是否current date of the device
是少比存儲last launch date
- 如果它是那麼用戶已經改變了日期/時間 - 或促使一個時間旅行裝置:)在這種情況下,您可以顯示一個警告告訴用戶行爲的消息,或者只是默默地失敗並阻止用戶訪問功能。
如果日期沒問題,請繼續並將值更新爲新的current date
(用於將來啓動),然後檢查期限是否已過期,並根據需要提供該功能。
這應該是離線工作,除了那些植根於設備並且可以修改sharedPreference
中的值的用戶 - 但它們應該是少數。爲了防止root用戶,你需要採用在線服務。
也只是一個警告,這可能會導致誤報當用戶旅行(穿越時區)。但是,通過檢查時區(如果需要),您應該能夠將其作爲特殊情況處理。
將它寫入設備上的文件?假設用戶不知道如何從手機中刪除文件。 – kosa 2014-09-19 17:51:53
我認爲這個功能的主要破解是改變手機的系統時間...比第一次啓動時更容易訪問文件 – Ivan 2014-09-19 17:56:05