V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
laravel
V2EX  ›  程序员

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

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

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

    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
    janus77
        15
    janus77  
       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   ·   实用小工具   ·   5337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 105ms · UTC 09:09 · PVG 17:09 · LAX 01:09 · JFK 04:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.