2014-06-20 8 views
7

Ich versuche eine schnelle iOS-App zu schreiben, die die Stimme des Benutzers aufnehmen wird. Ich habe den folgenden Code in swift geschrieben, es kann jedoch keine mic-Berechtigungen vom Benutzer anfordern. Es druckt gewährt, aber es notiert nie Audio und in den Einstellungsbereich unter Datenschutz listet es die App nicht auf. Wie fordere ich Aufnahmegenehmigungen in swift?AVAudioSession Swift

var session: AVAudioSession = AVAudioSession.sharedInstance() 
session.requestRecordPermission({(granted: Bool)-> Void in 
    if granted { 
      println(" granted") 
      session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil) 
      session.setActive(true, error: nil) 
      self.recorder.record() 
    }else{ 
      println("not granted") 
    } 
}) 

Antwort

11

Seit iOS 7 Sie müssen überprüfen, ob es requestRecordPermission:

zum Wähler antwortet ich diesen Code überprüft haben mit einem iPhone 5S mit iOS 8 Beta und es funktioniert perfekt. Sobald Sie die Berechtigung erteilen, wird das System nicht erneut danach fragen.

Es ist erwähnenswert, dass es nicht um Erlaubnis gefragt hat, wenn Sie den Simulator verwenden.

Dies ist der Code, den ich versucht habe und arbeitet:

if (session.respondsToSelector("requestRecordPermission:")) { 
    AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in 
     if granted { 
      println("granted") 
      session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil) 
      session.setActive(true, error: nil) 
      self.recorder() 
     } else{ 
      println("not granted") 
     } 
    }) 

} 
+0

ich in der Linie zu überprüfen hat, vor dem ich nicht schreiben habe und es funktionierte nicht ... Wahrscheinlich, weil ich den Simulator benutzt habe. Ich habe versucht, auf mein Gerät zu laden, aber es gibt einen Fehler, der besagt, dass es nicht unterstützt wird (viele Radare wurden bereits von anderen abgelegt). Vielen Dank für das Testen auf Ihrem Gerät. – BDGapps

+0

Kein Problem, gern geschehen! – Winston

1

Für Swift 3:

let session = AVAudioSession.sharedInstance() 
    if (session.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) { 
     AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in 
      if granted { 
       Linphone.manager.callUser(username: username) 

       print("granted") 

       do { 
        try session.setCategory(AVAudioSessionCategoryPlayAndRecord) 
        try session.setActive(true) 
       } 
       catch { 

        print("Couldn't set Audio session category") 
       } 
      } else{ 
       print("not granted") 
      } 
     }) 
    } 
Verwandte Themen