已合并
支持设置本地HOTA域名 Co-authored-by:Agent #158892
keegan-cheng创建于 8月3日
支持设置本地HOTA域名 Co-authored-by:Agent #158892
已合并
keegan-cheng创建于 8月3日
1 个文件变更+146-1
@@ -133,7 +133,7 @@ try {
133 133 
134setOtaUpdatePolicy(admin: Want, policy: OtaUpdatePolicy): void134setOtaUpdatePolicy(admin: Want, policy: OtaUpdatePolicy): void
135 135 
136-设置升级策略。设置成功后,系统将按照指定的策略类型进行OTA升级处理,不同策略类型对应不同的升级行为。内网升级场景下,需要先调用[systemManager.notifyUpdatePackages](#systemmanagernotifyupdatepackages)接口通知系统更新包,再调用该接口设置升级策略。136+设置升级策略。设置成功后,系统将按照指定的策略类型进行OTA升级处理,不同策略类型对应不同的升级行为。内网升级场景下,需要先调用[systemManager.notifyUpdatePackages](#systemmanagernotifyupdatepackages)接口通知系统更新包,再调用该接口设置升级策略。当升级策略设置为禁止升级时,设备将禁止OTA升级,此时通过[systemManager.setLocalHotaDomain](#systemmanagersetlocalhotadomain)接口设置的本机HOTA域名不生效。
137 137 
138**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SYSTEM138**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SYSTEM
139 139 
@@ -630,6 +630,151 @@ try {
630}630}
631```631```
632 632 
633+## systemManager.setLocalHotaDomain
634+ 
635+setLocalHotaDomain(admin: Want, domain: string): void
636+ 
637+设置设备本机HOTA(Huawei Over-the-Air)域名。设置成功后,系统将使用指定的HOTA域名进行升级。适用于企业内网升级场景,帮助企业管理员指定设备本机HOTA域名,使设备能够从企业指定的升级服务器获取升级包,避免通过公网升级,提升升级的安全性和可控性。
连峰
连峰连峰25 天前

缺少hota域名流程说明,缺少端到端说明。缺少场景说明。

likedislike
638+ 
639+HOTA域名使用流程:
640+1. 企业管理员通过MDM应用调用[systemManager.setLocalHotaDomain](#systemmanagersetlocalhotadomain)接口设置设备本机HOTA域名,指定升级包下载服务器。
641+2. 设备执行HOTA升级时,系统根据本机配置的HOTA域名查找并下载升级包,完成升级。
642+3. 企业管理员可调用[systemManager.getLocalHotaDomain](#systemmanagergetlocalhotadomain)接口查询设备当前配置的本机HOTA域名,验证配置是否正确。
643+4. 如需恢复系统默认升级服务器,可调用本接口并传入空字符串,将域名恢复为默认域名。
Z
Zzoulianfeng25 天前

整个流程需要用户参与吗?如果配置了升级管控策略,是否会冲突。

likedislike
644+ 
645+适用场景:
646+- 内网升级:企业内网环境无法访问公网升级服务器,管理员指定企业内网HOTA升级服务器域名,使设备能够从内网服务器获取升级包。
647+- 升级服务器变更:企业升级服务器迁移或更换后,管理员重新设置本机HOTA域名,确保设备从新的服务器获取升级包。
648+- 升级服务器故障切换:企业升级服务器发生故障时,管理员可切换至备用升级服务器域名,保障升级业务连续性。
649+ 
650+> **说明:**
651+>
652+> 当通过[systemManager.setOtaUpdatePolicy](#systemmanagersetotaupdatepolicy)接口将升级策略设置为禁止升级时,设备将禁止OTA升级,此场景下设置的本机HOTA域名无法生效。
653+ 
654+传入的domain需符合域名命名规则,校验规则如下:
655+1. 长度不能超过64个字符。
656+2. 不支持IP地址和localhost。
657+3. 域名必须以https\://开头。
658+4. 域名必须匹配正则表达式:^(?:\[a-zA-Z0-9\](?:\[a-zA-Z0-9.-\]*\[a-zA-Z0-9\])?\\.)+\[a-zA-Z\]{2,}$。此正则表达式不参与校验https\://部分。
659+5. 传入空字符串表示将域名恢复为默认域名,空字符串不受上述校验规则约束。
660+ 
661+**起始版本:** 26.1.0
662+ 
663+**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SYSTEM
664+ 
665+**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
666+ 
667+**设备行为差异:** 该接口在PC/2in1企业设备中可正常调用,在其他设备中返回801错误码。
668+ 
669+**模型约束:** 此接口仅可在Stage模型下使用。
670+ 
671+**冲突规则:** [配置](../../mdm/mdm-kit-multi-mdm.md#规则3配置)。
672+ 
673+**参数:**
674+ 
675+| 参数名 | 类型 | 必填 | 说明 |
676+| ----- | ----------------------------------- | ---- | ------- |
677+| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
678+| domain | string | 是 | 本机HOTA域名,具体校验规则详见接口说明。 |
679+ 
680+**错误码**
681+ 
682+以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
683+ 
684+| 错误码ID | 错误信息 |
685+| ------- | ---------------------------------------------------------------------------- |
686+| 9200001 | The application is not an administrator application of the device. |
687+| 9200002 | The administrator application does not have permission to manage the device. |
688+| 9200012 | Parameter verification failed. |
689+| 9200018 | This device is not an enterprise device. |
690+| 201 | Permission verification failed. The application does not have the permission required to call the API. |
691+| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
692+ 
693+**示例:**
694+ 
695+```ts
696+import { systemManager } from '@kit.MDMKit';
697+import { Want } from '@kit.AbilityKit';
698+ 
699+let wantTemp: Want = {
700+ // 需根据实际情况进行替换
wangzaiwei
wangzaiweiwangzaiwei25 天前

在PR信息中附上代码编译通过截图

likedislike
701+ bundleName: 'com.example.myapplication',
702+ abilityName: 'EnterpriseAdminAbility'
703+};
704+// 需根据实际情况进行替换
705+let domain: string = "https://www.hotaExample.com";
706+try {
707+ systemManager.setLocalHotaDomain(wantTemp, domain);
708+ console.info('Succeeded in setting local HOTA domain.');
709+} catch (err) {
710+ console.error(`Failed to set local HOTA domain. Code is ${err.code}, message is ${err.message}`);
711+}
712+```
713+ 
714+## systemManager.getLocalHotaDomain
715+ 
716+getLocalHotaDomain(admin: Want): string
717+ 
718+获取设备本机HOTA(Huawei Over-the-Air)域名。适用于需要查询当前设备配置的本机HOTA域名的场景。
719+ 
720+适用场景:
721+- 配置校验:升级前或升级异常后,通过查询本机HOTA域名确认设备当前升级服务器配置是否正确。
722+- 批量管理:企业管理员可通过MDM平台批量查询各设备的本机HOTA域名配置,统一管控设备升级方向。
723+ 
724+**起始版本:** 26.1.0
725+ 
726+**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SYSTEM
727+ 
728+**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
张译心
张译心张译心26 天前

🟡 建议修改 [TP-005]

getLocalHotaDomain缺少 设备行为差异: 声明,setLocalHotaDomain有而get没有。返回值中“当设备不支持该接口时”已暗示存在设备行为差异,应补充声明。建议在 系统能力: 后补充: 设备行为差异: 该接口在PC/2in1企业设备中可正常调用,在其他设备中返回空字符串。

likedislike
729+ 
730+**设备行为差异:** 该接口在PC/2in1企业设备中可正常调用,在其他设备中返回空字符串。
731+ 
732+**模型约束:** 此接口仅可在Stage模型下使用。
733+ 
734+**冲突规则:** [配置](../../mdm/mdm-kit-multi-mdm.md#规则3配置)。
735+ 
736+**参数:**
737+ 
738+| 参数名 | 类型 | 必填 | 说明 |
739+| ------ | ------------------------------------------------------- | ---- | ---------------------- |
740+| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
741+ 
742+**返回值:**
743+ 
744+| 类型 | 说明 |
745+| ------ | ----------------------------------- |
746+| string | 返回本机HOTA域名。当设备不支持该接口时,返回空字符串作为默认值。 |
张译心
张译心张译心26 天前

🟡 建议修改 [TP-005]

getLocalHotaDomain返回值“当设备不支持该接口时返回空字符串”与setLocalHotaDomain在非PC/2in1设备上抛801错误码的行为不一致。同文件中isActivationLockDisabled(get类API)也是抛801而非静默返回默认值。建议统一行为模式:若与set统一抛801,则返回值改为“返回本机HOTA域名”并补充801错误码;若确认返回空字符串,须在设备行为差异中显式说明与set的行为差异。

likedislike
747+ 
748+**错误码**
749+ 
750+以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
751+ 
752+| 错误码ID | 错误信息 |
753+| -------- | ------------------------------------------------------------ |
754+| 9200001 | The application is not an administrator application of the device. |
755+| 9200002 | The administrator application does not have permission to manage the device. |
756+| 9200018 | This device is not an enterprise device. |
757+| 201 | Permission verification failed. The application does not have the permission required to call the API. |
758+ 
759+**示例:**
760+ 
761+```ts
762+import { systemManager } from '@kit.MDMKit';
763+import { Want } from '@kit.AbilityKit';
764+ 
765+let wantTemp: Want = {
766+ // 需根据实际情况进行替换
767+ bundleName: 'com.example.myapplication',
768+ abilityName: 'EnterpriseAdminAbility'
769+};
770+try {
771+ let domain: string = systemManager.getLocalHotaDomain(wantTemp);
772+ console.info(`Succeeded in getting local HOTA domain: ${domain}`);
773+} catch (err) {
774+ console.error(`Failed to get local HOTA domain. Code is ${err.code}, message is ${err.message}`);
775+}
776+```
777+ 
633## systemManager.addDisallowedNearLinkProtocols<sup>20+</sup>778## systemManager.addDisallowedNearLinkProtocols<sup>20+</sup>
634 779 
635addDisallowedNearLinkProtocols(admin: Want, protocols: Array&lt;NearLinkProtocol&gt;, accountId: number): void780addDisallowedNearLinkProtocols(admin: Want, protocols: Array&lt;NearLinkProtocol&gt;, accountId: number): void