我尝试发送网址以启动应用。
我已经设置了链接环境。
在android中,我在AndroidManifest.xml中设置了代码:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="mychat" android:host="mychat" />
</intent-filter>
在IOS中,我在AppDelegate.m中设置代码:
// Add this above the `@end`:
// iOS 9.x or newer
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:application openURL:url options:options];
}
在我的关于链接的React Native代码中:
componentDidMount () {
Linking.getInitialURL().then(url => {
if (url) {
console.log('Initial url is:', url);
}
}).catch(err => console.log('error is:', err));
Linking.addEventListener('url', this._handleOpenURL);
}
componentWillUnmount() {
Linking.removeEventListener('url', this._handleOpenURL);
}
_handleOpenURL(event) {
console.log(event.url);
}
IOS上的情况
我键入命令xcrun simctl openurl booted mychat://chat
获取的结果是来自mychat://chat
方法的_handleOpenUrl
。
Android上的情况
我键入命令adb shell am start -W -a android.intent.action.VIEW -d "mychat://mychat/chat" com.testan3
得到的结果是Initial url is: mychat://mychat/chat
的{{1}}
那么为什么Linking.getInitialURL()
仅在Android上有效,而Linking.getInitialURL()
仅在IOS上有效?
我不知道为什么会有所不同。任何帮助将不胜感激。