0484f909df9309a211735cac427b25fc.png
fb7966230e8ea9816ea1996fd5a89ace.png
Xamarin.Forms Android X5内核https://www.zhihu.com/video/1250179312939798528

介绍

本编文章分为2节,第1节是介绍腾讯X5内核WebView与Nuget相关的资料,第2节是介绍客户端代码(Xamarin APP)调用SDK时Xamarin.Android与Xamarin.Forms协调交互的方式。


Part 1 腾讯X5内核WebView与Nuget相关的资料

在开发者做应用开发集成X5内核时,影响到开发者需要做对应代码处理的其中2个特性是:

首先它会优先去共享使用微信手Q的内核,如果微信手Q没有内核,它会在满足条件时自己下载内核,参看下载内核疑问;

第二点是如果在加载X5内核未完成之前打开WebView就可能导致无内核可用而使用系统内核,参看加载内核时间点。

了解了以上两点特性后再进行针对性编码就会更加顺利完成开发工作了。

相关的aar包已经转换成Nuget包:

Install-Package XamarinLibrary.Xamarin.Android.Tencent.Tbs.Tbssdk.Sdk -Version 43903.0.0

Xamarin.Android与Xamarin.Forms协调交互的方式

  • 集成SDK

使用Xamarin.Android项目直接安装 Part 1 中的 Nuget 包即可。

e63369be9a8fcde245416e357f84c891.png
安装Tbssdk的Nuget包
  • 配置权限、视频播放的Activity与文件浏览的Provider

根据X5接入文档配置权限(接入文档)

原生Demo相关Activity与Provider配置(原生Demo下载)

Properties/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

注意其中里面引用到的另外两个配置文件置于Resources/xml目录中

因为SDK自身进行下载内核操作时仍然需要进行http访问

Resources/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>

Resources/xml/provide_file_paths.xml

<?xml version="1.0" encoding="utf-8"?>
  • 初始化X5内核 (注意初始化只需要调用一次即可)
QbSdk

源码参看SampleApp.Android/MainActivity.cs line 41

  • 检查X5内核是否加载成功

Com.Tencent.Smtt.Sdk.WebView实例化后的对象,属性X5WebViewExtension不为null表示内核加载成功。

源码参看SampleApp.Android/Renderers/TencentWebViewRenderer.cs line 37

59371360eff0c4fdfa28472c8d330101.png
加载X5内核成功
  • 使用X5内核的WebView功能

使用C#代码或者Android界面xml实例化Com.Tencent.Smtt.Sdk.WebView后调用LoadUrl函数即可访问想要访问的url链接。

源码参看SampleApp.Android/Renderers/TencentWebViewRenderer.cs

源码中使用到Xamarin.Forms的Renderer方案将Xamarin.Android的xml界面映射到Xamarin.Forms的XAML控件中。

  • 使用X5内核的视频播放功能(上文AndroidManifest.xml已配置的Activity)

调用静态类TbsVideo的OpenVideo函数。

源码参看SampleApp.Android/MainActivity.cs line 46

源码中使用到Xamarin.Forms的 消息发布/订阅 组件MessagingCenter进行Xamarin.Forms层与Xamarin.Android层的消息通讯。

  • 使用X5内核的文档浏览功能(上文AndroidManifest.xml已配置的Provider)

调用静态类QbSdk的OpenFileReader函数。

源码参看SampleApp.Android/MainActivity.cs line 61

源码中使用到Xamarin.Forms的 消息发布/订阅 组件MessagingCenter进行Xamarin.Forms层与Xamarin.Android层的消息通讯。


app代码参看

https://github.com/jingliancui/XamarinFormsTencentX5Sample

微信公众号 Xamarin Library

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐