Ana içeriğe geç

Uzaktan Deklanşör Olaylarını İşleme

Uzaktan deklanşör olaylarını DeviceDelegate üzerinden alın, uygulama kamerasında karşılık gelen işlemi gerçekleştirin ve sonucu cihazla eşitleyin.

Ön Koşullar

  • Cihaz bağlıdır ve DeviceRemoteShutterAPI protokolüne uyar.
  • Uygulamada NSCameraUsageDescription girdisi bulunur ve kamera izni istenir.
  • Uygulama kendi AVCaptureSession ve fotoğraf çekme uygulamasına sahiptir.

AI desteğiyle uygulayın

AI ile geliştirin

Bu iş akışını AI ile uygulayın

Resmî “AIBuds Uzaktan Deklanşörünü Uygulama” becerisini kullanarak iş akışını uygulamanıza uyarlayın.

https://docs-aibuds.github.io/tr/skills/implement-aibuds-remote-shutter adresini okuyup yönergeleri izleyin. Bu beceriyle “AIBuds Uzaktan Deklanşörünü Uygulama” iş akışını iOS projesinde uygulayıp doğrulayın.
Resmî beceriyi görüntüle

API Referansı

Protokol

Swift
/// The protocol for device remote shutter API.
protocol DeviceRemoteShutterAPI: DeviceAPI {
    /// Syncs the app’s real-time remote-shutter response state to the device after the device triggers remote shutter.
    /// - Parameters:
    ///   - state: The real-time remote-shutter response state to sync to the device.
    ///   - 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 syncRemoteShutterStateToDevice(
        _ state: RemoteShutterState,
        completion: AIBudsCompletionHandler?
    )
}

API Referansındaki syncRemoteShutterStateToDevice öğesine bakın.

Delegate Callback'i

Swift
/// Callback when remote shutter event received
/// - Parameters:
///   - device: the device
///   - event: the remote shutter event
optional func device(
    _ device: DeviceConvertible,
    didReceiveRemoteShutterEvent event: RemoteShutterEvent
)

Kullanım Örnekleri

Örnekte SDK olay akışının anlaşılır kalması için uygulama kamerasına ait ayrıntılar yerel yöntemlere bırakılır.

Swift
func device(
    _ device: DeviceConvertible,
    didReceiveRemoteShutterEvent event: RemoteShutterEvent
) {
    guard let remoteShutter = device as? DeviceRemoteShutterAPI else { return }

    switch event {
    case .enter:
        prepareAppCamera { ready in
            let state: RemoteShutterState =
                ready
                ? .enteredPhotoMode
                : .exitedOrUnableToEnter
            remoteShutter.syncRemoteShutterStateToDevice(state, completion: nil)
        }
    case .capture:
        captureAppPhoto { success in
            remoteShutter.syncRemoteShutterStateToDevice(
                success ? .photoSuccess : .photoFailed,
                completion: nil
            )
        }
    case .exit:
        stopAppCamera()
        remoteShutter.syncRemoteShutterStateToDevice(
            .exitedOrUnableToEnter,
            completion: nil
        )
    case .unknown:
        break
    }
}

Hata Yönetimi

İzin reddedildiğinde, depolama kullanılamadığında veya uygulama kamerası çekim yapamadığında .photoFailed bildirin. Uygulama fotoğraf moduna giremediğinde ya da bu moddan çıktığında .exitedOrUnableToEnter bildirin.