Skip to content

การนำไปใช้

กำหนดค่า recognizer

นำเข้า SORI framework และกำหนดค่า shared recognizer ด้วย credentials ของแอปพลิเคชัน SORI

swift
import SORI

let recognizer = SORIAudioRecognizer.shared()
let configuration = SORIAudioRecognizer.Configuration(
    applicationID: "YOUR_SORI_APP_ID",
    secretKey: "YOUR_SORI_SECRET_KEY"
)

recognizer.configure(configuration)

เริ่มการรู้จำ

หลังจากกำหนดค่าแล้ว ให้เรียก startRecognition(repeat:handler:) โดย handler จะรับ payload ของแคมเปญที่ SORI API ส่งคืน เมื่อตรวจพบสื่อ (Material) ที่ลงทะเบียนไว้

swift
recognizer.startRecognition(repeat: true) { media, error in
    if let error {
        print("SORI recognition error: \(error)")
        return
    }

    guard let campaign = media as? [String: Any] else {
        return
    }

    handleRecognizedCampaign(campaign)
}

เปิดใช้งานการรู้จำ Audio Marker

การรู้จำ Audio Marker ถูกปิดไว้โดยค่าเริ่มต้น ในโหมดเริ่มต้น การรู้จำบน iOS จะใช้เฉพาะ fingerprint เท่านั้น ให้เปิดใช้งานเฉพาะเมื่อการตั้งค่า SORI Console ใช้ Audio Markers

swift
let configuration = SORIAudioRecognizer.Configuration(
    applicationID: "YOUR_SORI_APP_ID",
    secretKey: "YOUR_SORI_SECRET_KEY"
)
configuration.audiomarker = true
configuration.audiomarkerChangeHandler = { marker in
    print("Audio Marker:", marker ?? "none")
}

recognizer.configure(configuration)

เมื่อผลลัพธ์แคมเปญเชื่อมโยงกับมาร์กเกอร์ที่ตรวจพบ มาร์กเกอร์อาจ รวมอยู่ใน payload การรู้จำในรูปแบบ marker หรือ trait.marker:

swift
recognizer.startRecognition(repeat: true) { media, error in
    guard let campaign = media as? [String: Any], error == nil else {
        return
    }

    let marker = campaign["marker"] as? String
        ?? ((campaign["trait"] as? [String: Any])?["marker"] as? String)

    if let marker {
        print("Campaign marker:", marker)
    }
}

ในฝั่งเซิร์ฟเวอร์นั้น SORI Console จะจับคู่มาร์กเกอร์ที่ตรวจพบกับแอตทริบิวต์ ที่กำหนดค่าไว้ของ Audio Marker เพื่อใช้กับประวัติกิจกรรม สถิติ รายงาน และ Webhook

หยุดการรู้จำ

หยุดการรู้จำเมื่อแอปไม่จำเป็นต้องรับเสียงจากไมโครโฟนแล้ว

swift
recognizer.stopRecognition()

การรู้จำในพื้นหลัง

หากแอปต้องการการรู้จำในพื้นหลัง ให้เพิ่ม audio ลงใน UIBackgroundModes ใน Info.plist การรู้จำในพื้นหลังจะทำงานขณะที่แอปกำลังทำงาน หากแอป ถูกยุติ การรู้จำจะหยุดด้วย

การจัดการข้อผิดพลาด

ข้อผิดพลาดในการรู้จำจะส่งผ่าน recognition handler และการแจ้งเตือนข้อผิดพลาดของ SORI หากต้องการติดตามการแจ้งเตือนข้อผิดพลาด ให้ลงทะเบียน SORIError.errorNotificationName():

swift
NotificationCenter.default.addObserver(forName: SORIError.errorNotificationName(), object: nil, queue: OperationQueue.main) { notification in
    guard let error = notification.object as? NSError,
          let code = SORIErrorCode(rawValue: error.code) else {
        print("Unknown error notification: \(notification)")
        return
    }

    if code == .authenticationFailure {
        print("Failed to authenticate")
    }
}