2014-06-20 16 views
7

Kullanıcıların sesini kaydedecek hızlı bir iOS uygulaması yazmaya çalışıyorum. Aşağıdaki kodu hızlıca yazdım ancak kullanıcıdan mikrofon izinleri istenmiyor. Bu, ancak asla ses kaydeder ve gizlilik altındaki ayarları bölmesinde uygulamayı listelemez, yazdırılır. Hızlı bir şekilde kayıt izinlerini nasıl talep edebilirim? ben iOS 8 Beta ile iPhone 5S kullanarak bu kodu kontrol ettik ve mükemmel çalışıyor requestRecordPermission:AVAudioSession Swift

seçiciye yanıt verip

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

cevap

11

iOS 7 beri kontrol gerekir. İzin verdikten sonra sistem tekrar sormayacak.

Simulator'u kullanırken izin istemediğine dikkat çekiyor.

Bu

denedim kodudur ve çalışıyor:

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

ben gönderilmeyen hangi öncesinde doğrultusunda kontrol etti ve işe yaramadı ... Muhtemelen simülatörü kullandığım için. Cihazıma yükleme yapmayı denedim, ancak desteklenmediğini söyleyen bir hata var (birçok radar zaten başkaları tarafından dosyalanmıştı). Cihazınızda test ettiğiniz için teşekkür ederiz. – BDGapps

+0

Sorun değil, rica ederim! – Winston

1

Swift 3 için:

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