2013-04-24 80 views
1

我正在设计一个Android移动应用程序。 该应用程序使用信用系统。用户可以通过Google在应用帐单服务中购买点数。 此外,当用户安装应用程序时,它获得一些免费的信用。Android - 识别应用程序的重新安装

用户信用存储在Web服务器中。当用户下载应用程序时,创建UUID并将其存储在应用程序&服务器中。

我需要以某种方式检测用户何时卸载应用程序,并重新安装它,以便接收免费开始信用(重新安装将创建一个新的UUID,因此它将像一个新用户)。

我一直在寻找一个手机或用户标识符,但我读过,这不是一个很好的主意(http://android-developers.blogspot.com.es/2011/03/identifying-app-installations.htmlIs there a unique Android device ID?How to find serial number of Android device?)。此外,为了使用不属于自己的帐户,这可能容易被黑客入侵。

以某种方式解决这个问题?也许使用应用内结算? 我向任何解决方案开放。

感谢

回答

2

当你是完全正确的(识别设备也没用)我会使用谷歌的用户帐户,实现人的识别:

http://developer.android.com/training/id-auth/identify.html

的AccountManager的AccountManager = AccountManager.get(getApplicationContext( ));

Account[] accounts = accountManager.getAccountsByType("com.google"); 

for (Account a: accounts) { 
    if (a.name.contains("@gmail.com")) { 
     return a.name; 
    } 
} 

这可能会非常棘手,但可以让你从下载的应用中的相同Googkle Play帐户的标识reisntall。

0

为什么不使用IMEI。很容易获得。这很难改变,在很多国家它是非法的(防止电话抢劫)。我们将它用于很多目的。 而你只需要一个额外的权限READ_PHONE_STATE。 (大多数用户不抱怨)

在极少数设备中它可能会返回NULL,在这种情况下,您应该准备好并测试另一个唯一标识符,如序列号Mac地址。 Android ID或UUID。 正如你所说,这最后的标识符更容易被黑客攻击,但由于只有很少的设备是不太可能有黑客问题。

解决方案更多关于设计。以视频游戏为例,如果您重新安装游戏以获得免费的虚拟现金,您也将删除您的存款,以便您从零开始,以相同数量的现金结束。由于玩家之间没有现金转移,所以不能被利用。

如果您正在提供Web服务。您也可以在每个请求中检查IP。因此,请跟踪请求金额和总信用额。这与IMEI一起。 最后,如果你相信真的很重要,你可以申请一张信用卡(不收费),以防止同一用户的多个帐户。对于大多数服务是不必要的,因为您的用户较少,并且可能最终变得更糟。