给鸿蒙 App 增加跳转应用市场评价的能力 —— store_redirect 的鸿蒙使用指南
给鸿蒙 App 增加跳转应用市场评价的能力 —— store_redirect 的鸿蒙使用指南
本文配套仓库:https://atomgit.com/oh-flutter/store_redirect(TAG:
2.0.4-ohos-1.0.0-beta.1,分支:feat/ohos_store_redirect_2.0.4),文中示例代码位于仓库example/目录。
引导用户给自己的应用评分,是提升商店排名与口碑最直接的手段。鸿蒙应用同样需要这个能力:把用户从应用内一步带到华为 AppGallery 的应用详情页,让他顺手打个分、写条评论。本文介绍如何使用鸿蒙化适配后的 Flutter 三方库 store_redirect,用一行代码在鸿蒙 App 内实现"跳转应用市场评价",并附上模拟器与真机的完整实测记录。
一、最终运行效果
应用启动后点击 Redirect App 按钮,直接拉起华为 AppGallery:
| 验证点 | 结果 |
|---|---|
| 点击 Redirect App 按钮,隐式 Want 拉起 AppGallery | 通过 |
| Flutter 页面在鸿蒙设备/模拟器上正常渲染 | 通过 |
hdc shell aa dump -a 确认前台为 com.huawei.hmsapp.appgallery | 通过 |

图一:demo 应用在 HUAWEI nova 12 Ultra 真机启动(HarmonyOS 6.1.0 / API 24)

图二:点击按钮后成功拉起华为 AppGallery
检查要点:
- 跳转结果可用
hdc shell aa dump -a取证,确认前台应用为com.huawei.hmsapp.appgallery;- 演示工程未上架 AppGallery,拉起后能否展示具体详情页由商店服务端决定,跳转机制本身不受影响(详见 FAQ Q1);
- 完整实测过程见"六、运行与验证"。
二、store_redirect 是什么
store_redirect 原库(pub.dev 2.0.4,fork 自 launch_review)是一个跳转到应用商店详情页的 Flutter 插件,支持 Google Play Store 与 Apple App Store。鸿蒙适配版在其基础上新增了 OpenHarmony / HarmonyOS 平台支持:跳转到华为 AppGallery 的应用详情页,并新增可选参数 ohosAppId。
几个对使用者友好的特点:
- 零权限:不需要在 module.json5 中申请任何权限;
- 自动定位:鸿蒙上不传参数时,自动取当前应用的 Bundle Name 查询详情页——"给自己应用求评分"的场景连参数都不用填;
- 跨平台一套代码:Android、iOS、鸿蒙三个平台共用同一个接口,运行在哪端就取哪端的参数。
接口说明:
| 名称 | 描述 | 类型 | 参数类型 | 返回值 | 必填 | 鸿蒙平台支持 |
|---|---|---|---|---|---|---|
| StoreRedirect.redirect | 跳转到应用商店的应用详情页 | method | androidAppId: String?, iOSAppId: String?, ohosAppId: String? | Future<void> | 否 | 是 |
三、环境准备
本文所有实测均在以下环境完成:
| 项 | 版本 | 说明 |
|---|---|---|
| Flutter(ohos 版) | 3.44.9+ohos-0.0.1-canary1 | 主验证环境 |
| Flutter(ohos 版) | 3.41.10-ohos-1.0.1 | 3.41 系 stable,零改动复验通过 |
| DevEco Studio | 26.0.0(26.0.0.821) | |
| 编译 SDK | 26.0.0(26) | |
| 模拟器 | API 26 | 验证一 / 验证二 |
| 真机 | HUAWEI nova 12 Ultra(ADA-AL10) | HarmonyOS 6.1.0.135 / API 24,验证三 |
两点提醒:
- 编译鸿蒙目标需要使用 ohos 版 Flutter SDK 与 DevEco Studio 配合,普通 Flutter SDK 无法编译 ohos 产物;
- 若在真机上安装应用报"此应用暂不支持在当前设备安装",是宿主工程的
compatibleSdkVersion高于设备 API 导致的,与插件无关,处理方式见 FAQ Q3。
四、引入依赖
进入工程目录,在 pubspec.yaml 中添加 git 依赖:
dependencies:
store_redirect:
git:
url: https://atomgit.com/oh-flutter/store_redirect.git
# ref: 根据下方表格选择不同框架适配的 TAG 版本
ref: 2.0.4-ohos-1.0.0-beta.1
执行命令拉取依赖:
flutter pub get
TAG 命名规则:原库版本-ohos-版本号-beta.x。
| Flutter 框架版本 | TAG 名称 | 分支名 |
|---|---|---|
| 3.44 | 2.0.4-ohos-1.0.0-beta.1 | feat/ohos_store_redirect_2.0.4 |
说明:该 TAG 已在 3.41 系 stable(
3.41.10-ohos-1.0.1)模拟器上以零改动复验通过,3.41 用户可放心使用。
五、代码接入
5.1 导入库
import 'package:store_redirect/store_redirect.dart';
5.2 跳转到当前应用(推荐)
StoreRedirect.redirect();
在鸿蒙设备上,未传 ohosAppId 时插件会通过 bundleManager 自动读取当前应用的 Bundle Name 去查询 AppGallery 详情页。"给自己的应用求评分"场景一行即可,无需任何配置。
5.3 指定 AppGallery 应用 ID
如果需要跳转到指定应用的详情页,传入 ohosAppId:
StoreRedirect.redirect(ohosAppId: "C123456789");
ohosAppId 支持两种写法,任选其一:
- 应用包名(Bundle Name),如
com.example.app; - AppGallery Connect 中应用的 APP ID(C 开头的数字串,如
C123456789),在 AGC 控制台"我的项目 → 应用信息"页可查。
5.4 跨平台一套代码
三个参数按平台取用,运行在哪端就取哪端,其余自动忽略:
StoreRedirect.redirect(
androidAppId: "com.iyaffle.rangoli", // Android:Google Play 包名
iOSAppId: "585027354", // iOS:App Store 数字 ID
ohosAppId: "C123456789", // 鸿蒙:AppGallery 应用 ID
);
5.5 实战:给应用加一个"去评分"入口
实际业务中常见的做法是在"设置 → 关于"页放一个常驻入口,或在用户完成关键动作后弹出引导。下面是一个可直接使用的"去评分"按钮:
import 'package:flutter/material.dart';
import 'package:store_redirect/store_redirect.dart';
class RateButton extends StatelessWidget {
const RateButton({super.key});
Widget build(BuildContext context) {
return ElevatedButton.icon(
icon: const Icon(Icons.star),
label: const Text('去评分'),
onPressed: () {
// 鸿蒙上自动定位当前应用,无需传参
StoreRedirect.redirect();
},
);
}
}
触发时机的产品建议:放在用户完成一次完整体验之后(如完成首单、连续活跃若干天),或作为"关于"页的常驻入口;避免应用首次启动就弹跳转,体验较差。
六、运行与验证
以下为 demo 工程的三轮实测记录,demo 的 Bundle Name 为 com.example.store_redirect_example。
6.1 验证一:3.44 canary 模拟器(API 26)
运行 demo:
cd example
flutter run
应用启动后点击 Redirect App 按钮:

图三:模拟器启动 demo,Flutter 页面正常渲染

图四:点击按钮后拉起 AppGallery(图中可见 AppGallery 的 ◀ demo 返回标记,说明由 demo 跳转而来)
实测结论:
| 验证点 | 结果 |
|---|---|
| 应用启动,Flutter 页面正常渲染 | 通过 |
| 点击 Redirect App 按钮,隐式 Want 拉起 AppGallery | 通过 |
hdc shell aa dump -a 确认前台为 com.huawei.hmsapp.appgallery | 通过 |
6.2 验证二:3.41 stable 模拟器复验
同一份 demo 代码在 3.41.10-ohos-1.0.1 模拟器上零改动复验:

图五:3.41 stable 模拟器复验,跳转 AppGallery 成功
适配层只依赖 @ohos/flutter_ohos 的标准插件接口,未使用任何 canary 专属特性,因此 3.41 与 3.44 两个 Flutter 版本均可直接使用。
6.3 验证三:nova 12 Ultra 真机实测(API 24)
| 设备项 | 值 |
|---|---|
| 机型 | HUAWEI nova 12 Ultra(ADA-AL10) |
| 系统版本 | HarmonyOS 6.1.0.135(SP8C00E120R2P6) |
| API 版本 | 24 |
| 分辨率 | 1224 × 2776 |
安装与启动:
# 构建 hap 后安装(真机安装对 SDK 版本有要求,见 FAQ Q3)
hdc install entry-default-signed.hap
# 启动 demo
hdc shell aa start -b com.example.store_redirect_example -a EntryAbility
# 模拟点击屏幕上的 Redirect App 按钮(坐标按实际设备调整)
hdc shell uitest uiInput click 611 1556
实测现象与图一、图二一致:Flutter 页面正常渲染,点击按钮后 AppGallery 被成功拉起,aa dump -a 确认前台应用为 com.huawei.hmsapp.appgallery。
三轮环境(3.44 canary 模拟器 / 3.41 stable 模拟器 / 真机 API 24)全部验证通过。
七、工作原理
整个调用链路如下:
Dart: StoreRedirect.redirect()
→ MethodChannel('store_redirect')
→ ArkTS: StoreRedirectPlugin.onMethodCall
→ 组装 Want 并 startAbility
→ 系统拉起 AppGallery 详情页
鸿蒙侧插件实现(ArkTS)核心只有两段。
一段是构造跳转 Want——store://appgallery.huawei.com 是 AppGallery 的官方 scheme,ohos.want.action.appdetail 是详情页 action:
const want: Want = {
action: 'ohos.want.action.appdetail',
uri: `store://appgallery.huawei.com/app/detail?id=${appId}`
};
context.startAbility(want).then(() => {
result.success(null);
}).catch((error: BusinessError) => {
result.error('ERROR', `Failed to open AppGallery for "${appId}": ${error.message}`, null);
});
另一段是未传 ohosAppId 时的兜底——通过 bundleManager 读取自身 Bundle Name 作为查询 ID:
bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
.then((bundleInfo: bundleManager.BundleInfo) => {
this.openAppGalleryDetail(bundleInfo.name, result);
})
startAbility 失败时(例如设备上没有 AppGallery),错误会通过 MethodChannel 回传到 Dart 侧,业务代码可以据此做降级处理,比如引导用户打开网页版商店。
八、常见问题
Q1:应用没有上架 AppGallery,跳转会怎样?
插件负责把 AppGallery 拉起,详情页能否展示具体应用由商店服务端决定。未上架的应用不会出现在详情页,建议先在 AppGallery Connect 完成上架(至少创建应用)再引导评分。跳转机制本身工作正常。
Q2:ohosAppId 到底填什么?去哪里获取?
两种都行:应用包名(Bundle Name,如 com.example.app),或 AppGallery Connect 中该应用的 APP ID(C 开头数字串)。路径:AGC 控制台 → 我的项目 → 选择应用 → 应用信息。未传该参数时自动使用当前应用包名。
Q3:真机安装 demo 时提示"此应用暂不支持在当前设备安装"?
这是宿主工程的 compatibleSdkVersion 高于真机 API 版本导致的安装校验失败,与插件无关。将工程的 compatibleSdkVersion 调整为不高于真机 API 的版本(如 6.1.0(23),注意保留带括号的旧格式)即可。本文配套仓库的 example 已用此配置在 nova 12 Ultra(API 24)上安装实测通过。
Q4:iOS 模拟器上点击没反应?
iOS 模拟器不支持跳转 App Store,需在真机上测试,这是原库的已知限制,鸿蒙侧不受影响。
Q5:能跳转到其他鸿蒙应用商店吗?
当前适配内置的是 AppGallery 详情页 action(ohos.want.action.appdetail)。其他商店若提供类似的 Want 或 scheme,可参考"七、工作原理"中的 Want 构造方式自行扩展插件,欢迎提 PR 共建。
Q6:什么时机引导评分比较合适?
推荐在用户完成一次完整价值体验之后(完成首单、达到某个里程碑、连续活跃若干天),或"设置 → 关于"页常驻入口;避免首启即弹,转化率低且伤体验。
九、结语
回顾一下:在 pubspec.yaml 中以 git TAG 引入 store_redirect,调用 StoreRedirect.redirect() 一行代码,即可在鸿蒙 App 内把用户带到 AppGallery 详情页完成评分引导;同一段代码在 Android 与 iOS 上也各自生效。插件零权限、自动定位当前应用,已在 3.44 canary、3.41 stable 与真机三轮环境实测通过。
更多推荐



所有评论(0)