记在为Xamarin.Android项目接入Huawei HMS的检测更新接口时遇到的坑(一)

事情是这样的,前期我将岁寒输入法上传到了华为应用市场,最近我进行版本更新时审核不过,原因如下:


审核要求我接入华为的检测更新接口,简单的说就是在用户进入应用时检测一下应用市场是否有更新的版本,如果有的话就提示用户。
接入一个接口而已,想来应该也不难,不料竟是一个大坑。
如果我所使用的是原生技术栈的话,确实是一件很简单的事情。这里是官方文档:联运应用开发文档。

官方认为的接入耗时大约也就半个小时,而在Xamarin.Android下我前后花了好几天,总工时至少在5个小时以上。原因是官方既没有给出Xamarin.Android下接入联运应用接口的帮助文档,也没有提供Xamarin.Android下接入联运应用接口所必须的依赖库。实际上,我所花费的大部分时间都用在了确认以上事实。
就没有帮助文档这一情况倒是好办。一般而言,仿照原生技术的代码改写一下就OK了。但问题卡在了依赖库上,接入联运应用接口要求添加com.huawei.hms:appservice依赖。

但是我翻遍了华为的官方文档和Nuget官网,也没有找到与appservice相关的依赖(也就是说华为官方没有提供Xamarin.Android相应的封装库),而我甚至连appservice的arr或jar都找不到下载页面。
我倒是找到了游戏联运的需要的依赖库下载页面。

这个页面里的依赖除了gameservicesdk之外,其它依赖与应用联运接入是一样的,但是gameservicesdk是用于游戏应用的,而我岁寒输入法并不是游戏应用,使用这个依赖库可能导致审核还是过不了。
但我实在是找不着appservice的下载链接怎么办呢?
最后我下载了官方提供的联运应用示例工程,并将工程里的appservice版本更新到最新的版本后执行gradle的同步操作,然后前往gradle的本地仓库(在我的主机上路径是/Users/用户/.gradle/caches/modules-2/files-2.1),终于拿到了appservice的aar文件:


拿到这个aar文件之后,我就可以创建Xamarin.Android的绑定库了,这里过程略,具体参考微软的官方文档:Binding a Java Library

除了引用这个绑定库之外,项目还需要引用其它相关的依赖。其它的依赖库nuget上倒是大部分都有。

但还是差了一个apptouch没有找到。这个好办,也给它创建了一个绑定库就好了:

现在“龙珠”凑齐了,开始“许愿”吧。仿照原生技术文档,将其改写成Xamarin.Android的调用方式。
如果事情到这里就结束了,那我这篇文章岂不是太水了!肯定还有问题嘛。

改写代码后,代码出现了几处错误。
另一个是提示找不到ApkUpgradeInfo类:

另一个是提示找不到IAppUpdateClient下的CheckAppUpdate和ShowUpdateDialog方法:


解决方案请跳转记在为Xamarin.Android项目接入Huawei HMS的检测更新接口时遇到的坑(二)

你可能感兴趣的:(记在为Xamarin.Android项目接入Huawei HMS的检测更新接口时遇到的坑(一))