由于某种原因,React Native Linking API的“canOpenURL”方法无法在我的设备上检测到Uber应用程序,即使“openURL”方法打开它也没问题。
下面有什么我想念的吗?
constructor(props) {
super(props);
this.state = {
uberURL: 'uber://?client_id=eJCfG86Rz&action=setPickup',
isUberInstalled: false
};
}
componentWillMount() {
Linking.canOpenURL(this.state.uberURL).then(isUberInstalled => {
this.setState({ isUberInstalled: isUberInstalled });
});
}
this.state.isUberInstalled 总是 false
答案 0 :(得分:1)
您必须将您使用的方案添加到应用的Info.plist LSApplicationQueriesSchemes
来自canOpenURL:文档:
如果您的应用在iOS 9.0上或之后进行了关联,则必须声明要传递给此方法的网址方案。通过在Xcode项目的
LSApplicationQueriesSchemes
文件中使用Info.plist
数组来完成此操作。对于您希望应用程序使用此方法的每个URL方案,请将其添加为此数组中的字符串。
如果您的(iOS 9.0或更高版本)应用使用您尚未声明的方案调用此方法,则该方法将返回NO,无论该方案是否安装了该方案的相应应用。