如何在Ionic中检测手机是否安装MetaMask钱包?
解决iOS检测MetaMask Wallet App安装状态的问题
问题根源
你遇到的两个错误都是因为URL Scheme使用错误以及Scheme声明和实际调用不匹配导致的:
- 错误
OSStatus error -10814:表示当前调用的URL Scheme没有任何已安装的App能响应(你用了错误的MetaMask Scheme) - 错误
This app is not allowed to query for scheme metamask-blockchain-wallet:代码里调用的Scheme和info.plist中声明的不一致,iOS安全机制阻止了查询
正确解决方案
MetaMask iOS官方使用的URL Scheme是metamask://,按以下步骤修改:
- 修正检测代码
把调用canOpenUrl的URL改成正确的Scheme:
const { value } = await AppLauncher.canOpenUrl({ url: 'metamask://' });
- 同步修改info.plist配置
确保LSApplicationQueriesSchemes中声明的是正确的Scheme:
<key>LSApplicationQueriesSchemes</key> <array> <string>metamask</string> </array>
- 测试注意事项
- 必须使用iOS真机测试,模拟器无法安装MetaMask App
- 确保测试设备上已经安装了MetaMask Wallet App
- 修改配置后需要重新编译运行App
验证逻辑
修改完成后,调用canOpenUrl返回true表示已安装MetaMask,false表示未安装。
内容的提问来源于stack exchange,提问作者Ali Haider
相关产品推荐
相关产品推荐

