是否可能在非Google Play中跟踪应用指向者?

3
我已经花了几个小时研究这个话题,但是没有找到任何有用的信息。因此,我决定第一次创建一个Stackoverflow账户。
基本上,我有一个Android应用程序,它托管在一个服务器上,用户可以从该服务器下载。然而,将链接分发到许多不同的联盟网站,每个网站都有一个系统已知的唯一ID。
所以我想要跟踪这些联盟。应用程序需要知道用户在安装应用程序之前点击了哪个联盟的链接。然后应用程序将向我们的服务器传递联盟编号。
下载URL的示例将类似于:- http://myserver.com/apphosting?affiliate=777&app.apk 只有当您将应用程序托管在Google Play上并允许使用安装引荐人时,Google才支持此功能。我正确吗?
有没有办法解决这个问题?对我来说,这似乎是一个非常罕见的问题。
提前致谢。我真的很感激您的帮助和宝贵的几分钟时间。
1个回答

1

有几种方法可以解决这个问题,而且为了做好它们,都需要大量的努力。

  1. 你可以针对每个联盟URL返回不同的APK。如果你有很多不同的联盟,你需要一个构建系统,根据相同应用程序但包含不同联盟ID的值资源文件编译每个唯一的APK(可能将主应用程序作为库应用程序)。你可以直接将其连接到网站或将输出复制到网站上。然后你可以让你的应用程序使用这个值来拨打电话。
  2. 你可以在下载和应用程序启动时进行某种形式的设备指纹识别,并匹配指纹。最简单但相当准确的指纹可能只包含设备的IP地址。然而,这种方法也有其局限性。研究表明:

个人手机在几分钟内可能向服务器暴露不同的IP地址。由于许多运营商使用NAT技术,多个手机也可以同时共享同一个IP地址。然而,IP地址的前13-16位在短时间内大部分是相当稳定的。您还可以通过检查HTTP头部,特别是浏览器用户代理,获得一些准确性。那里也有一些问题,但肯定有有用的信息。考虑到您自己分发此应用程序,我会比较重视第一种方法。它可以提供更高的准确性,并且(至少在我看来)更容易实现(是的,我已经实现了类似这两种解决方案的东西)。当然,缺点是您将分发许多不同版本的应用程序,但如果您做得正确,APK之间的差异应该非常小,只会略微增加您的支持开销。

感谢Kabuko提供的出色答案。我一直在考虑IP地址匹配这条路线。但是我不确定这有多可靠,我已经有了一些代码可以完成其中的一部分。准确度不必达到100%,80%就可以接受。所以我可能需要采用基于IP的解决方案,看看效果如何。再次感谢。 - Ahmed Dini
没问题。正如我在答案中提到的,如果仅仅IP不够准确,还有其他数据可以用来提高准确性。如果这个数字对你很重要,你也需要考虑如何衡量准确性。如果你认为这个回答已经足够解决了你的问题,请随意将其标记为已接受。 - kabuko
我有同样的问题,有没有关于如何解决它的示例? - Ivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接