2013-02-25 28 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地址的相同帐户才可能。

希望你明白了。

随时发表评论。 :)

相关问题