0
0
Lập trình
TT

Hướng Dẫn Kiểm Tra Sự Sống Mặt Trong HarmonyOS với VisionKit

Đăng vào 7 tháng trước

• 5 phút đọc

Chủ đề:

KungFuTech

Giới Thiệu

Xin chào các bạn! Trong bài viết này, chúng ta sẽ khám phá HarmonyOS NEXT của Huawei, với một công cụ mạnh mẽ mang tên VisionKit, cho phép các nhà phát triển sử dụng các tính năng hình ảnh được hỗ trợ bởi AI. Tôi sẽ tập trung vào tính năng Kiểm Tra Sự Sống Mặt (interactiveLiveness) và hướng dẫn cách tích hợp nó vào ứng dụng của bạn với các ví dụ cụ thể.

📌 Kiểm Tra Sự Sống Mặt Là Gì?

Kiểm Tra Sự Sống Mặt là công nghệ được sử dụng để phân biệt khuôn mặt con người thực sự với các khuôn mặt giả (như ảnh, video hoặc mặt nạ) thông qua camera của thiết bị. Trong HarmonyOS NEXT, tính năng này xác minh tính xác thực bằng cách yêu cầu người dùng thực hiện các hành động tương tác, như nháy mắt hoặc gật đầu.

🎯 Các Tình Huống Sử Dụng

  • ✅ Hệ thống theo dõi điểm danh
  • ✅ Đăng nhập vào ứng dụng an toàn (xác thực danh tính)
  • ✅ Phát hiện người dùng giả
  • ✅ Hỗ trợ xác minh ID

🧑‍💻 Các Bước Phát Triển

1. Thêm Module & Quyền Cần Thiết

javascript Copy
import { interactiveLiveness } from '@kit.VisionKit';
import { common, abilityAccessCtrl, Permissions } from '@kit.AbilityKit';

Thêm quyền camera vào tệp module.json5 của bạn.

json Copy
"requestPermissions":[
  {
    "name": "ohos.permission.CAMERA",
    "reason": "$string:camera_desc",
    "usedScene": {"abilities": []}
  }
  ]

2. Thiết Kế Giao Diện Người Dùng

javascript Copy
@State routeMode: string = "replace";
@State actionsNum: number = 3;

Radio({ value: "replace", group: "routeMode" }).checked(true)
Radio({ value: "back", group: "routeMode" }).checked(false)

TextInput({ placeholder: "Nhập 3 hoặc 4" }).type(InputType.Number)

3. Thêm Nút Bắt Đầu

javascript Copy
Button("Bắt đầu kiểm tra")
  .onClick(() => {
    this.startDetection();
  })

4. Xử Lý Quyền & Thiết Lập

javascript Copy
private startDetection() {
  abilityAccessCtrl.createAtManager().requestPermissionsFromUser(this.context, this.array).then((res) => {
    if (res.permissions[0] === "ohos.permission.CAMERA" && res.authResults[0] === 0) {
      this.runLivenessDetection();
    }
  })
}

5. Bắt Đầu Kiểm Tra Sự Sống

javascript Copy
private runLivenessDetection() {
  let config = {
    isSilentMode: "INTERACTIVE_MODE",
    routeMode: this.routeMode,
    actionsNum: this.actionsNum
  }

  interactiveLiveness.startLivenessDetection(config).then((success) => {
    if (success) {
      this.getDetectionResult();
    }
  }).catch((err) => {
    console.error("Kiểm tra thất bại", err);
  });
}

6. Lấy Kết Quả

javascript Copy
private getDetectionResult() {
  interactiveLiveness.getInteractiveLivenessResult().then(result => {
    console.log("Loại sự sống:", result.livenessType);
  }).catch(err => {
    console.error("Không thể lấy kết quả:", err);
  });
}

🛠️ Về Các API

Module interactiveLiveness cung cấp các chức năng chính sau để thực hiện kiểm tra sự sống mặt:

⚙️startLivenessDetection(config: InteractiveLivenessConfig): Promise
Khởi động màn hình kiểm tra sự sống mặt sử dụng cấu hình đã cung cấp. Kết quả của việc điều hướng (thành công hoặc thất bại) được trả về dưới dạng Promise.

⚙️getInteractiveLivenessResult(): Promise
Lấy kết quả của việc kiểm tra sự sống một cách bất đồng bộ. Kết quả trả về bao gồm chế độ kiểm tra, hình ảnh tốt nhất được chụp, và tùy chọn là một bộ đệm bảo mật và chuỗi chứng chỉ (cho các tình huống xác minh bảo mật hình ảnh).

⚙️InteractiveLivenessConfig
Một đối tượng cấu hình cho phép bạn tùy chỉnh hành vi kiểm tra sự sống. Nó bao gồm các tham số như:

  • isSilentMode: Xác định chế độ kiểm tra. Hiện tại chỉ hỗ trợ INTERACTIVE_MODE.
  • actionsNum: Chỉ định số lượng hành động của người dùng (như nháy mắt, gật đầu, v.v.) sẽ được chọn ngẫu nhiên để kiểm tra. Chỉ hỗ trợ 3 hoặc 4 hành động.
  • routeMode: Xác định cách ứng dụng điều hướng sau khi kiểm tra, sử dụng hoặc REPLACE_MODE hoặc BACK_MODE.
  • successfulRouteUrl / failedRouteUrl: Đường dẫn tùy chọn để điều hướng sau khi thành công hoặc thất bại.
  • Các tùy chọn bổ sung như challenge (cho các tình huống bảo mật), speechSwitch (hướng dẫn bằng giọng nói), và isPrivacyMode (yêu cầu quyền).

⚙️Các Kiểu Enum cho Cấu Hình:

  • DetectionMode: Xác định phương pháp kiểm tra. Hiện tại chỉ có INTERACTIVE_MODE.
  • ActionsNumber: Chỉ định số lượng hành động cần thiết (3 hoặc 4).
  • RouteRedirectionMode: Kiểm soát hành vi định tuyến sau khi kiểm tra (BACK_MODE hoặc REPLACE_MODE).

📌 Để biết thêm chi tiết, hãy xem tài liệu API chính thức.

🏆 Thực Hành Tốt Nhất

  • Đảm bảo yêu cầu quyền camera được xử lý đúng cách trước khi bắt đầu kiểm tra.
  • Kiểm tra khả năng tương tác của người dùng để đảm bảo họ thực hiện các hành động đúng cách.
  • Tùy chỉnh số lượng hành động cho phù hợp với ứng dụng của bạn.

⚠️ Các Cạm Bẫy Thường Gặp

  • Không yêu cầu quyền camera có thể dẫn đến việc ứng dụng không hoạt động.
  • Không xử lý tốt các lỗi có thể dẫn đến trải nghiệm người dùng kém.

🚀 Mẹo Hiệu Suất

  • Sử dụng camera có độ phân giải cao để cải thiện độ chính xác của việc phát hiện.
  • Tối ưu hóa giao diện người dùng để tăng cường trải nghiệm người dùng trong quá trình kiểm tra.

🛠️ Giải Quyết Vấn Đề

  • Nếu gặp lỗi khi khởi động kiểm tra, hãy kiểm tra lại quyền truy cập camera.
  • Đảm bảo rằng tất cả các phương thức API đều được gọi đúng cách và được xử lý ngoại lệ.

🎉 Kết Luận

Tính năng interactiveLiveness mà VisionKit cung cấp mang lại nhiều lợi ích cho việc xác thực người dùng và ngăn chặn các cuộc tấn công giả mạo trong ứng dụng HarmonyOS của bạn. Nó dễ sử dụng, hoạt động trên thiết bị và phản hồi rất nhanh chóng tùy thuộc vào hiệu suất của thiết bị.

Nếu bạn đang phát triển một ứng dụng tập trung vào bảo mật hoặc chỉ muốn thêm một lớp xác thực người dùng, tính năng này là một lựa chọn lý tưởng cho bạn.

Tài Liệu Tham Khảo

Kiểm Tra Sự Sống Mặt

Tác giả: Baris Tuzemen

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào