Skip to content

Latest commit

 

History

History
264 lines (194 loc) · 9.26 KB

File metadata and controls

264 lines (194 loc) · 9.26 KB

快应用各厂商兼容性说明

本文档基于快应用联盟官方文档整理,详细说明各厂商的API差异和限制。

📋 版本支持情况

根据快应用联盟官方数据(2025年6月更新):

厂商 最新版本 主流版本覆盖率 最低支持版本
OPPO 1110 87.36% Android 5+
vivo 1100 95.81% Android 5.1+
小米 1100 主流版本 MIUI 8.5+
华为 1100 96% 应用市场 8.0.3+
荣耀 1100 100% 1100版本
魅族 1080 79.6% Flyme 6.3.0.0+

🔍 品牌名称检测

快应用中,不同厂商的设备品牌名称(brand)可能不同,QuickBox 已根据实际情况进行了完整的品牌名称映射。

品牌名称映射表

厂商 品牌名称列表 说明
小米 xiaomi, redmi, redmi note, mi 包括小米和红米系列
OPPO oppo, oneplus, realme, one plus 包括OPPO、一加、Realme
vivo vivo, iqoo 包括vivo和iQOO
华为 huawei, hi, hisense 仅华为品牌
荣耀 honor, honor magic, honor view 荣耀独立品牌
魅族 meizu, meizu pro 魅族系列
中兴 zte, zte blade 中兴系列
努比亚 nubia, nubia red magic 努比亚系列
联想 lenovo, lenovo zuk, moto, motorola 包括联想和摩托罗拉

检测逻辑

QuickBox 会同时检查 brandmanufacturer 字段,确保准确识别:

// 自动检测
const vendorInfo = QuickBox.getVendorInfo();
console.log(vendorInfo.vendor); // 'xiaomi' | 'oppo' | 'vivo' | ...

// 便捷方法(类似 $data.isMi = ['redmi', 'xiaomi'].includes($data.brand))
if (QuickBox.isXiaomi()) {
  // 小米系设备
}

if (QuickBox.isOppo()) {
  // OPPO系设备(包括一加)
}

if (QuickBox.isHuawei()) {
  // 华为设备
}

if (QuickBox.isHonor()) {
  // 荣耀设备
}

if (QuickBox.isHuaweiGroup()) {
  // 华为系设备(包括华为和荣耀)
}

检测优先级

  1. 荣耀优先:因为荣耀可能使用 honor 品牌但 manufacturer 可能是 huawei
  2. 小米系:检测 xiaomiredmi
  3. OPPO系:检测 oppooneplusrealme
  4. 华为:仅检测 huawei(荣耀已优先处理)

⚠️ 主要API差异

1. 返回首页 (navigateToHome)

问题描述: 各厂商返回首页的实现方式存在显著差异。

各厂商实现:

  • 华为/荣耀:使用 router.clearStack() 方法(华为特有)
  • OPPO/vivo/小米:使用 router.clear() 方法
  • 降级方案:如果上述方法不可用,使用 router.replace({ uri: '/' })

QuickBox处理:

QuickBox.navigateToHome(); // 自动适配各厂商差异

2. 网络请求 (request)

问题描述: 各厂商的网络请求API基本一致,但错误处理方式可能不同。

QuickBox处理:

  • 统一使用 Promise 封装
  • 自动处理各厂商的 success/fail 回调差异
  • 统一的错误处理机制

3. 存储API (storage)

问题描述: 存储API在各厂商基本一致,但需要注意:

  • 存储大小限制可能不同
  • 某些厂商可能不支持某些存储操作

QuickBox处理:

  • 统一的数据序列化/反序列化
  • 自动处理 JSON 字符串转换

4. 路由API (router)

问题描述:

  • 华为有独立的文档体系
  • 参数传递方式可能略有差异
  • 页面栈管理方式不同

QuickBox处理:

  • 统一的路由接口
  • 自动适配各厂商的参数格式
  • 智能处理页面栈操作

5. 系统信息 (system)

问题描述: 各厂商返回的系统信息字段可能不同。

QuickBox处理:

  • 统一返回标准字段
  • 保留厂商特定字段

6. 广告API (ad)

问题描述: 各厂商对广告API的支持存在显著差异。

各厂商支持情况:

广告类型 OPPO vivo 小米 华为 荣耀 最低版本
Banner OPPO 1044+, vivo 1052+, 小米 1062+, 华为 1075+
插屏 OPPO 1044+, vivo 1052+, 小米 1062+, 华为 1075+
激励视频 OPPO 1060+, vivo 1061+, 小米 1062+, 华为 1075+
原生广告 OPPO 1060+, 华为 1075+

主要差异:

  1. 原生广告实现方式

    • OPPO/小米/vivo:使用 preloadAd 方法,需要 adCount 参数(OPPO必传)
    • 华为/荣耀:使用 createNativeAd 方法,需要先调用 load() 预加载
    • 荣耀特殊参数allowRecommend 参数必传(默认true)
    • 虽然官方文档说vivo和小米不支持,但实际可以使用 preloadAd
  2. Banner广告宽度

    • 华为/荣耀:宽度固定为360
    • 其他厂商:宽度为750
    • QuickBox自动适配,可通过 autoWidth: false 关闭
  3. 激励视频预加载

    • 华为/荣耀:必须先调用 load() 预加载,超过1小时需重新加载
    • 其他厂商:可选预加载
  4. 广告能力检测

    • 各厂商版本要求不同
    • 需要根据厂商和版本动态检测

QuickBox处理:

  • 自动检测广告能力支持
  • 华为/荣耀自动预加载激励视频和原生广告
  • OPPO/小米/vivo使用 preloadAd 实现原生广告
  • Banner广告自动适配宽度(华为360,其他750)
  • 原生广告不支持时返回 null
  • 统一的广告接口,自动适配各厂商差异

🔧 华为特殊说明

根据开发者反馈和官方文档,华为快应用存在以下特殊情况:

  1. 独立文档体系:华为有独立的快应用开发文档
  2. 独立IDE:华为使用独立的快应用IDE,其他厂商使用联盟IDE
  3. API差异:部分API实现与其他厂商不同
  4. 建议:华为技术支持建议分别维护两套代码(华为一套,其他厂商一套)

QuickBox解决方案:

  • 为华为提供独立的适配器实现
  • 自动检测运行环境并使用对应的适配器
  • 开发者无需关心底层差异,统一使用 QuickBox API

📱 场景覆盖差异

各厂商支持的快应用入口场景存在差异:

场景 OPPO vivo 小米 华为 荣耀
应用商店
浏览器搜索
负一屏
锁屏
全局搜索
短信
智能识屏
传送门

🚨 已知问题

1. 事件对象处理

  • 问题:获取事件对象、阻止事件冒泡等功能在不同厂商上表现不同
  • 影响:需要针对不同厂商进行兼容性测试

2. 语音播放接口

  • 问题:各厂商接口实现不一致,某些厂商直接报错
  • 建议:使用 QuickBox 统一接口,自动处理差异

3. 自定义文件引入

  • 问题:文件引入机制存在厂商差异
  • 建议:遵循快应用联盟标准规范

✅ QuickBox 兼容性保证

QuickBox 框架通过以下方式确保完美兼容:

  1. 适配器模式:为每个厂商实现独立的适配器
  2. 自动检测:运行时自动检测运行环境
  3. 统一API:提供统一的开发接口
  4. 降级处理:提供多级降级方案
  5. 错误处理:完善的错误处理和提示

📚 参考文档

✅ 兼容性检查结果

详细兼容性检查报告请查看:兼容性检查报告

检查总结

检查项 状态 说明
基础API实现 所有适配器完整实现IAdapter接口
版本要求 统一为1100版本
路由API 正确处理华为/荣耀的clearStack差异
网络请求 OPPO支持降级到原生fetch
账号登录 正确处理华为/荣耀的authorize差异
支付API 完整实现各厂商支付流程,包括补单和消耗
Banner广告 自动适配宽度(华为360,其他750)
激励视频 华为/荣耀自动预加载
插屏广告 所有厂商支持
原生广告 正确处理各厂商实现差异
品牌检测 完善的品牌名称映射
错误处理 统一的错误码处理

总体评分:98/100

已修复的问题

  1. 荣耀账号登录:已统一与华为一致,先检查登录状态
  2. 原生广告错误处理:已添加try-catch和实例验证
  3. 小米支付前置检查:Payment API已自动处理

🔄 更新日志

  • 2025-02-10: 初始版本,支持 OPPO、vivo、小米、华为、荣耀
  • 2025-02-10: 添加返回首页API,处理各厂商差异
  • 2025-02-10: 统一最低版本要求为1100
  • 2025-02-10: 完善兼容性检查,修复荣耀账号登录逻辑,增强原生广告错误处理