Skip to main content

Report Self-AI Authorization

reportSelfAiServiceAuthResult is a device-flow synchronization signal, not an authentication API. When the app integrates its own AI service, it authenticates that service independently and then reports the result to the connected device.

The device waits for a successful self-AI authorization result before continuing eligible AI workflows. Without that report, the host service may already be ready while the device still keeps the AI path blocked—for example, it may not start the Opus voice stream required by the session.

When This API Is Required

Use this API for an AI service integrated and authenticated by the host app. After the host authentication attempt finishes:

  1. Report true only after the self-AI service is ready for use.
  2. Report false when authentication fails or the service is unavailable.
  3. Wait for the completion handler to succeed before treating the result as delivered to the device.

SDK-provided AI service authentication follows its own integration flow and does not require the host app to use this API as a substitute for provider authentication.

API Reference

Swift
/// Reports the authentication result for the self-AI service.
/// - Parameters:
///   - isAuthenticated: Whether the self-AI service is authenticated.
///   - completion: A closure that is called when the operation completes.
///     - success: `true` if the operation was successful; otherwise `false`.
///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
func reportSelfAiServiceAuthResult(
    _ isAuthenticated: Bool,
    completion: AIBudsCompletionHandler?
)

See reportSelfAiServiceAuthResult.

Usage Examples

Swift
func selfAIAuthenticationDidFinish(isAuthenticated: Bool) {
    guard let device = device as? DeviceServiceAuthAPI else { return }

    // Report the result only after the host app's own AI authorization finishes.
    device.reportSelfAiServiceAuthResult(isAuthenticated) { reportSucceeded, error in
        guard reportSucceeded else {
            print(error?.localizedDescription ?? "Failed to report authorization")
            return
        }

        if isAuthenticated {
            // The device can now continue eligible AI flows, including an Opus input stream.
            print("Self-AI authorization delivered to the device")
        }
    }
}

The completion handler reports whether the result was delivered to the device; it does not authenticate the AI service. Never send access tokens or credentials through this API—it accepts only the Boolean result.