安装运行的 app 怎么知道自己是从哪个推广链接下载的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
laravel
V2EX    程序员

安装运行的 app 怎么知道自己是从哪个推广链接下载的?

  •  
  •   laravel 2022-03-27 11:33:47 +08:00 5042 次点击
    这是一个创建于 1344 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这篇文章讲的方法还适用吗?

    https://www.cnblogs.com/lanxingren/p/10656647.html

    文章大概意思:

    apk 格式是 zip 类型,给 zip 添加 comment , 然后在 app 运行时候从 apk 的 comment 里获取自定义数据。

    29 条回复    2022-03-28 16:46:08 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
       2022-03-27 11:41:39 +08:00 via iPhone   1
    多渠道打包
    lscho
        2
    lscho  
       2022-03-27 11:48:00 +08:00
    推广链接的推广关系绑定一般都是打开推广链接的时候,复制推广码到剪切板,下载完打开 APP 注册的时候读取剪切板。
    0o0O0o0O0o
        3
    0o0O0o0O0o  
       2022-03-27 11:55:19 +08:00 via iPhone
    @0o0O0o0O0o sorry ,没仔细看,是推广链接啊
    Chism
        4
    Chism  
       2022-03-27 12:08:45 +08:00 via Android
    签名文件放服务器,更改里面的一个配置文件信息,临时用命令行打包 apk 下载
    laravel
        5
    laravel  
    OP
       2022-03-27 12:09:33 +08:00
    @Chism 那就是用户想推广,得等到 apk 生成才行,生成 apk 很慢吧
    liaohongxing
        6
    liaohongxing  
       2022-03-27 12:12:58 +08:00
    @laravel 只需要生成 1 次就行 。有缓存 ,就算是老版本都行 。一旦安装,配置文件写入机器。用户打开再更新一下就行。重要的是要安装进用户机器。
    seakingii
        7
    seakingii  
       2022-03-27 12:17:25 +08:00
    这种方案不是很清楚。难道可以直接修改 APK ? APK 没有一个 HASH 校验自己的机制?文章里好像有说,签名机制选择 V1 就可以。

    不过我想可能这样更稳妥,就是认为业务员数量是有限的,可以在更新新版本的 APK 和新增业务员是在后台生成好,每个业务员对应一个 APK ,扫码下载之前就准备好业务员专用的 APK 。这种做法能保证用任何签名方式,在线下客户扫码时也不用等待服务器临时生成 APK 。。。
    IGJacklove
        8
    IGJacklove  
       2022-03-27 12:36:12 +08:00 via iPhone
    多渠道打包啊,你有多少个推广平台就有多少个包,你去极光啥的看看就知道了。
    nicevar
        9
    nicevar  
       2022-03-27 12:42:10 +08:00
    @seakingii 校验机制肯定有,一般各种平台的安装包不会傻傻校验整个包,可能还会预留一些字节也可填充任何信息,很多移动平台的安装包都是这样的。
    kwanzaa
        10
    kwanzaa  
       2022-03-27 13:04:09 +08:00
    先生成签名字符并记录,然后预先打包,再塞给渠道人员。
    zpxshl
        11
    zpxshl  
       2022-03-27 13:08:12 +08:00 via Android
    多渠道打包可以,但前提是打包前就知道渠道。
    有些渠道需要动态生成的,没记错的话 apk 有个位置可以写入信息,不影响校验。
    seakingii
        12
    seakingii  
       2022-03-27 13:08:36 +08:00
    @IGJacklove 楼主的需求不是”多渠道“,而是一个业务员对应一个安装包。这样他好统计业务员的业绩。(而不用额外输入业务员的代码什么的,APP 直接记录了业务员的代码)
    xuecan
        13
    xuecan  
       2022-03-27 15:08:28 +08:00
    据我所知 现在还是这种方法
    nuk
        14
    nuk  
       2022-03-27 15:44:23 +08:00
    这个 comment 只对 v1 签名有效,apk v2 签名块可以增加未知 ID ,在未知 ID 的值里就增加自定义数据,不过只是文档这么说,我不知道行不行。
    https://source.android.google.cn/security/apksigning/v2?hl=zh-cn#apk-signing-block
    rb6221
        15
    rb6221  
       2022-03-27 17:07:14 +08:00
    这种还好吧……用起来就跟多渠道打包一样,还是往 apk 里面写入每个业务员自带的 id 。
    但是原理有些不一样,首先多渠道的话渠道数最多也就几十个,一次性全部打一遍就行了。而业务员显然更多,而且会有随时增加减少的情况,所以不能预先打好包。但是根据文章,可以在客户扫码的时候,每个码有自己的 id ,然后就是快速把 id 的那一部分写入 apk 生成新包,这个过程必须很快,不能重编译、重签名,因为用户扫码的时候是要立刻打开下载链接的。
    laravel
        16
    laravel  
    OP
       2022-03-27 17:12:53 +08:00
    每个用户都可以分享挣提成
    Chism
        17
    Chism  
       2022-03-27 17:58:08 +08:00
    @laravel 取决于文件量和大小,速度跟打包文件夹成.zip 差不多
    Chism
        18
    Chism  
       2022-03-27 17:59:26 +08:00
    @laravel
    你可以把 affId 对应的 apk 文件暂存起来,版本号没变的话不用重新打包。这样只有第一次请求下载打包,后续就是读 apk 了。打包的话,我亲测基本 2 秒左右
    icyalala
        19
    icyalala  
       2022-03-27 18:49:18 +08:00
    安卓发版都是自动化一次打几十个渠道包,
    iOS 的话。。有的是用剪贴板,有的是一些广告 SDK
    rv54ntjwfm3ug8
        20
    rv54ntjwfm3ug8  
       2022-03-27 19:09:32 +08:00
    没有人提到浏览器指纹吗,用户的屏幕分辨率 Canvas 指纹 SSL 指纹 甚至 CPU/GPU 运算速度都能作为浏览器指纹,多项结合一下再参考 IP 地址就能获得一个非常精确的用户指纹了,App 首次启动的时候如果有匹配度>一堆阈值的人的话找一个匹配度最高的就行
    rv54ntjwfm3ug8
        21
    rv54ntjwfm3ug8  
       2022-03-27 19:12:45 +08:00
    @theklf4 之前测试过某专门干这事的平台,挂代理使下载 IP 和应用启动时 IP 不一样它还能确定分享人,把 UA 里的系统版本改成和实际值不一样就不行了,说明肯定用了浏览器特征
    lower
        22
    lower  
       2022-03-27 19:20:58 +08:00
    用 IP 地址也能记录到吧:
    下载的时候记录某个下载 IP 请求的推广链接,注册的时候也记录注册 ip ,俩 ip 一比对能查到用户的来源( NAT 网络下估计不精准)
    lower
        23
    lower  
       2022-03-27 19:28:40 +08:00
    @theklf4 h5 好像有接口可以获取设备 id ,要是兼容性好的话,那下载时跟安装时基本就能保证完全匹配了
    magicdawn
        24
    magicdawn  
       2022-03-27 21:05:09 +08:00
    几年前写过这样的服务端代码, 是往 META-INF/channel_info 文件里写如渠道
    生成 apk, 推到 cdn, 生成链接.

    META-INF 这个文件夹比较特殊, 好像可以随意写
    gluttony
        25
    gluttony  
       2022-03-27 21:31:44 +08:00
    * 如果是海外市场推广最简单,Google Play 有专门的库提供追踪服务 https://developer.android.com/google/play/installreferrer/library

    * 国内市场有钱没时间,用现成的 openinstall 等公司服务。没钱就按上面诸位的建议自己动手。另外如果你的 app 是以注册来定义转化 /考核推广业绩的话,不妨实现个能注册用户的网页,URL 里带上 aff code ,注册完毕后引导用户去下载。
    Mrshe
        26
    Mrshe  
       2022-03-27 23:38:57 +08:00
    多渠道打包方案,动态修改渠道,用美团或者别的开源方案,速度很快当初推广的时候都是 1000 多个包
    keyword233
        27
    keyword233  
       2022-03-28 02:37:40 +08:00
    动态打包,对每个请求都即时添加数据并生成安装包

    知乎安装 app 以后可以接着阅读刚才在浏览器里的内容,就是这样实现的
    XXWHCA
        28
    XXWHCA  
       2022-03-28 11:05:02 +08:00   1
    渠道推广统计有多种方案:

    * 多渠道打包
    1. gradle 打包,针对渠道包不多的情况,因为每个渠道包都需要打一次
    2. 美团 walle 多渠道打包,通过一个 apk 生成多个渠道,多渠道推荐方案

    * 第三方工具( share install 、U-Link 、deeplink 等都有成熟的方案)

    我们现在用的是两个相结合的方案,应用商店用的是 walle 打包,通过渠道信息就可以统计各商的日活和新增数据。
    然后分享推广使用的是分享渠道+u-link 结合的方案,可以稳定回溯用户的整个分享拉新流程。
    laravel
        29
    laravel  
    OP
       2022-03-28 16:46:08 +08:00
    @keyword233 重新打包?但是打包速度快吗?还是直接修改 apk ,怎么修改?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     844 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 19:30 PVG 03:30 LAX 11:30 JFK 14:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86