鸿蒙系统开发【设备安全服务-应用设备状态检测】安全

设备安全服务-应用设备状态检测

介绍

本示例向您介绍如何在应用中获取DeviceToken用于对应用的设备状态进行检测。

需要使用设备安全服务接口 @kit.DeviceSecurityKit

效果预览

1

Sample工程的配置与使用

在DevEco中配置Sample工程的步骤如下

  1. [创建项目]及[应用]。
  2. 打开Sample应用,使用[AppGallery Connect]配置的应用包名替换app.json5文件中的bundleName属性值。
  3. 使用[AppGallery Connect]配置的应用Client ID替换module.json5文件中的client_id属性值。
  4. 生成SHA256应用签名证书指纹并添加到[AppGallery Connect]对应的应用配置中,证书指纹生成请参考应用开发准备中的[添加公钥指纹]章节。
  5. 在开通安全检测服务,具体Device Security Kit开发指南。
Sample工程使用说明
  1. 运行该 Sample 应用前,先对设备进行联网。
  2. 运行该 Sample 应用,点击"CheckSysIntegrity"按钮获取系统完整性检测结果,点击"CheckUrlThreat"按钮获取URL检测结果,如果获取成功,页面会显示检测结果,如果获取失败,页面会显示相应的错误码。

具体实现

本示例展示系统完整性检测,URL检测的功能在页面中直接调用,使用safetyDetect.checkSysIntegrity()方法获取当前设备的系统完整性检测结果,使用safetyDetect.checkUrlThreat()方法获取URL检测结果。

源码参考SafetyDetectModel.ts

import { hilog } from '@kit.PerformanceAnalysisKit';
import { safetyDetect } from '@kit.DeviceSecurityKit';
import { BusinessError} from '@kit.BasicServicesKit';

const TAG: string = '[SafetyDetectModel]';

function checkSysIntegrityPromise(): Promise<String> {
  return new Promise(async (resolve, reject) => {
    let strLen: number = 16;
    let srcStr: string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefhijklmnopqrstuvwxyz0123456789";
    let randomStr: string = "";
    for (let i = 0; i < strLen; i++) {
      randomStr += srcStr.charAt(Math.floor(Math.random() * srcStr.length));
    }
    let sysIntegrityRequest: safetyDetect.SysIntegrityRequest = {
      nonce: randomStr
    }
    try {
      hilog.info(0x0000, TAG, 'CheckSysIntegrity begin.');
      let sysIntegrityResponse: safetyDetect.SysIntegrityResponse =
        await safetyDetect.checkSysIntegrity(sysIntegrityRequest);
      let result: string = sysIntegrityResponse.result;
      resolve(result);
      hilog.info(0x0000, TAG, 'Succeeded in checkSysIntegrity: %{public}s', result);
    }
    catch (err) {
      hilog.error(0x0000, TAG, 'CheckSysIntegrity failed: %{public}d %{public}s', err.code, err.message);
      reject(err);
    }
  });
}

function checkUrlThreatPromise(): Promise<String> {
  return new Promise(async (resolve, reject) => {
    let urlCheckRequest: safetyDetect.UrlCheckRequest = {
      urls: ['https://an.example.test','https://www.huawei.com']
    }
    try {
      hilog.info(0x0000, TAG, 'CheckUrlThreat begin.');
      let urlCheckResponse: safetyDetect.UrlCheckResponse = await safetyDetect.checkUrlThreat(urlCheckRequest);
      let results: safetyDetect.UrlCheckResult[]  = urlCheckResponse.results;
      let resultStr: string = "";
      for (let result of results) {
        let url: string =  result.url;
        let threat: safetyDetect.UrlThreatType =  result.threat;
        resultStr = resultStr + "url: " + url + "      threat: " + threat + "\n";
      }
      resolve(resultStr);
      hilog.info(0x0000, TAG, 'Succeeded in checkUrlThreat: %{public}s', resultStr);
    }
    catch (err) {
      hilog.error(0x0000, TAG, 'CheckUrlThreat failed: %{public}d %{public}s', err.code, err.message);
      reject(err);
    }
  });
}

export class SafetyDetectModel {
  private dispalyText: String = '';

  async checkSysIntegrity(callback: Function) {
    this.dispalyText = '';
    await checkSysIntegrityPromise().then((token) => {
      this.dispalyText = token;
      callback(this.dispalyText);
    }).catch((err: BusinessError) => {
      this.dispalyText = 'check SysIntegrity failed, errCode is ' + err.code;
      callback(this.dispalyText);
    });
  }

  async checkUrlThreat(callback: Function) {
    this.dispalyText = '';
    await checkUrlThreatPromise().then((token) => {
      this.dispalyText = token;
      callback(this.dispalyText);
    }).catch((err: BusinessError) => {
      this.dispalyText = 'check UrlThreat failed, errCode is ' + err.code;
      callback(this.dispalyText);
    });
  }
}

let safetyDetectModel = new SafetyDetectModel();

export default safetyDetectModel as SafetyDetectModel;

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

在这里插入图片描述

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值