การนำไปใช้
กำหนดค่า recognizer
นำเข้า SORI framework และกำหนดค่า shared recognizer ด้วย credentials ของแอปพลิเคชัน SORI
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) ที่ลงทะเบียนไว้
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
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:
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
หยุดการรู้จำ
หยุดการรู้จำเมื่อแอปไม่จำเป็นต้องรับเสียงจากไมโครโฟนแล้ว
recognizer.stopRecognition()การรู้จำในพื้นหลัง
หากแอปต้องการการรู้จำในพื้นหลัง ให้เพิ่ม audio ลงใน UIBackgroundModes ใน Info.plist การรู้จำในพื้นหลังจะทำงานขณะที่แอปกำลังทำงาน หากแอป ถูกยุติ การรู้จำจะหยุดด้วย
การจัดการข้อผิดพลาด
ข้อผิดพลาดในการรู้จำจะส่งผ่าน recognition handler และการแจ้งเตือนข้อผิดพลาดของ SORI หากต้องการติดตามการแจ้งเตือนข้อผิดพลาด ให้ลงทะเบียน SORIError.errorNotificationName():
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")
}
}