我开发了一些高级应用,用户可以直接从我的目标网页下载,因此安装不会通过Play商店。
应用程序与我的服务器进行通信以进行跟踪,我希望能够确定哪些应用安装与我的下载跟踪系统中的哪些下载条目相对应,以便能够准确分析我的广告系列。
有没有一种方法可以识别与APK下载相关的用户或设备?
编辑:
到目前为止,我尝试使用IP,国家/地区,浏览器用户代理和Android版本等数据创建指纹,将其保存在数据库中,并让应用程序在首次打开后向我发送相同的数据,然后尝试找到这样的条目,但它经常失败(找不到相应的条目)。
由于公司政策,我无法发布这部分代码(是的,我知道......)-_-
作为一些额外的信息,我的页面在后端使用php。我一直在尝试创建用户设备的某种指纹,并在我的服务器上使用指纹数据库安装和打开应用程序后进行比较,但这不是一个好的系统......
答案 0 :(得分:0)
一种方法是为可以在您的网站上下载的版本使用自定义产品风格。如果您在Gradle中使用buildConfigField属性,则可以让应用自动向跟踪服务器发送自定义跟踪属性。
的build.gradle:
productFlavors {
GooglePlay {
buildConfigField 'Boolean', 'isGooglePlay', 'true'
}
Website {
buildConfigField 'Boolean', 'isGooglePlay', 'false'
}
}
Analytic.java:
private String appendTrackerToQueryString(String queryString) {
return queryString + "&productFlavor=" + (BuildConfig.isGooglePlay ? "GooglePlay" : "Website");
}
根据有关问题的澄清信息进行编辑:
由于操作系统希望将特定下载与特定安装联系起来,因此另一种方法是动态创建配置文件,并使用aapt将其注入预先构建的apk文件中。见Android: How to manually add a file to apk?。新包需要使用相同的密钥库进行重新签名,然后由用户下载。这种方法为下载过程增加了一些时间,因此需要与服务器负载和下载需求进行平衡。