2013-02-25 26 views
13

我已發佈Android應用程序。Android中的每個帳戶限制(限制)應用程序安裝(由獨特設備確定)

問題是,如果有人購買我的應用程序,他可以使用相同的帳戶在多個設備上安裝它。

我可以限制安裝爲每個帳戶(例如2)獨特的設備?

如果用戶想要在具有相同帳戶的其他設備上使用它,他必須先從另一個設備上卸載。

例如,MyBackup Pro only allows two unique devices.

我怎樣才能做到這一點在我的應用程序?

+1

大多數用戶可能會希望該應用可以在其所有設備上工作。如果您有類似MyBackup Pro的理由(例如,每個設備都會增加存儲和傳輸成本),那麼我認爲只要您在用戶購買之前清除它就可以了。如果您沒有理由限制這樣的設備,我會說不要這樣做,以免降低用戶體驗。 – Alec 2013-03-06 23:00:11

回答

2

您可以通過wlan模塊的MAC地址或IMEI識別設備(兩者都可以通過Android系統服務進行檢索)。接下來,您可以確定服務器的安裝情況,如果服務器回覆此用戶/客戶已經在另一臺設備上安裝了該應用,則會鎖定該應用並告訴用戶發生了什麼情況。

+0

我不想爲此維護一臺服務器。我寧願檢查Google是否允許使用他們的清單或服務器(如谷歌Licsensing所做的那樣) – Programer 2013-02-25 10:19:22

+0

您的應用程序的一次安裝如何知道在另一臺設備上已經安裝了另一個應用程序?谷歌可以提供這樣的功能,但我認爲他們不這樣做。 – FWeigl 2013-02-25 12:14:16

+0

我已經使用谷歌Licsencing。他們提供了一個服務器,程序會檢查文件是否從一臺機器複製到另一臺機器,並且它會使用谷歌服務器服務(檢查這臺機器或帳戶是否購買了此應用程序)。我希望此服務器也限制合法購買,而不僅僅是盜版 – Programer 2013-02-25 13:00:49

10

Google helps you do this

This page helps you set it up.

更具體地說,it looks like you want to add a DeviceLimiter

在某些情況下,你可能會想你的政策限制被允許使用單一許可證 實際設備的數量。這會阻止用戶將許可應用程序移動到多個 設備上,並在相同的 帳戶ID下使用這些設備上的應用程序。它還會阻止用戶通過向其他人提供與 許可證關聯的帳戶信息來「共享」 應用程序,然後其他人可以在其設備上登錄該帳戶 並訪問應用程序的許可證。

LVL通過提供DeviceLimiter 接口支持每設備許可,該接口聲明單個方法allowDeviceAccess()。當一個 LicenseValidator正在處理來自許可服務器的響應時,它 調用allowDeviceAccess(),傳遞從 響應中提取的用戶ID字符串。

如果您不想支持設備限制,則無需工作 - LicenseChecker類會自動使用名爲NullDeviceLimiter的默認實現 。顧名思義,NullDeviceLimiter是一個 「no-op」類,其allowDeviceAccess()方法僅爲所有用戶和設備返回一個 LICENSED響應。

注意:每設備不建議授權對於大多數應用 因爲:

它需要你提供後端服務器來管理用戶和 設備映射,這可能會無意中導致用戶被 拒絕訪問他們在另一臺設備上合法購買了 的應用程序。

DeviceLimitercan be found here.

源的源代碼幾乎解釋了你如何去使用DeviceLimiter來實現你想要什麼:

/* The LICENSED response from the server contains a user identifier unique to 
* the <application, user> pair. The developer can send this identifier 
* to their own server along with some device identifier (a random number 
* generated and stored once per application installation, 
* {@link android.telephony.TelephonyManager#getDeviceId getDeviceId}, 
* {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc). 
* 
* The more sources used to identify the device, the harder it will be for an 
* attacker to spoof. 
3

兩個維他命C和yarian答案是不錯的說明。

據我所知,它可以通過兩種方式進行管理。

1.谷歌它的自我

2.通過自己的實現

讓我們逐一檢查,

1.谷歌它自

Ascorbin的答案很好解釋瞭如何實現它以及谷歌如何管理它。所以希望你明白了。如果沒有,然後讓我知道。

2.通過自己的實現

如果你有自己的服務器,那麼你可以把它檢查所安裝的應用程序的設備代碼。每個設備都有獨特的IMEI號碼,因此您可以輕鬆跟蹤相同的IMEI號碼並阻止或允許安裝應用或運行應用。

注意:如果設備配置了相同的帳戶,Google允許您在其他設備上使用相同的應用。所以在這種情況下,只有通過檢測具有不同IMEI或MAC地址的相同帳戶纔可能。

希望你明白了。

隨時發表評論。 :)

相關問題