iPad iOS14.5下使用AppAvailability检测WhatsApp引发应用崩溃问题
问题根因
- iOS 14及以上系统对应用查询其他App的URL Scheme做了强制限制:所有需要检测的App的URL Scheme必须提前在项目的
Info.plist的LSApplicationQueriesSchemes数组中声明,未声明的Scheme直接调用查询接口会触发系统抛出异常,导致App崩溃。 - 你当前只传了
whatsapp://作为iOS端的检测参数,但没有在白名单里添加WhatsApp对应的Scheme,所以在符合系统版本要求的iPad上触发了崩溃。
解决步骤
- 打开你的Ionic项目的iOS配置文件(一般路径为
resources/ios/Info.plist,如果是Cordova项目也可直接修改Xcode中项目根目录下的Info.plist),添加如下配置:
<key>LSApplicationQueriesSchemes</key> <array> <string>whatsapp</string> </array>
注意:此处仅需填写Scheme前缀,不需要加://后缀。
2. 优化代码逻辑,避免非iOS/Android平台下app变量为undefined导致的异常:
private checkAppAvailability(android: string, ios: string, propName: string): Promise<any> { let app; if (this.platform.is('ios')) { app = ios; } else if (this.platform.is('android')) { app = android; } // 新增非支持平台兜底逻辑 if (!app) { this[propName] = false; return Promise.resolve(false); } return this.appAvailability.check(app) .then(() => (this[propName] = true)) .catch(() => (this[propName] = false)); }
- 重新编译iOS安装包测试即可。
内容的提问来源于stack exchange,提问作者matmany
相关产品推荐
相关产品推荐

