[SWIFT] Activer le flash quand l'application est inactive

Bonjour,

Je suis confronté à un petit soucis..
Mon application gère des géofences, lors de l'entrée dans une zone, je veux activer le flash de l'appareil photo pour le faire clignoter.

Voici ma fonction pour faire clignoter le flash :

func winkFlash() {
    let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)

    if (device != nil) {
        if (device!.hasTorch) {
            do {
                try device!.lockForConfiguration()
                for _ in 0 ..< 20 {
                    //print(i)
                    if (device!.torchMode == AVCaptureDevice.TorchMode.on) {
                        device!.torchMode = AVCaptureDevice.TorchMode.off
                    } else {
                        do {
                            try device!.setTorchModeOnWithLevel(1.0)
                        } catch {
                            print(error)
                        }
                    }
                    usleep(300000)
                }
                device!.unlockForConfiguration()

            } catch {
                print(error)
            }
        }
    }
}

Lors de l'entrée dans une zone, voici ma fonction :

func handleEvent(forRegion region: CLRegion!) {

    if UIApplication.shared.applicationState == .active {
        //print("application active !")
       ... code, etc etc
    }
    else { // Application inactive
        //print("LOCAL NOTIF")
        if let message = note(fromRegionIdentifier: region.identifier){
            let content = UNMutableNotificationContent()
            content.title = NSLocalizedString("Label_titre_Attention", comment: "")
            content.body = message
            content.sound = .default()

            let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
            let request = UNNotificationRequest(identifier: "NotifLocale", content: content, trigger: trigger)
            UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

            // retrouver une valeur via une clé
            let defaults = UserDefaults.standard
            if let laValeurFlash = defaults.value(forKey: "Flash"){
                if(laValeurFlash as! Bool == true){ // Active le flash
                    fonctions().winkFlash() // Ici, je me retrouve avec une erreur :/
                }
            }
        }
    }

}

L'erreur générée est la suivante :

2018-01-08 11:21:42.030659 Projet[7279:10979467] [] nw_socket_get_input_frames recvmsg(fd 8, 1024 bytes): [57] Socket is not connected
2018-01-08 11:21:42.043435 Projet[7279:10979671] [] nw_endpoint_handler_add_write_request [4.1 192.168.5.35:8888 failed socket-flow (satisfied)] cannot accept write requests
2018-01-08 11:21:42.047481 Projet[7279:10979672] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [22] Invalid argument

Comment faire pour déclencher le flash quand l'application n'est pas active.. ou quand l'écran est éteint par exemple ?

Mots clés:

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.