Google在其License Verification Library中提供的默認ServerManagedPolicy
依賴於服務器響應來確定許可證重新驗證時間間隔。這導致需要每隔幾天重新驗證一次,永久性的。這不僅對用戶造成滋擾,對於長時間沒有連接的用戶而言,這可能是一個嚴重的問題。 (我們剛剛從誰希望是沒有互聯網連接了幾個星期的用戶,這是什麼促使這個問題的詢問)這個Google LVL策略實施是否合理安全?
總之,我正在尋找一種算法,將完成兩件事情:
- 與
ServerManagedPolicy
相比,大大降低了連接要求; - 提供了相同級別的反盜版保護。
在回答this question建議的策略算法忽略從谷歌的服務器的響應提供的時間,而不是使用的許可到期時間大約一個月,有許可證檢查被每隔幾天試圖(以如果收到LICENSED響應,則延長到期期限)。
雖然這種方法部分解決了第一個目標,但它仍然要求用戶每月在使用應用程序時連接一次,因此它不適用於(至少一個)用戶。
以下算法完成第一個目標,但我不知道第二個目標。任何意見指出這種算法的弱點,或對另一種方法的建議,將受到歡迎。
- 第一次運行時,請在執行許可檢查並堅持授權響應之前提供全部功能。收到後,請設置較短的到期期限(但超過Google Play提供的退款期限,目前爲15分鐘)。還要註冊幾天後的寬限期。
- 該應用程序將在許可證到期後再次開始檢查。如果連接失敗(飛行模式等),它將一直運行到寬限期到期。
- 寬限期到期後,在允許正常應用運行之前,堅持第二次獲得許可響應。
- 收到第二個LICENSED響應後,永久啓用應用程序的所有功能,並且再也不用再檢查。
- 如果在任何時候收到UNLICENSED響應,則永久禁用完整功能。 (用戶可以,當然,還原通過刪除所有的應用程序的數據到步驟1。)
附加點:
- 有人建議放棄所述第一許可檢查,並等待直到期滿執行許可證檢查前的返回期限。堅持第一個LICENSED響應的目的是爲了防止在許可證檢查失敗後用戶簡單地停止應用程序進程,清除應用程序數據並重新啓動應用程序。 (即使每次只能使用15分鐘,該應用程序也能提供價值。)
- 堅持第二個許可響應的目的是解決buy-run-backup-return-restore攻擊。
- 我不是問回撥許可證檢查是否是個好主意(這是Google提供的代替他們不贊成使用的版權保護機制)。我也很清楚,沒有反盜版保護是萬無一失的,Google的整個許可機制可以被規避(在這種情況下,有關策略算法設計的所有問題都是無關緊要的)。這個問題的要點是與其他策略(例如
ServerManagedPolicy
)相比,上述算法對用戶的相對風險(對我們)和對用戶的好處。
從「無形」轉變退款蟲「購買,還需要驗證」到「購買,不再需要驗證」有問題。只需在某些設置對話框中,您需要在應用程序的某個位置反映該位置。 (許可證:臨時某處,如果在「返回窗口」關閉後點擊,則強制執行檢查*然後*,如果它「過早」以獲得永久許可證則生成錯誤消息。一旦第二次驗證(自動,或手動),成爲許可證:永久。) – Yakk 2015-06-18 21:21:24
@Yakk - 我不知道你看到什麼問題。是否需要控制第二次檢查的時間? – 2015-06-18 21:30:56
所以有人購買你的產品,知道它「離線工作」。然後他們下載它,運行它,它工作。接下來,他們失去了連接(無論什麼原因沒有數據,wifi關閉)。 3天后,他們的應用程序停止工作,幾乎沒有診斷。重點是能夠說「一旦它說永久許可證,應用程序離線*」。對客戶來說顯然是一個重要的狀態變化:使客戶看到狀態變化是重要的。 – Yakk 2015-06-19 01:13:52