返回 Skill 列表
extension
分类: 其它无需 API Key

友盟应用资产查询

友盟应用资产查询技能,支持通过 umeng-cli call 调用友盟 OpenAPI(gateway.open.umeng.com)的 3 个只读资产接口,覆盖 App 总数、App 列表、小程序列表及小程序总数查询(跨 com.umeng.uapp 与 com.umeng.umini 两个命名空间)。当用户需要查询"我有多少应用 / 列出我所有的 App / 我的小程序列表 / 应用资产概况"时使用。

person作者: user_fc9923d6hubcommunity

友盟应用资产查询技能

umeng-cli 是友盟提供的命令行程序,所有操作通过执行 umeng-cli call 命令完成。

查询当前登录账号下的 App 资产(数量 / 列表)与 小程序资产(列表 / 数量),覆盖两类核心需求:

  • App 资产:App 总数(一次调用直出)、App 列表(分页)
  • 小程序资产:小程序列表(分页,totalCount 随列表响应返回)

3 个只读查询接口,跨 2 个命名空间(com.umeng.uapp + com.umeng.umini)。本 Skill 为资产发现型 —— appkey 是"输出"不是"输入",无需用户提供任何应用标识即可工作。

埋点上报: AI Agent 在阅读本 Skill 文档后,请执行以下命令进行调用埋点上报:

umeng-cli trace '{"skill_name":"umeng-cli-uapp-assets"}'

Appkey 维度打点: 本 Skill 为资产发现型,通常 Appkey 是输出而非输入;但若在任务上下文中出现 Appkey 的输入操作(例如用户主动提供某 Appkey 让你回查其归属),在拿到该 Appkey 之后、发起首个业务 API 调用之前,再追加执行一次带 appkey 的打点:

umeng-cli trace '{"skill_name":"umeng-cli-uapp-assets", "appkey":"<输入的Appkey>"}'

同一 Appkey 在同一会话中只打一次;若用户切换到新的 Appkey,需对新的 Appkey 再打一次。

前置条件:安装 umeng-cli

本 Skill 的所有调用都依赖 umeng-cli 命令行工具。使用本 Skill 前,请先确保已在本机安装。

检查是否已安装

umeng-cli --version

若提示 command not found 或类似错误,按下述方式安装。

安装方式

# 方式一:通过 npm 安装(推荐,自动安装 CLI + 内置 Skills)
npm install -g @umengfe/umeng-cli

# 方式二:通过官方安装脚本(仅安装 CLI 二进制 + Skills)
curl -fsSL https://raw.githubusercontent.com/umeng/umeng-cli/main/scripts/install.sh | sh

安装完成后再次运行 umeng-cli --version 验证。

更多安装说明、卸载、账号管理等参考 umeng-cli SKILL 或项目主页 https://github.com/umeng/umeng-cli

适用场景与触发词

  • 用户询问"我一共注册了多少个应用?"
  • 用户询问"列出我所有的 App / 我的 App 列表"
  • 用户询问"我有多少小程序 / 我的小程序列表"
  • 用户询问"同时列出我的 App 和小程序"
  • 用户需要按平台(android / iphone / mini_wechat 等)过滤资产
  • 用户在使用其他 skill 前需要先"发现"appkey
  • 关键词:应用列表、App 列表、小程序列表、应用数量、小程序数量、应用资产、我的应用、我的小程序、有哪些 App、有哪些小程序

鉴权方式

  • authType: umeng-aksk(友盟 OpenAPI AK/SK 签名,HMAC-SHA1)
  • baseUrl: https://gateway.open.umeng.com/openapi
  • endpoint 路径规则param2/1/com.umeng.uapp/<接口名>param2/1/com.umeng.umini/<接口名>
  • AK/SK 由 umeng-cli login 自动获取并加密缓存,无需手动配置 apiKey / apiSecurity

登录状态检查

umeng-cli whoami

登录要求

当接口返回未登录或登录态过期时,需要执行 umeng-cli login --no-qr 进行登录。

AI Agent 执行登录的正确方式:

umeng-cli login --no-qr 会在输出登录链接后阻塞等待用户在浏览器中完成登录,因此 AI Agent 应该以后台模式is_background: true)运行此命令,这样可以立即拿到输出中的登录链接并展示给用户,无需等待命令结束。命令会在用户完成登录后自动退出并保存凭证。

如果终端不支持显示二维码(如 AI Agent 终端、SSH 远程终端等),可以使用 --no-qr 参数,仅输出可点击的登录链接:

umeng-cli login --no-qr

# 输出:
# 🔄 正在生成登录链接...
# ✅ 登录链接生成成功
#
# 🔗 请点击或复制以下链接完成登录:
#
#   👉 点击此处登录(OSC 8 可点击链接)
#   [点击登录](https://passport.umeng.com/login?redirectURL=...)
#   https://passport.umeng.com/login?redirectURL=...
#
# ⏳ 等待登录...
# ✅ 授权成功!
# ✅ 登录完成!

不需要 appkey

本 Skill 不接受 appkey 作为入参 —— 所有 3 个接口都以"当前登录账号"为作用域,返回账号下全部 App / 小程序。appkey(或小程序的 dataSourceId)是本 Skill 的输出,通常用作下游 Skill(umeng-cli-uapp-core-index / umeng-cli-uapp-channel-version / umeng-cli-uapp-retention / umeng-cli-uapp-event 等)的输入。

通用调用格式

umeng-cli call '{
  "name": "<接口名>",
  "api": {
    "method": "GET",
    "baseUrl": "https://gateway.open.umeng.com/openapi",
    "endpoint": "param2/1/<namespace>/<接口名>",
    "authType": "umeng-aksk"
  }
}' '<参数JSON>'
  • 3 个接口均为 GET 方法
  • <namespace>com.umeng.uappcom.umeng.umini

核心概念

两命名空间并列

| 资产类型 | 命名空间 | 总数接口 | 列表接口 | |---------|---------|----------|----------| | App(Android / iOS) | com.umeng.uapp | umeng.uapp.getAppCount一次调用直出) | umeng.uapp.getAppList | | 小程序(微信 / 支付宝 / 字节 / 百度 / QQ / H5 等) | com.umeng.umini | 无独立总数接口,走 getAppList.totalCount | umeng.umini.getAppList |

分页参数差异表 ⚠️

这是本 Skill 最容易出错的地方 —— 两个命名空间的分页参数名完全不同

| 维度 | umeng.uapp.getAppList | umeng.umini.getAppList | |------|-------------------------|--------------------------| | 页码参数 | page(从 1 开始) | pageIndex(从 1 开始) | | 页大小参数 | perPage(最大 100) | pageSize(默认 30) | | 响应总页数 | totalPage ✅ | 无直接字段(由 totalCountpageSize 客户端换算) | | 响应总条数 | totalCount ❌(要取总数走 getAppCount) | appListDTO.totalCount ✅ | | 响应当前页 | page | appListDTO.currentPage | | 数据数组 | appInfos[](根级) | appListDTO.data[](嵌套一层) |

响应字段别名表

两个 getAppList 的 DTO 字段语义相同但命名不同,客户端合并列表时需做字段映射:

| 含义 | uapp.getAppList.appInfos[] | umini.getAppList.appListDTO.data[] | |------|------------------------------|--------------------------------------| | 唯一标识(即 AppKey) | appkey | dataSourceId | | 应用名称 | name | appName | | 平台 | platformandroid / iphone) | platformmini_wechat / mini_alipay / mini_bytedance / mini_baidu / mini_qq / mini_game_wechat / html_5 等) | | 一级分类 | category | firstLevel | | 二级分类 | 无 | secondLevel | | 创建时间 | createdAt | gmtCreate | | 更新时间 | updatedAt | 无 | | 是否游戏 | useGameSdk(boolean) | 无(小程序通过 mini_game_wechat 等平台标识) | | 是否关注 | popular(0/1) | 无 | | 账号名 | 无 | userName |

接口路由表

| 接口 | Endpoint | 功能 | |------|----------|------| | umeng.uapp.getAppCount | param2/1/com.umeng.uapp/umeng.uapp.getAppCount | 获取账户下 App 总数(一次调用直出 count) | | umeng.uapp.getAppList | param2/1/com.umeng.uapp/umeng.uapp.getAppList | 获取账户下 App 列表(分页,page/perPage) | | umeng.umini.getAppList | param2/1/com.umeng.umini/umeng.umini.getAppList | 获取账户下小程序列表(分页,pageIndex/pageSize;响应含 totalCount) |

与本 skill 相邻能力的边界

| 能力 | 归属 Skill | 说明 | |------|-----------|------| | App 某日 / 趋势 DAU / 新增 / 启动等核心指标 | umeng-cli-uapp-core-index | 本 Skill 仅出"应用清单",不出任何指标 | | App 版本列表 / 渠道列表(按 appkey) | umeng-cli-uapp-channel-version | 本 Skill 仅管账户层级,不管 App 内部渠道/版本 | | App 留存率 | umeng-cli-uapp-retention | — | | App 自定义事件 | umeng-cli-uapp-event | — | | APM(崩溃/性能) | umeng-cli-uapm | — | | 小程序指标(getOverview / getTotalUser / getRetentionByDataSourceId 等) | 未来独立 umeng-cli-umini-* Skill | 本 Skill 仅覆盖小程序"清单+数量",不覆盖小程序指标 |


操作

1. 获取 App 总数 (getAppCount)

获取当前账户下所有 App 的数量。无需任何参数,一次调用直出。

参数说明:无

调用示例

umeng-cli call '{
  "name": "umeng.uapp.getAppCount",
  "api": {
    "method": "GET",
    "baseUrl": "https://gateway.open.umeng.com/openapi",
    "endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getAppCount",
    "authType": "umeng-aksk"
  }
}' '{}'

返回格式

{
  "count": 893
}

返回字段说明

| 字段 | 类型 | 说明 | |------|------|------| | count | integer | 账户下 App 总数 |

💡 本接口是旧 --count(App)的直接等价实现;getAppListtotalCount,想拿 App 真实总数只能走本接口,不要用 totalPage × perPage 估算。


2. 获取 App 列表 (uapp.getAppList)

分页获取账户下 App 列表。

参数说明

| 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | page | integer | 否 | 1 | 页号,从 1 开始 | | perPage | integer | 否 | 10 | 每页记录数(最大 100) |

调用示例

# 默认首页
umeng-cli call '{
  "name": "umeng.uapp.getAppList",
  "api": {
    "method": "GET",
    "baseUrl": "https://gateway.open.umeng.com/openapi",
    "endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getAppList",
    "authType": "umeng-aksk"
  }
}' '{}'

# 指定第 2 页,每页 100 条
umeng-cli call '{"name":"umeng.uapp.getAppList","api":{"method":"GET","baseUrl":"https://gateway.open.umeng.com/openapi","endpoint":"param2/1/com.umeng.uapp/umeng.uapp.getAppList","authType":"umeng-aksk"}}' '{"page":2,"perPage":100}'

返回格式

{
  "appInfos": [
    {
      "appkey": "4f83c5d852701564c0000011",
      "name": "友盟SDK",
      "platform": "android",
      "category": "工具",
      "createdAt": "2012-04-10 10:00:00",
      "updatedAt": "2026-04-28 09:00:00",
      "useGameSdk": false,
      "popular": 1
    }
  ],
  "totalPage": 9,
  "page": 1
}

返回字段说明

| 字段 | 类型 | 说明 | |------|------|------| | appInfos[].appkey | string | 应用 ID(AppKey),下游 skill 的输入 | | appInfos[].name | string | App 名称 | | appInfos[].platform | string | 平台:android / iphone | | appInfos[].category | string | 应用分类(单级) | | appInfos[].createdAt | string | 创建时间 | | appInfos[].updatedAt | string | 更新时间 | | appInfos[].useGameSdk | boolean | 是否为游戏 | | appInfos[].popular | integer | 是否关注(0/1) | | totalPage | integer | 总页数 | | page | integer | 当前页号 |

⚠️ 本接口响应没有 totalCount 字段。若需要 App 总数,必须单独调 getAppCount,不要用 (totalPage-1) × perPage + appInfos.length 估算。


3. 获取小程序列表 (umini.getAppList)

分页获取账户下小程序列表。响应同时返回小程序总数 totalCount,因此不需要独立的"小程序数量"接口。

参数说明

| 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | pageIndex | integer | 否 | 1 | 页号,从 1 开始(注意不是 page) | | pageSize | integer | 否 | 30 | 每页记录数(注意不是 perPage) |

调用示例

# 默认首页
umeng-cli call '{
  "name": "umeng.umini.getAppList",
  "api": {
    "method": "GET",
    "baseUrl": "https://gateway.open.umeng.com/openapi",
    "endpoint": "param2/1/com.umeng.umini/umeng.umini.getAppList",
    "authType": "umeng-aksk"
  }
}' '{}'

# 只为拿"小程序总数":pageSize=1 足矣
umeng-cli call '{"name":"umeng.umini.getAppList","api":{"method":"GET","baseUrl":"https://gateway.open.umeng.com/openapi","endpoint":"param2/1/com.umeng.umini/umeng.umini.getAppList","authType":"umeng-aksk"}}' '{"pageIndex":1,"pageSize":1}'

# 正常分页(第 3 页,每页 100)
umeng-cli call '{"name":"umeng.umini.getAppList","api":{"method":"GET","baseUrl":"https://gateway.open.umeng.com/openapi","endpoint":"param2/1/com.umeng.umini/umeng.umini.getAppList","authType":"umeng-aksk"}}' '{"pageIndex":3,"pageSize":100}'

返回格式

{
  "data": {
    "data": [
      {
        "dataSourceId": "5e8c6dea978eea071c37c682",
        "appName": "示例小程序",
        "platform": "mini_wechat",
        "firstLevel": "公共交通与出行",
        "secondLevel": "公共交通",
        "gmtCreate": "2020-03-10 10:00:00",
        "userName": "alice@example.com"
      }
    ],
    "totalCount": 42,
    "currentPage": 1
  },
  "msg": "",
  "code": 0,
  "success": true
}

返回字段说明

| 字段 | 类型 | 说明 | |------|------|------| | data.data[].dataSourceId | string | 小程序的 AppKey(下游 skill 的输入) | | data.data[].appName | string | 小程序名称 | | data.data[].platform | string | 小程序平台(见下文枚举表) | | data.data[].firstLevel | string | 一级分类 | | data.data[].secondLevel | string | 二级分类 | | data.data[].gmtCreate | string | 创建时间 | | data.data[].userName | string | 账号名 | | data.totalCount | integer | 小程序总数(一次调用即得) | | data.currentPage | integer | 当前页号 |

💡 想要小程序总数?pageSize=1 调一次本接口,直接读 data.totalCount 即可,无需翻页。


公共约束

分页差异速查(核心)

| 接口 | 页码字段 | 页大小字段 | 总数字段 | 数据数组路径 | |------|----------|------------|----------|---------------| | uapp.getAppList | page | perPage(最大 100) | (走 getAppCount) | appInfos[](根级) | | umini.getAppList | pageIndex | pageSize(默认 30) | data.totalCount | data.data[](嵌套) | | getAppCount | — | — | count(直出) | — |

平台枚举与客户端过滤

本 Skill 接口不支持服务端按平台过滤。旧 skill 的 --platform android/ios/mini 由客户端后过滤实现。枚举参考:

| 过滤需求 | uapp.appInfos[].platform 取值 | umini.data.data[].platform 取值 | |----------|----------------------------------|-----------------------------------| | Android App | android | — | | iOS App | iphone | — | | 微信小程序 | — | mini_wechat | | 支付宝小程序 | — | mini_alipay | | 字节跳动小程序 | — | mini_bytedance | | 百度小程序 | — | mini_baidu | | QQ 小程序 | — | mini_qq | | 微信小游戏 | — | mini_game_wechat | | H5 | — | html_5 |

jq 客户端过滤示例

# 过滤 Android App
umeng-cli call '...getAppList...' '{"page":1,"perPage":100}' \
  | jq '.appInfos[] | select(.platform == "android")'

# 过滤所有微信系小程序
umeng-cli call '...umini.getAppList...' '{"pageIndex":1,"pageSize":100}' \
  | jq '.data.data[] | select(.platform | startswith("mini_wechat") or . == "mini_game_wechat")'

# 模糊匹配所有小程序(旧 `--platform mini`)
umeng-cli call '...umini.getAppList...' '{"pageIndex":1,"pageSize":100}' \
  | jq '.data.data[] | select(.platform | startswith("mini"))'

翻页全量遍历

本 Skill 接口**不提供"一次拉完所有"**的能力。客户端如需全量:

  • App:先 getAppCount 拿总数 → 按 perPage=100 计算总页数 ceil(count / 100) → 循环 page=1..N
  • 小程序:首次调用 pageSize=100, pageIndex=1totalCount → 计算 ceil(totalCount / 100) → 循环 pageIndex=2..N

输出格式

umeng-cli call 原生输出 JSON。旧 skill 的 --output table / --output json 开关不再存在,Markdown 表格由 LLM 按需在摘要时整理

典型工作流

工作流 1:App 总数(1 次调用直出)

需求:"我一共注册了多少个应用?"
1. getAppCount()   ← 无参
2. 读响应 count
3. 回复:"你在友盟注册了 <count> 个 App。"

工作流 2:小程序总数(1 次调用,pageSize=1)

需求:"我有多少小程序?"
1. umini.getAppList(pageIndex=1, pageSize=1)
2. 读 data.totalCount
3. 回复:"你在友盟注册了 <totalCount> 个小程序。"

工作流 3:App + 小程序合并清单(对应旧 --list-all)

需求:"把我所有的 App 和小程序都列出来"
1. uapp.getAppList(page=1, perPage=100)     ← 并行
   umini.getAppList(pageIndex=1, pageSize=100) ← 并行
2. 客户端合并两份 data,字段映射:
   - uapp.appInfos[].appkey ↔ umini.data.data[].dataSourceId → 统一字段 "key"
   - uapp.appInfos[].name ↔ umini.data.data[].appName → 统一字段 "name"
   - uapp.appInfos[].platform ↔ umini.data.data[].platform → 统一字段 "platform"
3. 若单页未拉完(totalPage>1 或 totalCount>100),按"翻页全量遍历"循环
4. 摘要:总 App 数 / 总小程序数 / 按平台分组计数

工作流 4:按平台过滤(对应旧 --platform)

需求:"列出我所有的 Android App"
1. getAppCount() 拿 App 总数
2. 循环 uapp.getAppList(page=1..N, perPage=100) 拉全
3. jq/客户端过滤 appInfos[] 中 platform == "android" 的项
4. 摘要:Android App 数量、名称与 appkey 列表

需求:"列出我的微信小程序"
1. umini.getAppList(pageIndex=1, pageSize=1) 拿 totalCount
2. 按 totalCount 循环拉全
3. 客户端过滤 platform == "mini_wechat"
4. 摘要:微信小程序数量与 dataSourceId 列表

边界条件与错误处理

  • 账户下无任何 AppgetAppCount 返回 count=0getAppList 返回 appInfos=[]totalPage=0
  • 账户下无任何小程序umini.getAppList 返回 data.data=[]data.totalCount=0
  • page / pageIndex 越界:返回空数组;应先由 getAppCount / totalCount 预判最大页数
  • perPage > 100uapp.getAppList 会被服务端截断到 100;客户端应主动限制在 100 以内
  • 混淆分页参数uapp.getAppListpageIndex/pageSize 会被忽略并退化为默认首页;umini.getAppListpage/perPage 同理。参数名必须严格区分
  • 估算 App 总数禁止totalPage × perPage 估算(旧 assets.py 里的估算逻辑已由 getAppCount 替代)
  • 按平台过滤:接口不支持服务端过滤;客户端用 jq / LLM 后处理
  • 未登录 / 登录态过期:执行 umeng-cli login --no-qr(AI Agent 以后台模式运行并将链接展示给用户)
  • 小程序与 App 合并appkeydataSourceId 都是"AppKey",但分别在不同命名空间注册,合并清单时无需去重

典型问法 → 接口/参数映射

| 典型问法 | 调用 | 参数 & 后处理 | |----------|------|---------------| | "我一共注册了多少个 App?" | getAppCount | 无参;读 count | | "我有多少小程序?" | umini.getAppList | pageIndex=1,pageSize=1;读 data.totalCount | | "我有多少应用(含 App + 小程序)?" | getAppCount + umini.getAppList | 两次调用求和 | | "列出我所有的 App" | uapp.getAppList | page=1,perPage=100(可能需翻页) | | "列出我所有的 Android App" | uapp.getAppList + 客户端过滤 | platform == "android" | | "列出我所有的 iOS App" | uapp.getAppList + 客户端过滤 | platform == "iphone" | | "我的小程序列表" | umini.getAppList | pageIndex=1,pageSize=100 | | "我的微信小程序" | umini.getAppList + 客户端过滤 | platform == "mini_wechat" | | "我的字节跳动小程序" | umini.getAppList + 客户端过滤 | platform == "mini_bytedance" | | "同时列出我的 App 和小程序" | uapp.getAppList + umini.getAppList | 客户端合并(字段别名) | | "下一页" | 对应 getAppList | page+1pageIndex+1 | | "某 App 的 DAU / 启动次数 / 留存" | 指向 umeng-cli-uapp-core-index / -retention 等 | 用本 Skill 拿到的 appkey 作为输入 | | "小程序的累计用户 / 分享数据" | 指向未来 umeng-cli-umini-* Skill | 用本 Skill 拿到的 dataSourceId 作为输入 |

旧 skill 参数等价对照

uapp-assets 的 CLI 参数与新接口的等价关系:

| 旧 CLI 参数 | 新接口调用 | |-------------|------------| | --count | getAppCount(等价直出 App 总数) | | --list-apps | uapp.getAppList(默认首页) | | --list-apps --page N | uapp.getAppListpage=N | | --list-apps --per-page M(最大 100) | uapp.getAppListperPage=M | | --list-apps --platform android | uapp.getAppList + 客户端 jq select(.platform == "android") | | --list-apps --platform iphone | 同上,.platform == "iphone" | | --list-apps --platform ios | 同上,.platform == "iphone"ios 是别名) | | --list-minis | umini.getAppList(默认首页) | | --list-minis --page N | umini.getAppListpageIndex=N注意不是 page) | | --list-minis --per-page M | umini.getAppListpageSize=M注意不是 perPage) | | --list-minis --platform mini | umini.getAppList + 客户端 jq select(.platform \| startswith("mini")) | | --list-minis --platform mini_bytedance | 同上,.platform == "mini_bytedance" | | --list-all | 并行 uapp.getAppList + umini.getAppList,客户端合并(见工作流 3) | | --output json | umeng-cli call 原生输出即 JSON,无需额外开关 | | --output table | 由 LLM 按需从 JSON 整理为 Markdown 表格 | | --config <path> | 不再支持;登录态由 umeng-cli login 管理 |

注意事项

  • 本 Skill 仅覆盖 3 个只读查询接口getAppCount + uapp.getAppList + umini.getAppList;不涉及任何写入或编辑
  • 3 个接口均为 GET 方法;均不需要 appkey(账户级接口)
  • 分页参数命名严格区分uapppage/perPageuminipageIndex/pageSize;混用会被忽略
  • App 总数走 getAppCountuapp.getAppListtotalCount,禁止翻页估算
  • 小程序总数走 umini.getAppList.data.totalCountpageSize=1 即可拿到
  • 字段别名appkeydataSourceId / nameappName / createdAtgmtCreate;合并清单时记得映射
  • 平台过滤:接口无服务端过滤参数,由客户端 jq / LLM 后处理;uapp 平台只有 android/iphone,小程序平台以 mini_* / html_5 开头
  • perPage 上限 100uapp.getAppList 服务端截断;umini 未见明确上限但建议同值
  • 小程序指标查询不在本 Skillumeng.umini.getOverview / getTotalUser / getRetentionByDataSourceId 等归未来的 umeng-cli-umini-* Skill
  • App 指标查询不在本 Skill:DAU / 新增 / 启动 / 留存 / 渠道 / 版本 / 事件 / APM 等均由对应 umeng-cli-uapp-* / umeng-cli-uapm 处理

快速参考

| # | 接口 | Endpoint(相对 baseUrl) | 必填参数 | 可选参数 | 用途 | |---|------|--------------------------|----------|----------|------| | 1 | umeng.uapp.getAppCount | param2/1/com.umeng.uapp/umeng.uapp.getAppCount | — | — | App 总数(直出 count) | | 2 | umeng.uapp.getAppList | param2/1/com.umeng.uapp/umeng.uapp.getAppList | — | page(默认 1)/ perPage(默认 10,最大 100) | App 列表(响应 appInfos[] + totalPage + page无 totalCount) | | 3 | umeng.umini.getAppList | param2/1/com.umeng.umini/umeng.umini.getAppList | — | pageIndex(默认 1)/ pageSize(默认 30) | 小程序列表(响应 data.data[] + data.totalCount + data.currentPage) |

完整 uapp namespace 其他接口(如 getYesterdayData / getRetentions / event.list 等)请参考 umeng-cli/reference/openapi/uapp.md;完整 umini namespace 接口请参考 umeng-cli/reference/openapi/umini.md。 App 核心指标查询请使用 umeng-cli-uapp-core-index;渠道/版本请使用 umeng-cli-uapp-channel-version;留存请使用 umeng-cli-uapp-retention;事件请使用 umeng-cli-uapp-event;APM 请使用 umeng-cli-uapm