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