我发布了一个Android应用。
问题是,如果有人购买我的应用程序,他可以使用同一帐户在多个设备上安装它。
我可以将安装限制为每个帐户的少数(假设2个)唯一设备吗?
如果用户想要在具有相同帐户的其他设备上使用它,则必须先从另一台设备上卸载。
例如,MyBackup Pro only allows two unique devices.
如何在我的应用中实现这一目标?
答案 0 :(得分:11)
This page helps you set it up.
更具体地说,it looks like you want to add a DeviceLimiter:
在某些情况下,您可能希望自己的政策限制数量 允许使用单个许可证的实际设备。这个会 阻止用户将许可的应用程序移动到许多 设备并在相同的设备上使用应用程序 帐户ID。它还会阻止用户“共享” 应用程序通过提供与之关联的帐户信息 许可给其他人,然后他们可以登录该帐户 在他们的设备上并访问应用程序的许可证。
LVL通过提供DeviceLimiter支持每设备许可 interface,声明一个方法,allowDeviceAccess()。当一个 LicenseValidator正在处理来自许可服务器的响应 调用allowDeviceAccess(),传递从中提取的用户ID字符串 响应。
如果您不想支持设备限制,则无需任何工作 - LicenseChecker类自动使用默认实现 叫做NullDeviceLimiter。顾名思义,NullDeviceLimiter是一个 “no-op”类,其allowDeviceAccess()方法只返回一个 所有用户和设备的许可响应。
警告:大多数应用程序不建议使用每设备许可 这是因为:
它要求您提供后端服务器来管理用户和 设备映射,它可能会无意中导致用户 拒绝访问他们合法购买的应用程序 在另一台设备上。
DeviceLimiter
can 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.
答案 1 :(得分:3)
Ascorbin和yarian的答案都很好解释。
据我所知,可以通过两种方式进行管理。
<强> 1。谷歌自己
<强> 2。通过您自己的实施
让我们逐一检查,
<强> 1。由谷歌自我
Ascorbin的答案解释了如何实施它以及google如何管理它。所以希望你明白了。如果没有,请告诉我。
<强> 2。通过您自己的实施
如果您有自己的服务器,那么您可以添加检查已安装的应用设备的代码。每个设备都有唯一的IMEI号码,因此您可以轻松跟踪相同的IMEI号码并阻止或允许安装应用程序或使用该应用程序。
注意:如果设备配置了相同的帐户,Google允许您在其他设备中使用相同的应用。所以在这种情况下,只能通过检测具有不同IMEI或MAC地址的相同帐户来实现。
希望你明白这一点。
随意发表评论。 :)
答案 2 :(得分:2)
您可以通过wlan模块的MAC地址或IMEI识别设备(两者都可以通过Android系统服务检索)。接下来是您确定服务器的安装,如果服务器回复该用户/客户已经在另一台设备上安装了该安装,则锁定应用程序并告诉用户该怎么办。