我构建了一个API,可以重定向到playstore中的相应applink。在互联网浏览器中使用API时,它不会打开应用程序,而是打开网页。
我使用下面的代码:
AndroidManifest.xml中
<intent-filter android:label="filter_react_native">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="scoutnex-deeplink.herokuapp.com" android:scheme="https" android:pathPrefix="/scoutnex"/>
</intent-filter>
App.js
componentDidMount(){
Linking.getInitialURL()
.then(url => this.handleOpenURL({ url }))
.catch(console.error);
Linking.addEventListener("url", this.handleOpenURL);
}
如果我使用类似下面的代码,互联网浏览器会提示使用url peopleapp://people
打开外部应用程序的请求。
<data android:host="people" android:scheme="peopleapp"/>
> <intent-filter android:label="filter_react_native">
> <action android:name="android.intent.action.VIEW" />
> <category android:name="android.intent.category.DEFAULT"/>
> <category android:name="android.intent.category.BROWSABLE" />
> <data android:host="scoutnex-deeplink.herokuapp.com" android:scheme="https" android:pathPrefix="/scoutnex"/>
> </intent-filter>
uri生成将是https://scoutnex-deeplink.herokuapp.com/scoutnex
对于
低于数据意图
> <data android:host="people" android:scheme="peopleapp"/>
uri生成的将是peopleapp:// people
请检查您是否使用路由器,如果是,那么您应该在堆栈导航器中有人屏幕。
最后,
为了测试您的意图数据uri的最佳方法是:
1)如果尚未完成,请卸载现有应用程序。
2)再次同步和构建代码。
3)使用uri peopleapp:// people在您的应用中调用webview。
4)它应该工作。
5)如果您使用模拟器检查android here提供的以下链接
6)在终端中运行此命令(尝试adb设备进行测试)。
> $ adb shell am start
> -W -a android.intent.action.VIEW
> -d <URI> <PACKAGE>
7)URI将是peopleapp:// people
8)PACKAGE将是您的包/应用程序/名称,即.. @ string / app_name。
希望这对你有所帮助。我希望你的代码块更清晰。如果你发现它令人困惑,请评论。