2012-01-13 65 views
1

我有一個應用程序爲一個網絡應用程序創建一個帳戶,該應用程序基本上是從網絡發送和接收SMS消息。這是如何工作的(尚未公佈,接近我曾計劃第一發布功能月底):如何正確保護我的應用程序?

用戶購買應用程序。 用戶輸入他們的姓名,電子郵件和密碼。 帳戶在服務器端創建,最終視圖顯示告訴用戶在哪裏訪問Web應用程序。 打開後臺進程(用於SMS的C2DM和ContentObserver)。

一切順利。這款應用的Android部分完美無瑕,但我很害怕從一次購買中創建多個帳戶的人。我怎麼能阻止這種情況發生?當談到這個問題時,我無能爲力。首先,當顯示最終的視圖時,用戶可以回頭再重新創建另一個帳戶。我怎樣才能防止他們再次進入這種形式?我想我可以設置一個SharedPreference,但所有的用戶必須做的另一個帳戶是卸載應用程序,然後重新安裝它,並bam另一個帳戶。

我需要一種方法,所以一旦用戶首次註冊時,沒有在他們可以重新註冊沒有可能的方式,特定的手機(或特定的谷歌帳戶)上。有沒有真正的方法來完成這一點?任何幫助表示讚賞,當涉及到這個話題時,我被卡住了。

+0

將文件保存到SD卡,並檢查其存在 – Blundell 2012-01-13 23:58:01

+0

@Blundell是有辦法,我可以走的更遠?就像一個始終保持不變的特定電話或Google ID一樣?由於要購買應用程序,用戶必須從谷歌賬戶購買應用程序,這意味着谷歌賬戶與流程鏈接。有什麼辦法可以得到嗎? – Qasim 2012-01-14 00:01:17

回答

0

由於SIM識別功能(getSimSerialNumber)返回關於CDMA設備和* ANDROID_ID *被說成是在CDMA的設備相同的值;在添加沒有任何一種的平板電腦的情況下,我強烈建議在您的數據庫中實施您自己的唯一標識符,並將其與用戶的Google帳戶相匹配。

然而,由於高級用戶可以隨時重置自己的應用程序的數據存儲和從設備清除其識別這種方法也有它的注意事項(因而對設備的品牌上應用新推出的使您的應用程序會話)。

您可能要檢查我這篇文章的想法有關生成的唯一的ID

http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

0

我會讓它在服務器端進行檢查。每個設備都有一個唯一的標識符。如果您在帳戶創建期間將其保存在網絡服務器端,請檢查是否已在該設備上創建帳戶。以防萬一,也爲Google ID添加相同的檢查。

String android_id = Secure.getString(getBaseContext().getContentResolver(), 
       Secure.ANDROID_ID); 

可能值得一試。你最安全的賭注永遠是服務器端的東西,因爲如果人們真的想要,設備端很容易被磨練。

+0

現在我沒有太多的Android應用程序發佈後的經驗,這是我的第一個應用程序,所以我想知道,有沒有人購買過這個應用程序的東西?所以我也可以驗證自己,如果我在我的服務器數據庫中看到一些隨機電子郵件,但它不在購買此應用程序的用戶列表中,就像那樣。 – Qasim 2012-01-14 00:03:05

+0

對不起,我自己也沒有經驗,目前正在開發我的第一個應用程序。如果可能的話,與AndroidID結合使用可能是一個很好的組合。 – 2012-01-14 00:05:41

+0

小心ANDROID_ID在一些設備和另一個手機上由一個網絡運營商返回null每個電話都有相同的ANDROID_ID,有很多博客關於這個主題http://stackoverflow.com/questions/2785485/is-there-a-unique- android-device-id – Blundell 2012-01-14 00:10:07