mat*_*ttd 5 android deep-linking react-native react-native-android react-native-navigation
我有一个带有以下代码的React-Native应用程序(这里是App.js,应用程序入口点),用于管理Android上的深层链接。
Linking.getInitialURL().then((deepLinkUrl) => {
if (deepLinkUrl) {
manageDeepLink(deepLinkUrl);
} else {
Navigation.startSingleScreenApp('rootScreen');
}
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是,每次我从深度链接或正常情况下启动我的应用程序时,都会调用getInitialURL,并且每次它包含deepLinkUrl参数为空时都会调用它。我已经在AndroidManifest中注册了我的意图,如下所示:
<application
android:name=".MainApplication"
android:allowBackup="true"
android:launchMode="singleTask"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize">
<!-- deeplink -->
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
更新 我正在使用本机导航来注册屏幕,如果这可能有用的话。
如果您在应用程序生命周期中过早注册侦听器(例如直接在某些 .js 文件中,因此在加载应用程序时执行它),它似乎不起作用。
如果将其移动到componentDidMount()根组件上,一切都会正常工作。
componentDidMount() {
Linking.addEventListener('url', event => {
console.warn('URL', event.url)
})
Linking.getInitialURL().then(url => {
console.warn('INITIAL', url)
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |