Skip to content

iOS 快速入門指南

快速入門 iOS SDK 最簡單的方法是下載並試用我們的 範例程式碼。此外,您還可以按照本快速入門指南,快速建立您的首個 iOS 健康測評應用程式。

完成本指南後,我們強烈建議您遵循我們的 軟體開發指南,以確保 Vitals™ SDK 產生的健康測評結果準確可靠。

SDK Installation

請按照 下載 頁面中的說明安裝 iOS SDK 並將其整合到您的專案中。

設定相機

整合 Vitals™ 健康測評(VHA) 中所述,第一步是設定相機。首先,建立一個新專案並按照以下說明操作。

相機權限

在開發 iOS 應用程式時,您需要在 Info.plist 檔案中指定以下內容,以允許應用程式使用相機:

xml
<key>NSCameraUsageDescription</key>
<string>Use for measuring vital signs</string>

TIP 提示

Info.plist 中,字串 "Use for measuring vital signs" 是相機用途的範例描述。您應該根據應用的用途指定您自己的描述。

Vital Sign Camera

Vital Sign Camera 中所述,在 Vitals™ SDK 中,我們提供了一個名為 VitalSignCamera 的特製相機組件。要設定它,請在 Main.storyboard 中,將一個 View 拖放到 ViewController 中,將其約束到根視圖,並將其類別設為 VitalSignCamera。例如:

設定 VitalSignCamera - Storyboard 示範

之後,將 VitalSignCamera 視圖作為 IBOutlet 連接到您的 ViewController.swift。請求相機權限並配置相機。

swift
import UIKit
import VitalSignSDK

class ViewController: UIViewController {
    
    static let API_KEY = "__YOUR_API_KEY__"

    @IBOutlet weak var camera: VitalSignCamera!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.setupCamera()
    }

    private func setupCamera() {
        /* Vitals™ 雲端服務配置 */
        let config = VitalSignEngineConfig(
            serverId: ServerId.awsEnterpriseProd,
            apiKey: Self.API_KEY
        )
        
        camera.requestPermission().done { [unowned self] in
            
            guard $0 else { return }
            
            self.camera.setup { camera in
                camera.isActive = true
                camera.config = config
            }
            
        }
    }
}

TIP 提示

在上述範例中,字串 __YOUR_API_KEY__ 應替換為您自己的 API 金鑰。請聯絡我們以取得您的 API 金鑰,它是存取 Vitals™ 雲端服務的憑證。

運行應用程式,您現在應該能夠看到相機預覽。有關系統和相機設定的更多詳細信息,請參閱 設定相機

獲取用戶健康檔案

正如 整合 Vitals™ 健康測評(VHA) 中所述,我們必須收集用戶的健康檔案和病史數據,才能獲得個人化的健康測評結果並提高測評的準確性。

首先,使用您收集的用戶健康檔案建立一個 UserInfo 物件。

swift
class ViewController: UIViewController {
    
    static let USER_ID = "__YOUR_USER_ID__"
    
    // ...

    private func setupCamera() {
        let userInfo = UserInfo(
            gender: .female,
            age: 30,
            userId: Self.USER_ID )

        // ...
    }
}

您可以將收集到的用戶健康檔案提供給 Vitals™ SDK,方法是在 setup() 程式碼區塊中將這些資訊提供給 VitalSignCamera 中的 userInfo 屬性。例如:

swift
camera.requestPermission().done { [unowned self] in
    // ...
    self.camera.setup { camera in
        // ...
        camera.userInfo = userInfo
    }
}

運行應用程式,您現在應該可以看到相機預覽了。

TIP 提示

在上面的範例中,字串__YOUR_USER_ID__應替換為您自己的使用者 ID。請聯絡我們以取得您的使用者 ID,該 ID 指定了 Vitals™ 雲端服務的訂閱方案。掃描所獲得的生命體徵會因訂閱方案而異,每個方案都提供一組獨特的生命體徵。

更多詳細信息,請參閱 獲取用戶健康檔案 頁面。

掃描生命體徵

要開始掃描,您只需呼叫 VitalSignCamera 元件的 startScanning() API 即可。

首先,在 Main.storyboard 中新增一個開始按鈕:

新增開始按鈕 - Storyboard 示範

使用 IBAction 將開始按鈕連接到您的 ViewController.swift,並呼叫 startScanning() API。

swift
class ViewController: UIViewController {
    
    // 我們已經準備好的相機參考
    @IBOutlet weak var camera: VitalSignCamera! 

    // ...
    
    @IBAction func onStartButtonClicked(_ sender: Any) {
        self.camera.startScanning()
    }
}

呼叫 API 後,元件將開始透過相機掃描人臉,持續時間為 30 秒。掃描成功後,將傳回生命體徵訊息。您可以透過 onVideoFrameProcessed 回呼函數記錄掃描進度並觀察任何錯誤。此回調函數以每秒 30Hz 的頻率(此頻率取決於相機的幀率)傳回處理結果。

swift
camera.requestPermission().done { [unowned self] in
    // ...
    self.camera.setup { camera in
        // ...
        camera.onVideoFrameProcessed = onVideoFrameProcessed
    }
}

定義 onVideoFrameProcessed 函數來列印掃描進度:

swift
func onVideoFrameProcessed(result: ProcessResult) {
    /* 如果掃描正在進行,則列印掃描階段和剩餘秒數。 */
    if let stage = result.healthResult?.stage,
       stage != .idle,
       let remainingSec = result.healthResult?.remainingTime {
        print("掃描階段 = \(stage), 剩餘秒數 = \(remainingSec)")
    }
    
    /* 若有錯誤則列印 */
    if let error = result.healthResult?.error {
        print("錯誤 = \(error)")
    }
}

運行應用程式,將你的臉部置於相機預覽的中央,點擊“Start Scanning”按鈕。將你的臉部移出相機預覽範圍,模擬「人臉遺失」錯誤。你應該在控制台中看到類似這樣的內容:

掃描階段 = collectingData, 剩餘秒數 = 21.667988061904907
掃描階段 = collectingData, 剩餘秒數 = 21.63428807258606
[VSE Core][ERROR] Face lost
錯誤 = faceLost
錯誤 = faceLost

有關處理掃描過程的更多詳細信息,請參閱 掃描生命體徵 頁面。

取得並展示健康測評結果

VitalSignCamera 組件會透過 onVideoFrameProcessed 回呼函數傳回健康測評結果。在下面的範例程式碼中,它會檢查心率是否已準備好,並在準備好後將其顯示在控制台中。

swift
/* 更新了 onVideoFrameProcessed 回呼函數 */
func onVideoFrameProcessed(result: ProcessResult) {
    // ...

    /* 取得心率結果 */
    if let health = result.healthResult?.health, let heartRate = health.vitalSigns?.heartRate {
        print("心率 = \(heartRate)")
    }
}

運行應用程式並進行掃描,30秒後,您將能夠看到以下心率結果:

掃描階段 = analyzingData, 剩餘秒數 = 0.08395302295684814
掃描階段 = analyzingData, 剩餘秒數 = 0.05001401901245117
掃描階段 = analyzingData, 剩餘秒數 = 0.016833066940307617
心率 = 93.03858964365857
心率 = 93.03858964365857
心率 = 93.03858964365857

Vitals™ SDK 中提供了更多生命體徵測評結果,我們也提供了測評結果的解讀指南。更多信息,請參閱 取得並展示健康測評結果 頁面。


🎉🎉🎉 恭喜! 🎉🎉🎉

您已完成您的第一個 Vitals™ 應用程式!


WARNING 重要提示

本指南僅提供使用 iOS SDK 的最小可行產品 (MVP),我們 Vitals™ 雲端服務仍提供更多功能和更多操作,以確保測評結果準確可靠。例如:檢查掃描條件、使用 訊號質量 指標等等。更多詳情,請參閱 軟體開發指南 頁面或 範例程式碼