如何检查用户的设备上是否还有我的应用程序?

时间:2014-08-22 09:49:55

标签: android ios google-play

当我们访问Google Play开发者控制台时,有关于目前为止有多少人下载了我们的应用程序的信息,以及有多少设备仍安装了应用程序(我说的是CURRENT / TOTAL INSTALLS)。我正在寻找这样的信息。

我的问题:

有没有办法弄清楚特定用户或设备是否还有应用程序?

我需要此信息的地方:

我正在开发一款回合制多人游戏。每个玩家报名参加比赛,当有足够的玩家时,将创建比赛(在数据库中),并且将通知每个人开始比赛。这个注册过程需要一段时间,一些已经报名参加比赛的玩家可能会在比赛开始前从他们的设备上卸载游戏(app)。在我尝试创建比赛(在数据库中)之前,我正在寻找一种方法来找到那些人并从注册列表中删除他们的注册。

1 个答案:

答案 0 :(得分:0)

在应用程序世界中,卸载是一种非常常见的现象,尤其是在Android中,在应用程序发布之前没有检查。

那么如何找到特定用户是否已卸载您的应用程序,快速回答是GCM。让我们看看当您将推送发送到已卸载应用程序的设备时会发生什么..(从GCM文档中获取)

最终用户卸载该应用程序。 您的服务器向GCM服务器发送消息。 GCM服务器将消息发送到设备。 GCM客户端接收消息并查询Package Manager是否有广播接收器配置为接收它,返回false。 GCM客户端通知GCM服务器已卸载该应用程序。 GCM服务器标记要删除的注册ID。 第三方服务器向GCM发送消息。 GCM向您的服务器返回NotRegistered错误消息。 您的服务器应删除注册ID。 因此,从上述步骤中,很容易理解,如果您的服务器收到“NotRegistered”错误消息,则该应用程序已在用户设备上卸载。所以你需要做的就是,向你的应用程序发送一个静音推送,检查它是否存在于用户的设备上。

虽然从我个人的经验来看,即使卸载了应用程序,GCM服务器也不会返回错误消息,至少在卸载的前几天。我猜是GCM服务器需要一些时间来更新应用程序的信息卸载。

更准确的方法是从推送消息的应用程序接收确认,因此,如果您收到确认,那么该应用程序仍然存在,如果您没有,那么用户的设备上不存在该应用程序。但是,这里有一个问题,如果应用程序存在于用户的设备上,但由于用户未连接到互联网而未传递消息,该怎么办?你需要多长时间才能收到确认,这里是你的良心拯救的地方,你必须决定你等待确认的时间并决定应用程序是否存在于用户的设备上。如果您的应用依赖互联网获取应用,并且您在3-4天内未收到确认,则可以安全地假设用户对您是否无用是否有应用,您可以安全地将他置于卸载类别。

如果您可以使用设备信息映射用户信息,则识别卸载详细信息可以帮助您找到有关应用的一些见解。

快乐编码......

从这里开始:

http://hackfindings.wordpress.com/2014/03/06/android-how-to-find-if-a-user-has-uninstalled-the-application/