已合并
支持设置本地HOTA域名 Co-authored-by:Agent #158892
keegan-cheng创建于 8月3日
支持设置本地HOTA域名 Co-authored-by:Agent #158892
已合并
共 1 个文件变更+146-1
| @@ -133,7 +133,7 @@ try { | |||
| 133 | 133 | ||
| 134 | setOtaUpdatePolicy(admin: Want, policy: OtaUpdatePolicy): void | 134 | setOtaUpdatePolicy(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_SYSTEM | 138 | **需要权限:** 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域名,使设备能够从企业指定的升级服务器获取升级包,避免通过公网升级,提升升级的安全性和可控性。 | ||
| 638 | + | ||
| 639 | +HOTA域名使用流程: | ||
| 640 | +1. 企业管理员通过MDM应用调用[systemManager.setLocalHotaDomain](#systemmanagersetlocalhotadomain)接口设置设备本机HOTA域名,指定升级包下载服务器。 | ||
| 641 | +2. 设备执行HOTA升级时,系统根据本机配置的HOTA域名查找并下载升级包,完成升级。 | ||
| 642 | +3. 企业管理员可调用[systemManager.getLocalHotaDomain](#systemmanagergetlocalhotadomain)接口查询设备当前配置的本机HOTA域名,验证配置是否正确。 | ||
| 643 | +4. 如需恢复系统默认升级服务器,可调用本接口并传入空字符串,将域名恢复为默认域名。 | ||
Z 整个流程需要用户参与吗?如果配置了升级管控策略,是否会冲突。 ![]() ![]() | |||
| 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 | + // 需根据实际情况进行替换 | ||
在PR信息中附上代码编译通过截图 ![]() ![]() | |||
| 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 | ||
🟡 建议修改 [TP-005] getLocalHotaDomain缺少 设备行为差异: 声明,setLocalHotaDomain有而get没有。返回值中“当设备不支持该接口时”已暗示存在设备行为差异,应补充声明。建议在 系统能力: 后补充: 设备行为差异: 该接口在PC/2in1企业设备中可正常调用,在其他设备中返回空字符串。 ![]() ![]() | |||
| 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域名。当设备不支持该接口时,返回空字符串作为默认值。 | | ||
🟡 建议修改 [TP-005] getLocalHotaDomain返回值“当设备不支持该接口时返回空字符串”与setLocalHotaDomain在非PC/2in1设备上抛801错误码的行为不一致。同文件中isActivationLockDisabled(get类API)也是抛801而非静默返回默认值。建议统一行为模式:若与set统一抛801,则返回值改为“返回本机HOTA域名”并补充801错误码;若确认返回空字符串,须在设备行为差异中显式说明与set的行为差异。 ![]() ![]() | |||
| 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 | ||
| 635 | addDisallowedNearLinkProtocols(admin: Want, protocols: Array<NearLinkProtocol>, accountId: number): void | 780 | addDisallowedNearLinkProtocols(admin: Want, protocols: Array<NearLinkProtocol>, accountId: number): void |


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