小程序评分必须用open-type="navigateToMiniProgram"跳转微信官方评分页,禁用plus.runtime.openURL;uni-rate需设touchable=true并适配新旧基础库参数结构,按钮点击前须双重校验评分≥4星。

小程序端不能用 plus.runtime.openURL 跳 App Store,必须用 open-type="navigateToMiniProgram" 或微信官方评分 API;直接复用 App 端逻辑会白屏或报错。
微信小程序「评价引导」必须走 open-type="navigateToMiniProgram" 跳转
微信不开放外部应用商店跳转权限,itms-apps:// 在小程序里完全无效,真机调试也会静默失败。正确路径是:先跳转到微信官方「小程序评分页」,再由用户手动提交——这个页面由微信提供,无法自定义 UI,但合规且稳定。
- 调用方式必须是
<button open-type="navigateToMiniProgram" app-id="wx1234567890abcdef" path="pages/rate/rate">去评分</button> -
app-id必须填你自己的小程序 appId(不是公众号或服务号) -
path可选,但建议指向一个空白页(如pages/blank/blank),避免跳转后触发额外逻辑 - 该按钮必须放在弹窗内、且用户主动点击触发;自动跳转或
onLoad里调用会被拦截
uni-rate 在小程序端点击无响应?检查 touchable 和绑定写法
和 App 端一样,uni-rate 默认 touchable=false,在小程序里点不动是高频问题。但还有个隐藏坑:微信基础库 2.27.0+ 后,@change 回调的参数结构变了,老写法会丢值。
- 务必显式设置
:touchable="true" - 绑定要用
:value="score"+@change="onRateChange",别用v-model(小程序兼容性差) -
onRateChange里取值必须写成this.score = e.detail.value || e.detail?.value,因为部分基础库返回的是{ value: 4 },部分直接返回数字 - 尺寸建议设
size="28",小于 24px 在 iOS 微信里容易误触
「仅 ≥4 星可点击」的判断逻辑不能只靠 UI 禁用
单纯用 :disabled="score < 4" 不够——用户可能绕过评分直接点按钮,或在低分状态下改了 data 再点。业务上必须做双重校验。
- 按钮
@click里第一行就加if (this.score < 4) return - 跳转前再调一次
uni.navigateToMiniProgram,不要用plus.runtime(App 专用) - 跳转失败要捕获
fail回调并提示:“请更新微信至最新版本”——旧版基础库不支持该能力 - 别忘了在
onHide或弹窗关闭时重置score = 0,否则下次打开还带着上次的分
真正难的不是弹窗本身,而是微信对评分行为的强管控:没有回调、不能预填内容、不能自动提交。所有“引导”都只能停留在“让用户愿意点进去”,剩下的全看微信页面。别试图 hack,合规路径只有一条。


















