目次
1 -> 应用隐私掩护
1.1 -> 透明可控
1.2 -> 数据最小化
1.3 -> 身份掩护
1.4 -> 数据安全保障
2 -> 三方应用调用管控机制
2.1 -> 为什么要进行调用管控
2.2 -> 相干概念
2.3 -> 调用管控总体思路
2.4 -> 管控规则
3 -> 资源分类与访问
3.1 -> 资源分类
3.1.1 -> resources目次
3.1.2 -> 限定词目次
3.1.3 -> 资源组目次
3.2 -> 资源访问
3.2.1 -> 应用资源
3.2.2 -> 体系资源
1 -> 应用隐私掩护
随着移动终端及其相干业务(如移动付出、终端云等)的普及,用户隐私掩护的重要性愈发突出。应用开辟者在产品设计阶段就需要考虑用户隐私的掩护,进步应用的安全性。HarmonyOS应用开辟需要遵从隐私掩护规则,在应用上架应用市场时,应用市场会根据规则进行校验,如不满足条件则无法上架。
1.1 -> 透明可控
应用收罗个人数据时,应清晰、明确地告知用户,并确保告知用户的个人信息将被如何使用。
- 应用申请操纵体系敏感权限时,需要明确告知用户权限申请的目标和用途,并获取用户的同意。
- 开辟者应制定并遵从适当的隐私政策,在网络、使用留存和第三方分享用户数据时需要符合全部适用法律、政策和规定。如在网络个人数据前,需充分告知用户处置惩罚个人数据的种类、目标、处置惩罚方式、保存期限等,满足数据主体权利等要求。
- 应用向第三方披露任何个人信息须告知用户披露内容、目标和披露对象。
- 为了便于用户查看应用网络的个人信息与向第三方披露的个人信息,发起以清单列表的形式呈现在应用的二级菜单中。
- 个人数据应当基于具体、明确、正当的目标网络,与此目标不符合的方式不应该进行进一步处置惩罚。对于网络目标变动和用户打消同意后再次使用的场景都需要用户重新同意。
- 应用需要提供用户查看隐私声明的入口。例如在应用的“关于”界面提供查看隐私声明的入口。
- 应用存在调用第三方的元服务场景时,需要在应用的隐私声明中明确第三方责任,如涉及个人数据网络则需要告知用户第三方的名称及网络的个人数据类型、目标和方式,申请的敏感权限、申请目标等。
对个人数据处置惩罚必须要征得用户的同意或服从适用的法律法规,用户对其个人数据要有充分的控制权。
- 体系对于用户的敏感数据和体系关键资源的获取设置了对应的权限,应用访问这些数据时需要申请对应的权限。
- 应用申请使用敏感权限:应用弹窗提醒,向用户呈现应用需要获取的权限和权限使用目标、应用需要网络的数据和使用目标等,通过用户点击“答应”或“仅使用期间答应”或“答应本次使用”的方式完成用户授权,让用户对应用权限的授予和个人数据的使用做到透明、可知、可控。
- 用户可以修改、取消授予应用的权限:当用户不同意某一权限或者数据网络时,应当答应用户使用与这部分权限和数据网络不相干的功能。如通讯外交类应用,用户可以拒绝授予相机权限,不应该影响与相机无关的功能操纵,如语音通话。
- 在进入应用的主界面之前不发起直接弹窗申请敏感权限,仅在用户使勤奋能时才请求对应的权限。如通讯外交类应用,在没有启用位置相干的功能时,不发起在启动应用时就申请位置权限。
- 应用若使用个人数据用于个性化广告和精准营销,需提供独立的关闭选项。
- 需要向用户提供对个人数据的控制本领;如在云服务上存储了个人数据,需要提供删除数据的方法。
- 应用同时支持单装备和跨装备场景时,用户能够单独关闭跨装备应用场景。
- 如果应用是给未成年人设计的,或者应用通过网络的用户年龄数据识别出用户是未成年人,开辟者应该结合目标市场国家的相干法律,专门分析未成年人个人数据掩护的题目。
- 网络未成年人数据前需要征得监护人的同意。
1.2 -> 数据最小化
应用个人数据网络应与数据处置惩罚目标相干,且是适当、须要的。开辟者应尽大概对个人数据进行匿名化或假名化处置惩罚,低落数据主体的风险。仅可网络和处置惩罚与特定目标相干且必须的个人数据,不能对数据做出与特定目标不相干的处置惩罚。
- 敏感权限申请的时间要满足权限最小化的要求,在进行权限申请时,只申请获取必须的信息或资源所需要的权限。如应用不需要相机权限就能够实现其功能时,则不应该向用户申请相机权限。
- 应用针对数据的网络要满足最小化要求,不网络与应用提供服务无关联的数据。如通讯外交类应用,不应网络用户的网页浏览记录。
- 数据使用的功能要求能够使用户受益,网络的数据不能用于与用户正常使用无关的功能。如应用不得将“生物特征”、“康健数据”等敏感个人数据用于服务改进、投放广告或营销等非业务核心功能。
- 体系禁止应用在后台访问相机和麦克风的数据;
- 应用使用第三方付出交易过程中,如非适用法律要求或为提供第三方付出服务所必须,不得记录用户交易类鉴权信息,或向第三方批露与用户特定交易无关的用户个人信息。
- 应用不得仅出于广告投放或数据分析的目标而请求位置权限。
- 禁止在日记中打印敏感个人数据,如需要打印个人数据时,应对个人数据进行匿名化或假名化处置惩罚;
- 避免使用IMEI和序列号等永久性的标识符,尽量使用可以重置的标识符,如体系提供了NetworkID和DVID作为分布式场景下的装备标识符,广告业务场景下则发起使用OAID,基于应用的分析则发起使用ODID和AAID,其他需要唯一标识符的场景可以使用UUID接口生成;
- 不再需要使用的数据需要实时清除,低落数据泄露的风险。如分布式业务场景下装备断开分布式网络,暂时缓存的数据需要实时删除。
- 在后台连续读取位置信息场景时,请申请ohos.permission.LOCATION_IN_BACKGROUND权限。
- 专为未成年人设计的应用不发起请求获取位置权限。
1.3 -> 身份掩护
使用隐私加强技术,使数据离开端侧时掩护用户的身份。
- 应用使用用户可以重置的随机标识符取代唯一标识符。
- 应用导出个人数据时,对导出的个人数据进行加密掩护或匿名化处置惩罚。
1.4 -> 数据安全保障
从技术上保证数据处置惩罚活动的安全性,包括个人数据的加密存储、安全传输等安全机制,应默认开启或采取安全掩护步伐。
- 应用产生的密钥以及用户的敏感个人数据需要存储在应用的私有目次下。
- 应用可以调用体系提供的本地数据库RdbStore的加密接口对敏感个人数据进行加密存储。
- 应用产生的分布式数据可以调用体系的分布式数据库进行存储,对于敏感个人数据需要接纳分布式数据库提供的加密接口进行加密。
需要分别针对本地传输和远程传输采取不同的安全掩护步伐。
本地传输:
应用通过intent跨应用传输数据时避免包含敏感个人数据,防止隐式调用导致intent劫持,导致个人数据泄露。
- 应用内组件调用应接纳安全方式,避免通过隐式方式进行调用组件,防止组件劫持。
- 避免使用socket方式进行本地通讯,如需使用,localhost端标语随机生成,并对端口毗连对象进行身份认证和鉴权。
- 本地IPC通讯安全:作为服务提供方需要校验服务使用方的身份和访问权限,防止服务使用方进行身份仿冒或者权限绕过。
远程传输:
- 使用https取代http进行通讯,并对https证书进行严格校验。
- 避免进行远程端口进行通讯,如需使用,需要对端口毗连对象进行身份认证和鉴权。
- 应用进行跨装备通讯时,需要校验被访问装备和应用的身份信息,防止被访问方的装备和应用进行身份仿冒。
- 应用进行跨装备通讯时,作为服务提供方需要校验服务使用方的身份和权限,防止服务使用方进行身份仿冒或者权限绕过。
2 -> 三方应用调用管控机制
2.1 -> 为什么要进行调用管控
后台进程启动过多,会消耗体系的内存、CPU等资源,造成用户装备耗电快、卡顿等现象。因此,为了保证用户体验,体系会对三方用户应用步伐之间的PA调用进行管控,镌汰不须要的关联拉起。
注意:三方应用是相对于体系应用(不可卸载或者appId小于10000的应用)而言的,由第三方开辟的用户应用步伐。
2.2 -> 相干概念
- 前台:用户应用步伐有可见的FA正在表现,则以为用户应用步伐在前台。
- 用户应用步伐内调用:同一用户应用步伐内的FA、PA之间的访问。
2.3 -> 调用管控总体思路
- 用户应用步伐内调用不管控。
- 三方用户应用步伐间调用严格管控:禁止三方用户应用步伐在后台调用其他三方应用的PA;严格管控三方用户应用步伐在前台调用其他用户应用步伐的PA。
2.4 -> 管控规则
- 用户应用步伐内调用 不管控。
- 三方用户应用步伐间调用 三方应用步伐A调用三方应用步伐B的PA,具体限定如下:
- 禁止A在后台调用B的PA。
- 当B有进程存活时,答应A在前台调用B的PA;当B无进程存活时,禁止A的调用。
3 -> 资源分类与访问
应用开辟过程中,常常需要用到颜色、字体、间距、图片等资源,在不同的装备或配置中,这些资源的值大概不同。
- 应用资源:借助资源文件本领,开辟者在应用中自定义资源,自行管理这些资源在不同装备或配置中的体现。
- 体系资源:开辟者直接使用体系预置的资源定义。
3.1 -> 资源分类
3.1.1 -> resources目次
应用开辟中使用的各类资源文件,需要放入特定子目次中存储管理。resources目次包括三大类目次,一类为base目次,一类为限定词目次,另有一类为rawfile目次。stage模型多工程情况下共有的资源文件放到AppScope下的resources目次。
base目次默认存在,而限定词目次需要开辟者自行创建。应用使用某资源时,体系会根据当前装备状态优先从相匹配的限定词目次中寻找该资源。只有当resources目次中没有与装备状态匹配的限定词目次,或者在限定词目次中找不到该资源时,才会去base目次中查找。rawfile是原始文件目次,不会根据装备状态去匹配不同的资源。
资源目次示例:
resources
|---base // 默认存在的目次
| |---element
| | |---string.json
| |---media
| | |---icon.png
|---en_GB-vertical-car-mdpi // 限定词目次示例,需要开辟者自行创建
| |---element
| | |---string.json
| |---media
| | |---icon.png
|---rawfile
表1 resources目次分类 分类base目次限定词目次rawfile目次组织形式 base目次是默认存在的目次。当应用的resources目次中没有与装备状态匹配的限定词目次时,会自动引用该目次中的资源文件。
base目次的二级子目次为资源组目次,用于存放字符串、颜色、布尔值等基础元素,以及媒体、动画、布局等资源文件。
限定词目次需要开辟者自行创建。目次名称由一个或多个表征应用场景或装备特征的限定词组合而成。
限定词目次的二级子目次为资源组目次,用于存放字符串、颜色、布尔值等基础元素,以及媒体、动画、布局等资源文件。
支持创建多层子目次,目次名称可以自定义,文件夹内可以自由放置各类资源文件。
rawfile目次的文件不会根据装备状态去匹配不同的资源。
编译方式目次中的资源文件会被编译成二进制文件,并赋予资源文件ID。目次中的资源文件会被编译成二进制文件,并赋予资源文件ID。目次中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。引用方式通过指定资源类型(type)和资源名称(name)来引用。通过指定资源类型(type)和资源名称(name)来引用。通过指定文件路径和文件名来引用。 3.1.2 -> 限定词目次
限定词目次可以由一个或多个表征应用场景或装备特征的限定词组合而成,包括移动国家码和移动网络码、语言、文字、国家或地区、横竖屏、装备类型、颜色模式和屏幕密度等维度,限定词之间通过下划线(_)或者中划线(-)毗连。开辟者在创建限定词目次时,需要把握限定词目次的定名要求,以及限定词目次与装备状态的匹配规则。
限定词目次的定名要求
- 限定词的组合次序:_移动国家码_移动网络码-语言_文字_国家或地区-横竖屏-装备类型-颜色模式-屏幕密度_。开辟者可以根据应用的使用场景和装备特征,选择其中的一类或几类限定词构成目次名称。
- 限定词的毗连方式:语言、文字、国家或地区之间接纳下划线(_)毗连,移动国家码和移动网络码之间也接纳下划线(_)毗连,除此之外的其他限定词之间均接纳中划线(-)毗连。例如:zh_Hant_CN、zh_CN-car-ldpi。
- 限定词的取值范围:每类限定词的取值必须符合限定词取值要求表中的条件,否则,将无法匹配目次中的资源文件。
表2 限定词取值要求 限定词类型含义与取值阐明移动国家码和移动网络码 移动国家码(MCC)和移动网络码(MNC)的值取自装备注册的网络。MCC后面可以跟随MNC,使用下划线(_)毗连,也可以单独使用。例如:mcc460表示中国,mcc460_mnc00表示中国_中国移动。
详细取值范围,请查阅ITU-T E.212(国际电联相干标准)。
语言 表示装备使用的语言类型,由2~3个小写字母构成。例如:zh表示中文,en表示英语,mai表示迈蒂利语。
详细取值范围,请查阅ISO 639(ISO制定的语言编码标准)。
文字 表示装备使用的文字类型,由1个大写字母(首字母)和3个小写字母构成。例如:Hans表示简体中文,Hant表示繁体中文。
详细取值范围,请查阅ISO 15924(ISO制定的文字编码标准)。
国家或地区 表示用户所在的国家或地区,由2~3个大写字母或者3个数字构成。例如:CN表示中国,GB表示英国。
详细取值范围,请查阅ISO 3166-1(ISO制定的国家和地区编码标准)。
横竖屏 表示装备的屏幕方向,取值如下:
- vertical:竖屏
- horizontal:横屏
装备类型 表示装备的类型,取值如下:
- car:车机
- tv:智慧屏
- wearable:智能穿戴
颜色模式 表示装备的颜色模式,取值如下:
- dark:深色模式
- light:淡色模式
屏幕密度 表示装备的屏幕密度(单位为dpi),取值如下:
- sdpi:表示小规模的屏幕密度(Small-scale Dots Per Inch),适用于dpi取值为(0, 120]的装备。
- mdpi:表示中规模的屏幕密度(Medium-scale Dots Per Inch),适用于dpi取值为(120, 160]的装备。
- ldpi:表示大规模的屏幕密度(Large-scale Dots Per Inch),适用于dpi取值为(160, 240]的装备。
- xldpi:表示特大规模的屏幕密度(Extra Large-scale Dots Per Inch),适用于dpi取值为(240, 320]的装备。
- xxldpi:表示超大规模的屏幕密度(Extra Extra Large-scale Dots Per Inch),适用于dpi取值为(320, 480]的装备。
- xxxldpi:表示超特大规模的屏幕密度(Extra Extra Extra Large-scale Dots Per Inch),适用于dpi取值为(480, 640]的装备。
限定词目次与装备状态的匹配规则
- 在为装备匹配对应的资源文件时,限定词目次匹配的优先级从高到低依次为:移动国家码和移动网络码 > 区域(可选组合:语言、语言_文字、语言_国家或地区、语言_文字_国家或地区)> 横竖屏 > 装备类型 > 颜色模式 > 屏幕密度。
- 如果限定词目次中包含移动国家码和移动网络码、语言、文字、横竖屏、装备类型、颜色模式限定词,则对应限定词的取值必须与当前的装备状态完全一致,该目次才华够参与装备的资源匹配。例如,限定词目次“zh_CN-car-ldpi”不能参与“en_US”装备的资源匹配。
3.1.3 -> 资源组目次
base目次与限定词目次下面可以创建资源组目次(包括element、media、profile),用于存放特定类型的资源文件。
表3 资源组目次阐明 资源组目次目次阐明资源文件element 表示元素资源,以下每一类数据都接纳相应的JSON文件来表征。
- boolean,布尔型
- color,颜色
- float,浮点型
- intarray,整型数组
- integer,整型
- pattern,样式
- plural,复数形式
- strarray,字符串数组
- string,字符串
element目次中的文件名称发起与下面的文件名保持一致。每个文件中只能包含同一类型的数据。
- boolean.json
- color.json
- float.json
- intarray.json
- integer.json
- pattern.json
- plural.json
- strarray.json
- string.json
media表示媒体资源,包括图片、音频、视频等非文本格式的文件。文件名可自定义,例如:icon.png。rawfile表示其他类型文件,在应用构建为hap包后,以原始文件形式保存,不会被集成到resources.index文件中。文件名可自定义。 媒体资源类型阐明:
表4 图片资源类型阐明 格式
文件后缀名JPEG.jpgPNG.pngGIF.gifSVG.svgWEBP.webpBMP.bmp 表5 音视频资源类型阐明 格式支持的文件类型H.263 .3gp
.mp4
H.264 AVC
Baseline Profile(BP)
.3gp
.mp4
MPEG-4 SP
.3gpVP8 .webm
.mkv
资源文件示例:
color.json文件的内容如下:
- {
- "color": [
- {
- "name": "color_hello",
- "value": "#ffff0000"
- },
- {
- "name": "color_world",
- "value": "#ff0000ff"
- }
- ]
- }
复制代码 float.json文件的内容如下:
- {
- "float":[
- {
- "name":"font_hello",
- "value":"28.0fp"
- },
- {
- "name":"font_world",
- "value":"20.0fp"
- }
- ]
- }
复制代码 string.json文件的内容如下:
- {
- "string":[
- {
- "name":"string_hello",
- "value":"Hello"
- },
- {
- "name":"string_world",
- "value":"World"
- },
- {
- "name":"message_arrive",
- "value":"We will arrive at %s."
- }
- ]
- }
复制代码 plural.json文件的内容如下:
- {
- "plural":[
- {
- "name":"eat_apple",
- "value":[
- {
- "quantity":"one",
- "value":"%d apple"
- },
- {
- "quantity":"other",
- "value":"%d apples"
- }
- ]
- }
- ]
- }
复制代码 3.2 -> 资源访问
3.2.1 -> 应用资源
创建资源文件
在resources目次下,可按照限定词目次和资源组目次的阐明创建子目次和目次内的文件。
同时,DevEco Studio也提供了创建资源目次和资源文件的界面。
- 创建资源目次及资源文件
在resources目次右键菜单选择“New > Resource File”,此时可同时创建目次和文件。
文件默认创建在base目次的对应资源组下。如果选择了限定词,则会按照定名规范自动生成限定词+资源组目次,并将文件创建在目次中。
图中Avaliable qualifiers为供选择的限定词目次,通过右边的小箭头可添加或者删除。File name为需要创建的文件名,Resource type为资源组类型,默认是element。Root Element为资源类型。创建的目次名自动生成,格式固定为“限定词.资源组”,例如:创建一个限定词为dark的element目次,自动生成的目次名称为“dark.element”。
在resources目次右键菜单选择“New > Resource Directory”,此时可创建资源目次。
资源目次创建的是base目次,也可根据需求创建其它限定词目次。确定限定词后,选择资源组类型,当前资源组类型支持Element、Media、Profile三种,创建后自动生成目次名称。
在资源目次的右键菜单选择“New > XXX Resource File”,即可创建对应资源组目次的资源文件。
例如,在element目次下可新建Element Resource File。
访问应用资源
在工程中,通过"$r('app.type.name')"的形式引用应用资源。app代表是应用内resources目次中定义的资源;type代表资源类型(或资源的存放位置),可以取“color”、“float”、“string”、“plural”、“media”,name代表资源定名,由开辟者定义资源时确定。
引用rawfile下资源时使用"$rawfile('filename')"的形式,filename需要表示为rawfile目次下的文件相对路径,文件名需要包含后缀,路径开头不可以以"/"开头。
阐明:资源形貌符不能拼接使用,仅支持普通字符串如'app.type.name'。在xxx.ets文件中,可以使用在resources目次中定义的资源。
- Text($r('app.string.string_hello'))
- .fontColor($r('app.color.color_hello'))
- .fontSize($r('app.float.font_hello'))
- Text($r('app.string.string_world'))
- .fontColor($r('app.color.color_world'))
- .fontSize($r('app.float.font_world'))
- // 引用string.json资源,$r的第二个参数用于替换%s,value为"We will arrive at five of the clock"。
- Text($r('app.string.message_arrive', "five of the clock"))
- .fontColor($r('app.color.color_hello'))
- .fontSize($r('app.float.font_hello'))
- // 引用plural$资源,第一个指定plural资源,第二个参数指定单复数的数量quantity,此处第三个数字为对%d的替换
- // 单数下value为"5 apple",复数下value为"5 apples"。
- Text($r('app.plural.eat_apple', 5, 5))
- .fontColor($r('app.color.color_world'))
- .fontSize($r('app.float.font_world'))
- Image($r('app.media.my_background_image')) // media资源的$r引用
- Image($rawfile('test.png')) // rawfile$r引用rawfile目录下图片
- Image($rawfile('newDir/newTest.png')) // rawfile$r引用rawfile目录下图片
复制代码 3.2.2 -> 体系资源
体系资源包含色彩、圆角、字体、间距、字符串及图片等。通过使用体系资源,不同的开辟者可以开辟出具有相同视觉风格的应用。
开辟者可以通过“$r('sys.type.resource_id')”的形式引用体系资源。sys代表是体系资源;type代表资源类型,可以取“color”、“float”、“string”、“media”;resource_id代表资源id。
阐明:
- 仅声明式开辟范式支持使用体系资源,类Web开辟范式不支持。
- 体系资源的使用场景、id、参数详细对照表详见体系资源。
- // API version 7
- Text('Hello')
- .fontColor($r('sys.color.id_color_emphasize'))
- .fontSize($r('sys.float.id_text_size_headline1'))
- .fontFamily($r('sys.string.id_text_font_family_medium'))
- .backgroundColor($r('sys.color.id_color_palette_aux1'))
- Image($r('sys.media.ic_app'))
- .border({color: $r('sys.color.id_color_palette_aux1'), radius: $r('sys.float.id_corner_radius_button'), width: 2})
- .margin({top: $r('sys.float.id_elements_margin_horizontal_m'), bottom: $r('sys.float.id_elements_margin_horizontal_l')})
- .height(200)
- .width(300)
- // API version 8
- Text('Hello')
- .fontColor($r('sys.color.ohos_id_color_emphasize'))
- .fontSize($r('sys.float.ohos_id_text_size_headline1'))
- .fontFamily($r('sys.string.ohos_id_text_font_family_medium'))
- .backgroundColor($r('sys.color.ohos_id_color_palette_aux1'))
- Image($r('sys.media.ohos_app_icon'))
- .border({color: $r('sys.color.ohos_id_color_palette_aux1'), radius: $r('sys.float.ohos_id_corner_radius_button'), width: 2})
- .margin({top: $r('sys.float.ohos_id_elements_margin_horizontal_m'), bottom: $r('sys.float.ohos_id_elements_margin_horizontal_l')})
- .height(200)
- .width(300)
复制代码
感谢各位大佬支持!!!
互三啦!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |