2011-03-07 68 views
1

對於我的Android應用程序,我想免費發佈它,但需要使用廣告。然後,我想要給用戶一個選項,使用PayPal圖書館將名義費用的廣告移除。這樣,我不必有我的應用程序的2個單獨版本,我必須監視,開發等。加密Android設置

反正,在用戶付款給我去除廣告後,我需要安全地存儲指示他們付了錢,所以欺騙我的應用並不容易。我應該怎麼做?我正在考慮加密一個字符串並將該加密值存儲在SharedPreferences中。這是一個可行的選擇嗎?如果有人要將apk放到他們的設備上並將其交給其他人,那麼SharedPreferences是否會隨之移動,或者它是否保存在apk之外?如果有人擁有root用戶權限呢?他們可以欺騙SharedPreferences嗎?

如果可能,我想避免每次啓動應用程序時都要查詢服務器。

謝謝!

回答

1

我認爲幾個要點:

  1. 重構應用程序爲免費的,廣告支持的版本和付費版本。你可以打包東西,這樣你就可以分享幾乎每一個應用程序。然後只需在市場上發佈免費和付費版本。

  2. 任何人都願意圍繞您的版權保護工作,無論如何都不會爲您的應用付費。

  3. 您提供了一個價值主張。如果分離您的免費和付費版本的唯一東西是廣告,那麼您的應用程序最好是用戶不能沒有的東西。如果你打算用更多的功能來擴展付費版本,那麼上面#1無論如何可能是一個更好的主意。

0

如果用戶足夠確定,他們將能夠對您的應用程序進行逆向工程並獲得解密密鑰,或者完全打破您的保護。 SharedPreferences存儲在任何人都可以訪問的文件中(好吧,也許任何人都可以root訪問...)。

總之,節省你自己的努力,甚至不要試圖保護你的應用程序......誰來反向工程你的應用程序,只是擺脫廣告呢?

+0

你打我吧。 「放棄」是我的建議。如果你在這裏尋求幫助,那麼你設計的任何系統都將在幾分鐘內被破解。如果你在網上查詢,他們會取消支票。如果你在你的代碼中加密一些東西,他們會解密它。等等。 – 2011-03-07 13:56:06

1

你可以做的是在你的應用程序中從手機中獲取一些獨特的數據(設備ID,應用程序版本......等),並將其組合成一條消息。

然後使用公鑰/私鑰對。公共部分可以在你的應用程序和你隨身攜帶的私人部分。

當用戶爲您的應用付費時,它會向您發送帶有設備ID的字符串等,當您收到付款時,您將發回包含證書的一組數據。

您的應用可以通過使用公鑰驗證證書是否符合設備標識或您決定放入的證書。

仍然有很多細節需要解決(數據如何來回傳遞等等),但使用這些工具,您應該能夠實現你正在尋找。

你可以看看這裏瞭解如何管理證書:http://developer.android.com/reference/java/security/cert/package-summary.html

當然,你想怎樣複雜的是取決於你的應用程序,許多人將如何付費。逆向工程可以繞過所有可能的情況,但是我懷疑很多人會爲了擺脫這些廣告而花費0.99美元來解決問題。

0

您現在可能想要吝嗇複雜的保護,並等待應用內購買到達。我想在那個時候會有一個安全可靠的解決方案。