问题描述:android
同一个apk安装包下载地址,在被不一样的推广连接安装到不一样的手机后,自动区分安装所属的连接。chrome
详细解释:浏览器
有两我的A和B要为http://127.0.0.1/sample.apk进行推广安装服务器
A发送本身的推广连接http://127.0.0.1/sample.apk?id=a到好友x的手机app
B发送本身的推广连接http://127.0.0.1/sample.apk?id=b到好友y的手机测试
x和y两我的的手机中安装sample.apk后进行识别自身属于A仍是B的推广,从而对A和B进行推广奖励。spa
sample.apk运行时后程序内部并没有异同参数进行识别。ip
————————————————字符串
环境所面临的主要问题是,app在安装后,并不能知道自身是从哪一个人的推广ID下发下来的。产品
在360的某个产品中,有一个推广送积分,分析后发现是一个浏览器指纹的方法,此方案在IOS系统中万无一失,统计准确,由于浏览器默认都是打开safari,而android中,统计的是chrome浏览器以及android自带浏览器,而且不能确认用户是否用了其余浏览器下载。即便统计所有浏览器指纹,由服务器去作比对分析,最后发现并不能使浏览器后台访问,此问题还须要时间去好好分析编写一个demo测试。
最后研究APK包,发现能够在zip文件的注释作一下文章来区分。
在zip包的末尾标记块的最后两个字符,是文件注释的长度,长度之后是明文字符串,可任意修改,不影响zip格式的解包,也不会影响apk的安装,apk安装后能够来读取这段数据来确认推广人ID。
固然,方案到了最后其实已经不能算是同一apk安装包的推广细分了,不过问题已经简化到比给每一个推广用户生成一个渠道包要方便的多。省去了二次打包和签名的问题,固然还有一个最大的问题是存储的问题,由于若是有一百万人想要推广的话,我不能生成一百万份安装包存储在服务器中供用户下载。
昨天还在研究指纹问题的时候,联系了下友盟的工做人员,毕竟别人专业作统计,以前告诉我说有在作android这个功能,不过今天他们告诉我说,项目已经砍掉了,问了下实现方案,使用的IP匹配,不过这个应该比浏览器指纹更不靠谱吧,对方说大概80%的准确率。
并无什么技术含量,若是有朋友知道android下的浏览器后台的具体细节,能够分享下。