如何使用Xamarin Essentials Share分享应用链接并实现点击后打开应用
实现方案总览
完全可以实现你要求的效果,不需要自有网站也不需要用App Links,用自定义URI Scheme方案就可以搭配Xamarin Essentials Share API完成需求。
具体实现步骤
- 第一步:配置应用的自定义URI Scheme
- 安卓端:打开项目里的
AndroidManifest.xml,在主Activity节点下添加如下intent-filter配置,scheme字段可以自定义成你的应用专属标识,避免和其他应用冲突:<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="mycustomapp" android:host="page" /> </intent-filter> - iOS端:打开项目里的
Info.plist,新增URL Types配置项,在URL Schemes字段里填写和安卓端一致的自定义标识即可。
- 安卓端:打开项目里的
- 第二步:调用Xamarin Essentials Share分享自定义URI
要分享应用内指定页面时,把页面ID、参数等信息拼到自定义URI里,再调用分享接口即可,示例代码如下:// 示例:分享ID为456的商品详情页 var shareUri = "mycustomapp://page/goods?id=456"; await Share.RequestAsync(new ShareTextRequest { Text = $"给你分享一个不错的商品,点击即可查看:{shareUri},如果打不开请先到应用商店下载我们的应用", Title = "商品分享" }); - 第三步:应用内接收跳转参数打开对应页面
用户点击分享的URI启动应用后,在对应平台的入口方法中解析URI参数,路由到指定页面即可:- 安卓端在
MainActivity的OnNewIntent方法中获取Intent的Data字段解析参数 - iOS端在
AppDelegate的OpenUrl方法中获取传入的Url解析参数
- 安卓端在
注意事项
- 自定义的Scheme要尽量独特,不要用
app、test这类通用字符串,避免和其他应用冲突导致跳转错误 - 如果用户没安装你的应用,点击自定义URI不会有任何反应,可以在分享文案里补充应用商店的下载提示
- 安卓12及以上版本对自定义Scheme跳转有额外限制,必须配置
BROWSABLEcategory才能正常跳转
内容的提问来源于stack exchange,提问作者Zeeshan shaikh
相关产品推荐
相关产品推荐

