Skip to content

Implementación ​

Esta guía utiliza iOS SDK 5.1.0. Consulte las instrucciones de instalación y actualización.

Configurar el reconocedor ​

Importe el framework SORI y configure el reconocedor compartido con las credenciales de su aplicación 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)

Iniciar el reconocimiento ​

Llame a startRecognition(repeat:handler:) después de realizar la configuración. El handler recibe el payload de la campaña que devuelve la API de SORI cuando se reconoce un material registrado.

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)
}

Activar el reconocimiento de Audio Marker ​

El reconocimiento de Audio Marker está desactivado de forma predeterminada. En el modo predeterminado, el reconocimiento en iOS utiliza únicamente huellas digitales de audio. Actívelo solo si su configuración de SORI Console utiliza Audio Markers.

swift
let configuration = SORIAudioRecognizer.Configuration(
    applicationID: "YOUR_SORI_APP_ID",
    secretKey: "YOUR_SORI_SECRET_KEY"
)
configuration.audiomarker = true

recognizer.configure(configuration)

Para mostrar el marcador actual y enriquecer actividades posteriores, use las API de estado y resultados de actividad gestionadas por el SDK. El SDK gestiona la caducidad, los atributos de marcador y las actualizaciones de la misma actividad. Los callbacks de campaña y descubrimiento existentes siguen siendo compatibles.

Renderizar una cronología ordenada de actividad continua ​

La guía siguiente corresponde a los callbacks de campaña existentes. Para los nuevos resultados de actividad aceptados por el SDK, use las reglas de actualización por ID exacto de Estado de Audio Marker y resultados de actividad; estos resultados pueden actualizar la actividad histórica correspondiente.

El handler de reconocimiento puede devolver primero una campaña de un material y después una campaña refinada mediante marker para esa misma actividad. Muestre el primer resultado inmediatamente, pero mantenga un segmento actual explícito en el estado de la aplicación. El diccionario público del payload puede proporcionar activity_id, material_id y trait.marker.

  • Un activity_id no vacío solo puede refinar la fila actual con ese ID exacto. No busque en toda la cronología por ID de actividad, campaña o material.
  • Los payloads anteriores pueden omitir activity_id. En ese caso, un fallback mediante material_id solo es seguro para la fila actual y no debe convertirse en una identidad global.
  • Conserve la hora, la posición y los demás metadatos de la primera observación guardados para la fila. El callback posterior actualiza los campos de marker y presentación de campaña, no la observación original.
  • Combine el marker y los valores de campaña refinados para que un marker ausente o un payload duplicado menos completo no degrade la fila actual.
  • Un material_id diferente cierra el segmento anterior. Ignore los refinamientos retrasados de una actividad anterior después de ese límite.

Por tanto, A(activity-1) -> A'(activity-1, marker) -> A(activity-1, marker miss) es una sola fila, mientras que A(activity-1) -> B(activity-2) -> delayed A'(activity-1) mantiene B como actual y no reescribe la A histórica.

Detener el reconocimiento ​

Detenga el reconocimiento cuando su aplicación ya no necesite capturar audio del micrófono.

swift
recognizer.stopRecognition()

Reconocimiento en segundo plano ​

Si su aplicación necesita reconocimiento en segundo plano, añada audio a UIBackgroundModes en Info.plist. El reconocimiento en segundo plano funciona mientras la aplicación está en ejecución. Si la aplicación finaliza, el reconocimiento también se detiene.

Gestión de errores ​

Los errores de reconocimiento se entregan mediante el handler de reconocimiento y las notificaciones de error de SORI. Para observar estas notificaciones, regístrese en 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")
    }
}