更新记录

1.0.1(2026-09-17) 下载此版本

  • 支持 petrealm://pages/index/index?code=XXXX 这类 deep link,结果里单独给 deeplink / deeplinkParams.code
  • 新增 rememberLaunchUrl,可把 plus.runtime.arguments 交给插件解析
  • Play referrer 与本次唤起 URL 同时存在时不再互相覆盖

平台兼容性

uni-app(4.27)

Vue2 Vue3 Vue3插件版本 Chrome Safari app-vue app-nvue Android Android插件版本 iOS iOS插件版本 鸿蒙
- 1.0.1 - - - - 5.0 1.0.1 13 1.0.1 -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

fz-install-referrer

1.0.1

读取 App 安装 / 打开时的来源。Android 走 Play Install Referrer,两端都解析 Deep Link。插件自己不上报,字段名也不写死,source / code / utm_source 宿主自己取。

拷到 uni_modules 即可。UTS 必须打自定义基座或正式包。

环境

要求
HBuilderX 4.27+
工程 uni-app Vue3
Android minSdk 21,依赖 com.android.installreferrer:installreferrer:2.2(插件已带)
iOS 13.0+

Android 权限 BIND_GET_INSTALL_REFERRER_SERVICE 由插件合并。iOS 无额外权限。Scheme / Universal Link 在宿主 manifest 里自己配。

"android": {
  "schemes": "yourapp"
}

iOS urltypes 同样填 yourapp

接入

  1. 复制 uni_modules/fz-install-referrer 到工程。
  2. 制作自定义调试基座。
  3. App.vueonShow 里调用。冷启动参数不要等到内页再读。
import { getInstallAttribution, rememberLaunchUrl } from '@/uni_modules/fz-install-referrer'

export default {
  async onShow() {
    // #ifdef APP-PLUS
    const args = plus.runtime.arguments
    if (args) rememberLaunchUrl(args)

    const attr = await getInstallAttribution()
    const source = attr.deeplinkParams.source || attr.params.source || attr.params.utm_source || ''
    console.log(attr, source)
    // #endif
  }
}

channel === 'none' 是正常结果,不要当失败弹 Toast。跳页继续用 plus.runtime.arguments,插件不管路由。

API

rememberLaunchUrl(url: string): void
getInstallAttribution(): Promise<InstallAttribution>

rememberLaunchUrl 用来接 plus.runtime.arguments。必须带 ://,空串和 { / [ 开头的 Intent JSON 会丢掉。部分机型自定义 scheme 只出现在 arguments 里,不传可能解析不到。

getInstallAttribution 返回:

字段 说明
platform android / ios / web
channel play_referrer / deeplink / none
raw 主通道原文
params raw 拆出的 query
deeplink 本次唤起 URL,没有就是 ''
deeplinkParams deeplink 拆出的 query
clickTimestampMs Play 点击时间,其它为 0
installTimestampMs Play 开始安装时间,其它为 0

Android 有 Play referrer 时 channelplay_referrerdeeplink 仍单独保留。没有 referrer 但有启动 URL 则为 deeplink。Play 连不上或超时不抛错,回退 Deep Link 或 none。H5 返回 platform: 'web', channel: 'none'

query

?a=1&b=2 拆,叫什么都可以:

yourapp://pages/index/index?source=XXXX
→ deeplinkParams.source === 'XXXX'

Play 商店链接自己带 referrer:

https://play.google.com/store/apps/details?id=包名&referrer=source%3DXXXX

平台

Android iOS
未安装去商店再打开 链接带 referrer= 能读到 读不到商店来源
已安装被链接打开 Intent + arguments Scheme / Universal Link / arguments
HBuilderX / 侧载 一般是空,或 organic 无商店 referrer

测试

自定义基座 + 真机。

Deep Link:配置 scheme 后打开 yourapp://pages/index/index?source=TEST123deeplinkParams.source 应为 TEST123

Play Referrer:必须从 Google Play 安装,链接带 referrer=,卸载后再用该链接装。HBuilderX 直接安装读不到。

FAQ

uts 插件编译失败,无法使用
没打进当前基座。改过插件要重新制作自定义基座。

基座里 referrer 是空的
只有带 referrer 的商店安装才会写入。侧载、覆盖安装经常是空的,或 utm_source=google-play&utm_medium=organic

iOS 为什么没有商店来源
系统不会把 App Store 活动参数传给装完后的 App。已安装用 Deep Link。

每次 onShow 都会拿到旧的 Play referrer
插件不做去重。是否只报一次由宿主自己用 storage 控制。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 使用 Play Install Referrer 库自带的 BIND_GET_INSTALL_REFERRER_SERVICE。iOS 不申请额外权限;Universal Link 需宿主自行配置 Associated Domains。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

不采集通讯录、不读取广告 ID、不上传数据。Android 仅向本机 Google Play 商店服务查询安装 referrer 字符串;iOS 仅读取本次唤起 App 的 URL。插件无自有服务器,不发起网络请求。上报到谁由宿主 App 自己决定。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告。无统计 SDK、无开屏/插屏/横幅。

许可协议

MIT协议

暂无用户评论。