首页 > 分享 > 开发卡片

开发卡片

简介

卡片是一种新的服务形态,提供一种比APP更细粒度的服务能力,以可交互的卡片形式直接将用户最关心的服务或内容展示给用户。卡片可以嵌入各种APP或交互场景中,更好的满足用户需求,提供智慧化服务能力。

卡片和快应用主程序打包在同一个RPK文件中,发布时上传RPK文件。

卡片使用场景如下所示。

准入条件

在进行卡片开发前,请先完成如下准备工作:

在华为开发者联盟上注册成为开发者,并完成实名认证,详细参见“帐号注册认证”。 完成开发环境的搭建,包括在PC上安装快应用IDE、在测试手机安装快应用加载器,详细参见“安装开发工具”。 在AppGallery Connect(以下简称AGC)上完成快应用的创建,详细参见“创建快应用”。

开发规范

文件组织

卡片是快应用程序的一部分,一个快应用程序可能包含多个卡片,每个卡片仅且只能对应一个页面(page)。卡片的定义通过manifest.json中的widgets字段定义,widgets是一个100大小的数组,其字段说明如下表所示。请参考快应用规范“Manifest文件 > router”将卡片对应的page定义完整(即将卡片的path字段与对应页面的path字段进行关联)。

属性

类型

是否必填

描述

name

String

是

卡片的名称。

id

String

是

卡片的唯一标识,英文或数字组成的字符串,在快应用包内唯一,长度不允许超过255。

path

String

是

卡片对应的页面路径,与router.page中的path字段进行对应,每张卡片仅且只能对应一个页面。

component

String

否

卡片对应的页面名称。

targetManufactorys

Array[100]

是

由于各厂商的UI风格有不同的要求,应用开发商可能会针对不同的厂商提供不同的卡片,因此需要一个字段明确说明卡片所适用的厂商范围,防止不必要的审核及驳回流程。

示例:["huawei"]

desc

String

否

卡片的详细描述,包括功能描述、如何填写入参信息等。

params

list[100]

否

卡片运行需要传入的参数信息,运营人员或自动化测试工具可以运行卡片或进行功能性验证,详细描述参见“params说明”。

minPlatformVersion

Integer

是

支撑的最小平台版本号。

params说明:

属性

类型

是否必填

描述

name

String

是

参数名称。

mandatory

Boolean

否

是否必填。缺省为是。

valueSample

String

是

参数值示例,用于指导测试运营输入验证、自动化测试工具使用。

desc

String

是

参数描述。

示例代码如下:

"router": { "entry": "Hello", "pages": { "Hello": { "component": "hello" }, "widget1": { "component": "Widget1", "path": "/widget1" }, "widget2": { "component": "Widget2", "path": "/widget2" } } }, "widgets":[ { "id":"ExpressInfor", "name":"物流信息展示", "path":"/widget1", "component":"Widget1", "targetManufactorys":["huawei"], "params":[{"name":"keyName1", "mandatory": true, "valueSample": "宝马X5", "desc": "参数描述"},{"name": "keyName2", "mandatory": true, "valueSample": "深圳", "desc": "参数描述"}], "uses-permission":["ACCESS_FINE_LOCATION", "WRITE_CALENDAR"], "minPlatformVersion": 1050 }, { "id":"OrderInfo", "name":"订单实时展示", "path":"/widget2", "component":"Widget2", "targetManufactorys":["huawei"], "uses-permission":["ACCESS_FINE_LOCATION"], "minPlatformVersion": 1050 } ]

除widget自身的属性说明外,widget作为快应用程序的一部分,widget也会和快应用主体程序共用如下表所示信息。

属性

类型

默认值

是否必填

描述

package

String

-

是

应用包名,是区别于其他应用的唯一标识,推荐采用com.company.module的格式,如:com.deviceunion.demo。

name

String

-

是

应用名称,一般是中文,用于在桌面图标、弹窗等处显示应用名称。

icon

String

-

是

应用图标,提供192x192大小的即可。

versionName

String

-

否

应用版本名称。

versionCode

Integer

-

是

应用版本号。

说明

卡片作为快应用程序的附属属性,开发者开发的快应用程序包必须包含主体程序及可选的多个卡片程序。

开发原则

一个卡片是一段嵌入在其他应用中执行、渲染的页面脚本,因此必须能够独立渲染和运行。卡片具有的能力是快应用页面能力的子集,按照负面清单的方式对卡片能力进行约束:

卡片开发整体原则如下:

不能使用app.ux中定义的公共能力组件,也不能引用本地图片资源文件,确保卡片对应的jsbundle文件能够独立渲染。 快应用的主体程序不能路由到卡片对应的页面,但在卡片的页面中获取外部输入参数的方式与普通页面保持一致,通过this.paramName即可获取对应的参数值,其中paramName为外部传入的参数名。 卡片涉及的权限通过预授权(例如在添加卡片时明确告知用户)的方式授予,卡片运行过程中调用权限相关的接口(例如获取位置信息)时,均会默认授予相关权限而不会动态弹授权框。 在某些极端场景下,可能会出现用户使用的卡片是由快应用的版本1提供,但从卡片跳转到快应用的页面路径时快应用的版本已经是版本2,需要确保快应用对老版本(至少兼容一个版本)卡片跳转路径的兼容。 卡片不允许使用global对象进行数据的存储,global可以被其他卡片访问到,使用不当会存在安全隐患。 卡片在需要跳转到快应用或者APK时,统一通过router.push进行跳转,不支持的scheme:internal://,同时也不支持基于filter模式下的快应用跳转。 卡片支持级联样式父节点变化的dom刷新,不依赖rpk的minplatform。 卡片多语言开发和快应用多语言开发基本一样,区别在于实例化i18n对象。由于卡片开发约束,不能使用app.ux中定义的公共能力,所以卡片进行国际化时,只能在单个模块的ux文件中进行实例化i18n对象。比如,有卡片A和卡片B,需要在每个卡片中实例化一次。卡片实例化i18n对象时,需要指定locale,推荐通过device接口的 getInfoSync 方法获取设备的系统语言。

框架约束

公共对象使用约束:

属性

类型

备注

$app

Object

app是快应用的全局对象,在卡片场景下不可用。

$page

Object

用于快应用页面对象的通用功能,在卡片场景下不可用。

页面生命周期使用约束:

属性

类型

备注

onBackPress

Function

卡片内嵌在各超级应用中,不适合监听back事件。

onMenuPress

Function

卡片内嵌在各超级应用中,不适合监听menu点击事件。

onMenuButtonPress

Function

卡片内嵌在各超级应用中,不适合监听遥控器的menu点击事件。

应用生命周期使用约束:

属性

类型

备注

onCreate

Function

卡片内嵌在各超级应用中,不适合快应用的onCreate事件。

onDestroy

Function

卡片内嵌在各超级应用中,不适合快应用的onDestroy事件。

消息通道使用约束:

属性

类型

备注

onmessage

Function

BroadcastChannel适用于页面间通讯,不适用于卡片场景。

postMessage

Function

BroadcastChannel适用于页面间通讯,不适用于卡片场景。

close

Function

BroadcastChannel适用于页面间通讯,不适用于卡片场景。

UI组件约束

通用事件使用约束:

名称

类型

备注

appear

事件

框架约束,暂不支持。

disappear

事件

框架约束,暂不支持。

swipe

事件

框架约束,暂不支持。

通用样式使用约束:

名称

类型

备注

position

none | fixed

框架约束,不支持fixed类型。

UI组件使用约束

目前在卡片中仅允许使用下表所列的组件,相关使用限制请参见“备注”列。

名称

备注

div

-

image

受限使用。无法加载本地路径图片。

input

1070版本前只支持button类型,1070版本开始,新增支持text,email,date,time,number,password类型。

list

受限使用。如果集成卡片的应用有滑动的效果,卡片中再使用list可能导致滑动冲突,请务必与卡片集成方说明,并进行调试。

list-item

同上。

marquee

支持。

picker

Activity context可以显示使用。

popup

支持。

progress

支持。

rating

受限使用。仅支持base64图片。

span

受限使用。只能作为 <text-item> 的子组件。

stack

支持。

swiper

支持。

text

卡片中不支持使用text组件的letter-spacing样式,需版本升级至1030版本方可使用。

video(1078+)

受限使用。poster属性无法加载本地路径图片。

API接口约束

名称

备注

system.app

app.getPackageInfo接口卡片场景适用,app.getInfo接口卡片场景不适用。

system.router:back

卡片场景不适用。

system.router:replace

卡片场景不适用。

system.router:clear

卡片场景不适用。

system.router:getLength

卡片场景不适用。

system.router:getPages

卡片场景不适用。

system.router:getState

卡片场景不适用。

system.decode:decode

卡片场景不适用。

system.notification

不适用于发送状态栏通知。

system.fetch:fetch(OBJECT)

当OBJECT中data类型为arraybuffer时,卡片场景不适用。

system.request

卡片场景暂不支持。

system.websocket:send(OBJECT)

当OBJECT中data类型为arraybuffer时,卡片场景不适用。

system.websocket:onmessage(OBJECT)

当OBJECT中data类型为arraybuffer时,卡片场景不适用。

system.requesttask:request

卡片场景不适用。

system.file

在主程序中使用,卡片场景不能使用。

system.webview

通过进入主程序打开webview。

system.sensor

卡片场景不适用。

system.shortcut

卡片场景不适用于桌面图标的查询和创建。

system.device:getId

卡片场景不适用。

system.device:device:getDeviceId

卡片场景不适用。

system.device:device:getUserId

卡片场景不适用。

system.record

录音权限比较敏感,统一在主程序中调用。

system.bluetooth:getDevices

卡片场景不适用。

system.bluetooth:writeBLECharacteristicValue

卡片场景不适用。

system.bluetooth:onblecharacteristicvaluechange

卡片场景不适用。

system.cipher:aes

卡片场景不适用。

system.media

卡片场景不适用,通过进入主程序实现业务诉求。

service.wxpay

卡片场景不适用,支付一般需要二次确认,进入主程序再进行支付。

service.alipay

卡片场景不适用,支付一般需要二次确认,建议进入主程序再进行支付。

system.sms

卡片场景不适用,在主程序中使用。

system.share

卡片场景不适用,在主程序中使用。

service.share

卡片场景不适用,在主程序中使用。

system.wifi

卡片场景不适用,在主程序中使用。

system.contact

卡片场景不适用,在主程序中使用。

system.package:hasInstalled

受限使用,只能查询HarmonyOS应用或Android应用是否有安装,不能查询快应用是否有安装。

system.storage

不同厂商对此接口的实现稍有差异,某些厂商的卡片存储与快应用中心的快应用是共享的,即在快应用中通过此接口写入的值在对应的卡片中也可以进行读写,某些厂商的卡片存储嵌入在卡片所集成的宿主应用中,两边是隔离的。

华为采用隔离的方式。

system.device:getSerial

卡片场景不适用,在主程序中使用。

system.ai

卡片场景不适用,在主程序中使用。

system.geolocation

受限使用,使用前请务必先联系华为进行安全评估。

system.image:pickColor

受限使用,必须使用1045+版本。

service.account

卡片场景不适用,在主程序中使用。

service.pay

卡片场景不适用,在主程序中使用。

service.push

卡片场景不适用,在主程序中使用。

service.ad

卡片场景不适用,在主程序中使用。

开发指导

使用快应用IDE开发卡片的操作如下,更详细的内容请参见“卡片类快服务接入指南”。

新建卡片项目。 编辑卡片。 将测试手机(最好为华为手机)使用USB数据线成功连接装有华为快应用IDE的电脑。打开测试手机的“开发者模式”,详细打开方式参见“华为手机如何打开开发者选项”。 菜单选择“工具 > 生成证书”。 没有签名文件:右下角弹出创建签名文件提示,点击“创建签名”,输入相关信息后,点击“创建”,或者点击“导入签名”,导入已有的签名文件。

已存在签名文件:弹出签名信息,点击“OK”。 在快捷运行区的下拉窗口选择“编辑配置”进入配置界面。

配置卡片的运行平台和启动参数。

选择需要编译调试的文件,点击“运行”。

在弹出页面选择运行的设备,点击“确认”。 如果调试设备上没有安装快应用引擎,将在右下角弹出提示框,点击“安装”进行安装。已安装则跳过此步骤。 在调试设备上即可查看卡片的运行效果。

打包正式版本

确保开发的卡片功能没有问题,即可使用华为快应用IDE打包发布成rpk包,提交华为应用市场进行上架审核,详细打包过程参见“打包快应用”。

相关链接

FAQ

卡片配置启动参数后,如何获取参数在文件中使用? 编写卡片只支持在线图片,但如果想用本地图片,如何处理? 如何模拟预览本地卡片? 联调卡片时,需要导出卡片的js文件,如何导出?

案例

卡片开发使用伪类之踩坑记录 开发卡片时,对某个组件使用伪类,生成点击变色效果,但是松开手指后产生的变色效果无法恢复 通过卡片跳转快应用指定页面,点返回无法直接返回卡片 卡片使用hap链接格式跳转快应用报错

相关知识

送花卡片写什么,送女朋友的鲜花寄语卡片
鲜花留言卡片图片
如何送花卡片生日
鲜花卡片留言
鲜花卡片图片下载
卡片风情DIY
送花卡片写什么,送侄子的鲜花卡片上怎么写
送花卡片写什么,送小孩子的鲜花卡片上怎么写
向日葵花语卡片如何写
花卉生日卡片

原文链接: 开发卡片 https://m.huajiangbk.com/newsview546022.html

分类:花卉
上一篇: 如何从零高效的开发一款适配 An...下一篇: 在线APP制作平台