Php 在play store之外安装应用程序时跟踪设备/安装

Php 在play store之外安装应用程序时跟踪设备/安装,php,android,Php,Android,我开发了一些高级应用程序,用户可以直接从我的登录页下载,因此安装不会经过play store 这些应用程序与我的服务器通信用于跟踪目的,我希望能够准确地确定哪些应用程序安装与我的下载跟踪系统中的哪些下载条目相对应,以便能够准确地分析我的活动 是否有一种方法可以识别与APK下载相关的用户或设备 编辑: 到目前为止,我一直在尝试使用IP、国家、浏览器用户代理和android版本等数据创建指纹,将其保存在数据库中,并让应用程序在首次打开后向我发送相同的数据,然后尝试查找类似的条目,但经常失败(找不到相

我开发了一些高级应用程序,用户可以直接从我的登录页下载,因此安装不会经过play store

这些应用程序与我的服务器通信用于跟踪目的,我希望能够准确地确定哪些应用程序安装与我的下载跟踪系统中的哪些下载条目相对应,以便能够准确地分析我的活动

是否有一种方法可以识别与APK下载相关的用户或设备

编辑:

到目前为止,我一直在尝试使用IP、国家、浏览器用户代理和android版本等数据创建指纹,将其保存在数据库中,并让应用程序在首次打开后向我发送相同的数据,然后尝试查找类似的条目,但经常失败(找不到相应的条目)

由于公司的政策(是的,我知道…),我不能发布那部分代码-_-


作为一些额外的信息,我的页面在后端使用php。我一直在尝试创建用户设备的某种指纹,并在应用程序安装并打开后与我的服务器上的指纹数据库进行比较,但这不是一个好的系统…

一种方法是对可以在网站上下载的版本使用自定义产品风格。如果在Gradle中使用buildConfigField属性,则可以让应用程序自动将自定义跟踪属性发送到跟踪服务器

build.gradle:

productFlavors {
    GooglePlay {
      buildConfigField 'Boolean', 'isGooglePlay', 'true'
    }
    Website {
      buildConfigField 'Boolean', 'isGooglePlay', 'false'
    }
}
analysis.java:

private String appendTrackerToQueryString(String queryString) {
    return queryString + "&productFlavor=" + (BuildConfig.isGooglePlay ? "GooglePlay" : "Website");
}

根据有关问题的澄清信息进行编辑:


由于op希望将特定下载与特定安装联系起来,因此另一种方法是动态创建配置文件,并使用aapt将其注入预构建的apk文件中。看见新的包需要使用相同的密钥库,然后由用户下载。这种方法为下载过程增加了一些时间,因此需要与服务器负载和下载需求相平衡。

一种方法是对可在网站上下载的版本使用自定义产品风格。如果在Gradle中使用buildConfigField属性,则可以让应用程序自动将自定义跟踪属性发送到跟踪服务器

build.gradle:

productFlavors {
    GooglePlay {
      buildConfigField 'Boolean', 'isGooglePlay', 'true'
    }
    Website {
      buildConfigField 'Boolean', 'isGooglePlay', 'false'
    }
}
analysis.java:

private String appendTrackerToQueryString(String queryString) {
    return queryString + "&productFlavor=" + (BuildConfig.isGooglePlay ? "GooglePlay" : "Website");
}

根据有关问题的澄清信息进行编辑:


由于op希望将特定下载与特定安装联系起来,因此另一种方法是动态创建配置文件,并使用aapt将其注入预构建的apk文件中。看见新的包需要使用相同的密钥库,然后由用户下载。这种方法为下载过程增加了一些时间,因此需要与服务器负载和下载需求相平衡。

向我们展示您所尝试的内容向我们展示您所尝试的内容抱歉,我想我还没有很好地解释我自己。。。我的应用程序根本不在Play Store上,我也没有试图跟踪安装的来源,而是试图将APK下载的跟踪与安装联系起来,确定哪个安装对应于哪个下载…啊-这很难确定。您可以尝试使用您所描述的方法来估计它,但它不可能像您所发现的那样万无一失。一种选择是像我描述的那样做,但是在下载时创建一个动态构建。基本上,您将准备好一个apk,然后使用aapt将一个文件注入到包含动态配置的构建中,然后使用jartool或类似工具退出包。不确定这个过程需要多长时间,但应该比按需完成一个完整的构建要快得多。实际上,这听起来很有趣。我当然想知道它会如何影响服务器负载,但我肯定会进一步研究这个想法。。。我会等几天,看看是否还有其他答案,但你也应该用这个想法编辑你的答案,除非有更好的答案,否则我会接受:)对不起,我想我没有解释清楚。。。我的应用程序根本不在Play Store上,我也没有试图跟踪安装的来源,而是试图将APK下载的跟踪与安装联系起来,确定哪个安装对应于哪个下载…啊-这很难确定。您可以尝试使用您所描述的方法来估计它,但它不可能像您所发现的那样万无一失。一种选择是像我描述的那样做,但是在下载时创建一个动态构建。基本上,您将准备好一个apk,然后使用aapt将一个文件注入到包含动态配置的构建中,然后使用jartool或类似工具退出包。不确定这个过程需要多长时间,但应该比按需完成一个完整的构建要快得多。实际上,这听起来很有趣。我当然想知道它会如何影响服务器负载,但我肯定会进一步研究这个想法。。。我会等几天看是否还有其他答案,但你也应该用这个想法编辑你的答案,除非有更好的答案,否则我会接受:)