#夏日挑战赛#【FFH】从零实现原子服务一键分享,免安装! 原创 精华
本文将介绍如何实现,通过华为分享来分享原子化服务,以及如何上架原子化服务从而实现服务的免安装
0. 前言
- 原子化服务是鸿蒙的一大特性,在服务中心可以看见许多以卡片形式呈现的原子化服务,这些服务体积小,能够快速部署到手机上实现功能,达到免安装的效果。
- 同样的,原子化服务另外一种呈现方式就是基于华为分享的,例如A同学希望分享他在京东上看到的一件商品,他可以通过华为分享将该服务页面快速迁移到B同学的手机上,而B同学的手机上并没有安装京东,也能看到呈现画面。
这里不知道是网络还是应用出现了BUG,总之就没显示出来画面,不过问题不大。接下来我们亲自用案例实现,这个案例首先实现华为分享分享服务,同时要发布测试态原子化服务,这样我们的应用才能够在服务中心以卡片形式呈现,并且实现免安装。
1. 原子化服务分享
1.1 华为分享
本案例在最新版本的Deveco上进行编写,我们需要建立携带原子化服务的JAVA工程,注意是JAVA工程,由于该功能目前还未迁移到JS上,我们需要用JAVA进行编写,同时勾选在服务中心显示。
具体的华为分享原理,其实就是两端在一个组网近场内,一端封装好要分享的数据通过华为分享传输给另一端。快速传输,免安装的体验感一是数据量小,二是华为分享本身过硬的技术两者结合带来的。多余不在赘述,详情参看官网文档,接入华为分享。
1.2 接入华为分享
1.2.1 创建IDL接口
我们在JAVA同级目录下,创建两个idl接口:
- IHwShareCallback
- IHwShareService
注意idl接口存放路径一定要是com/huawei/hwshare/third
1.2.2 实现接口
- IHwShareCallback
- IHwShareService
1.3 ShareFaManager类
用于管理分享方与华为分享的连接通道和数据交互,建议不要DIY,DIY空间少,容易出错,直接参考官方文档。
1.4 简单案例
这里我们编写一个简单案例,MainAbilitySlice实现的是从相册里面挑选一张照片,作为卡片信息分享出去,用于介绍要分享的内容给被分享者。
1.4.1 效果
但是这里必须两端都装了该HAP包才能实现,还不满足免安装的效果,必须得至少将原子化服务发布到测试态,后文将会详细介绍。
1.4.2 实现
具体的样式不在这里给出,请参考附件,附上核心代码。
唯一需要主要的是,里面用到的APPID,是在AGC控制台上创建相应项目应用时得到的APPID,可在AGC控制台,我的项目中找到。
2. 测试原子化服务
2.1 手动签名
首先我们对工程进行手动签名,得到.cer和.p12文件,这里不再赘述手动签名。
手动签名
2.2 申请原子化服务
- 进入华为开发者联盟,进入管理中心,点击智慧服务,进入HarmonyOS服务开放平台。
2.3 创建服务
箭头所指,填工程包名即可,其他自拟,点击确定。
至此,服务创建完成,接下来配置服务。
2.4 申请证书
这里要申请两个证书,.csr和.p7b.
2.4.1 申请.csr证书
申请完证书后,记得点击下载,我们会获得一个.cer证书。
2.4.2 申请.p7b证书
申请完后一定记得点击下载,我们会获得.p7b证书
。
至此,我们手上有.p12,.p7b,.cer,.csr四种证书,这里非常重要!
2.5 工程签名
这里用到刚刚申请好的证书,在release一栏进行签名,不是debug哦!
接着编译整个工程,是build APP,不是build hap哦!
这样,我们就获得了APP包!
到这里,我们就能够理解实现原子化服务为啥要APP包,说白了还是把APP上传服务器,用的时候再下载,只不过体积小,实现了无感安装的过程!
2.6 发布为测试态
我们回到刚刚的服务平台,继续配置服务。
2.6.1 上传APP包
上传刚刚编译好的APP包,这里由于我已经上传过了,界面稍微不一样,总之就是有个按钮上传就完事了。
2.6.2 其余信息
其余信息大部分自拟,如果是要最终实现发布的话,要涉及到很多证书或者专利,如果是只是为了简单测试,就可以像我这样(乱填)填一些信息就行了,关键的在后面。
2.6.2 分发
这里提供了几种找到该服务的方式,这里根据个人情况探索即可。
2.6.3 测试
这里才是第二重要的地方了,我们需要添加测试设备。
新增一个组别,信息自拟。
点击查看,添加测试设备的手机号
最后返回到测试界面,点击保存。
最最最后,发布为测试态
。
3.结果
完成前文所有步骤后,稍等5-10分钟,大概就能在测试设备的服务中心看到我们制作的原子化服务了。从屏幕右下角往屏幕中心划,可呼出服务中心,注意看图
至此,我们真正实现了免安装功能
通过原子化服务感觉以后的手机只用承担显示和联网的功能,处理等功能都可以交给服务器了。