実装
このガイドはiOS SDK 5.0.12を対象としています。インストールと更新の手順を参照してください。
recognizerの構成
SORIフレームワークをimportし、SORIアプリケーション認証情報でshared recognizerを構成します。
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はSORI APIから返されるcampaign payloadを受け取ります。
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)
}オーディオマーカー認識の有効化
オーディオマーカー認識はデフォルトで無効です。デフォルトモードでは、iOS認識はfingerprint-onlyで動作します。SORI Consoleの設定でオーディオマーカーを使用する場合にのみ有効にしてください。
let configuration = SORIAudioRecognizer.Configuration(
applicationID: "YOUR_SORI_APP_ID",
secretKey: "YOUR_SORI_SECRET_KEY"
)
configuration.audiomarker = true
recognizer.configure(configuration)現在のマーカーUIと後続のアクティビティ補完には、SDKが管理する状態とアクティビティ結果APIを使用してください。SDKが失効、マーカーtrait、同一アクティビティの更新を管理します。既存のキャンペーン・検出コールバックとの互換性は維持されます。
順序付き連続アクティビティタイムラインの表示
以下は既存のキャンペーンコールバック向けの説明です。SDKが受理を確認した新しいアクティビティ結果には、オーディオマーカーの状態とアクティビティ結果にある正確なIDによる更新規則を使用してください。この結果は対応する過去のアクティビティも更新できます。
認識handlerは、素材のキャンペーンを最初に返した後、同じアクティビティに対して markerでリファインされたキャンペーンを返すことがあります。最初の結果はすぐに 表示しつつ、アプリケーションの状態に明示的な現在のセグメントを保持してください。 公開payload dictionaryにはactivity_id、material_id、trait.markerが含まれる ことがあります。
- 空でない
activity_idは、そのIDと完全に一致する現在の行だけをリファインできます。 アクティビティ、キャンペーン、素材IDを使ってタイムライン全体を検索しないでください。 - 古いpayloadでは
activity_idが省略されることがあります。その場合、material_idによるfallbackは現在の行だけに使用でき、グローバルな識別子にはできません。 - 行に保存した時刻、位置、その他の初回観測metadataを保持してください。後続の コールバックはmarkerとキャンペーン表示フィールドを更新するものであり、最初の観測は変更しません。
- 後続のmarker missや不完全な重複payloadで現在の行が以前の状態に戻らないよう、 markerとリファイン後のキャンペーン値をマージしてください。
- 別の
material_idが観測されると、前のセグメントは閉じられます。その境界より 後に届いた古いアクティビティへの遅延リファインは無視してください。
したがって、A(activity-1) -> A'(activity-1, marker) -> A(activity-1, marker miss)は1つの行です。一方、A(activity-1) -> B(activity-2) -> delayed A'(activity-1)ではBが現在のままとなり、履歴上のAは書き換えられません。
認識の停止
アプリでマイクキャプチャが不要になったら、認識を停止します。
recognizer.stopRecognition()バックグラウンド認識
アプリにバックグラウンド認識が必要な場合は、Info.plistのUIBackgroundModesにaudioを追加してください。バックグラウンド認識はアプリが実行中の間に動作します。アプリが終了すると、認識も停止します。
エラーハンドリング
認識エラーはrecognition handlerとSORI error notificationsを通じて配信されます。エラー通知を監視するには、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")
}
}