Windows Flutter应用自定义URI Scheme开发可用但应用商店提交遭拒
解决Microsoft商店中Flutter应用自定义URI Scheme无法唤起的问题
- 显式在MSIX清单中声明URI Scheme
本地测试时包工具可能自动生成关联,但商店提交必须确保Package.appxmanifest(或通过Flutter的msix配置)里显式添加协议声明,否则商店打包后会丢失关联配置。在<Applications>下的<Application>节点中添加:
<Extensions> <uap:Extension Category="windows.protocol"> <uap:Protocol Name="myapp"> <uap:DisplayName>你的应用名称</uap:DisplayName> </uap:Protocol> </uap:Extension> </Extensions>
注意Name字段要和你使用的Scheme完全一致,大小写也不能出错。
- 确认runFullTrust权限配置的正确性
虽然已配置该权限,需确保它在Package.appxmanifest的正确节点下:
<Capabilities> <rescap:Capability Name="runFullTrust" /> </Capabilities>
同时提交审核时要在备注里明确说明该权限用于支持自定义协议唤起,避免审核团队误解权限用途。
- 适配商店环境的Flutter协议监听配置
本地测试的初始化逻辑可能不适配商店打包环境,确保main函数中正确初始化协议监听:
void main() { WidgetsFlutterBinding.ensureInitialized(); ProtocolHandler.initialize(); ProtocolHandler.registerUriHandler((Uri uri) { // 处理认证跳转的业务逻辑 }); runApp(const MyApp()); }
另外要保证MSIX打包时的发布者、包名等身份信息,和商店后台配置完全一致,否则协议关联会失效。
给审核团队提供清晰的测试说明
在提交审核的备注中,明确写出自定义URI Scheme的用途(认证跳转),并给出具体测试步骤,比如:"请点击链接myapp://auth#token=test测试应用唤起功能",避免因测试操作不当导致误拒。排查协议关联冲突
测试商店版本时,确保设备上没有安装本地签名的同版本应用,否则会出现协议关联冲突,导致商店版本无法被唤起。
内容的提问来源于stack exchange,提问作者Clifton Labrum
相关产品推荐
相关产品推荐

