2013-09-23 10 views
13

Dall'aggiornamento di iOS 7 sono state apportate alcune modifiche con le applicazioni di registrazione. Ho un'app che funzionava con iOS 5 e 6, ma quando ho provato a eseguirla su iOS 7 - la registrazione non ha risposto.requestRecordPermission non fa nulla

Ho controllato Internet e ho visto che c'è un nuovo metodo che deve essere chiamato. Ho cercato di inserire questo codice in viewDidAppear:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) 
    { 
     [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { 
      NSLog(@"permission : %d", granted); 
     }]; 
    } 
} 

'concesso' è sempre 1 anche se non ha concesso alcuna autorizzazione né visto alcuna richiesta a comparsa.

Btw Sto cercando di gestire questo utilizzando xcode 4.6.3. Ho creato una categoria per AVAudioSession con il metodo requestRecordPermission, poiché questo metodo è disponibile solo in iOS 7.

Grazie.

+0

Penso che la risposta di Yogesh Maheshwari sia più corretta e debba essere impostata come risposta. –

risposta

25

Mi sono imbattuto nello stesso problema durante il test su simulatore iOS7, sembra che requestRecordPermission non funzioni nel simulatore e "concesso" sia sempre restituito SI. Devi testarlo su un dispositivo reale.

Se lo hai testato una volta su un dispositivo e hai risposto al popup di autorizzazione, il popup di autorizzazione non verrà più visualizzato fino a quando non viene ripristinata la privacy della posizione &.

per ripristinare la posizione & Privacy attenersi alla seguente procedura

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked. 
10

Una volta concesso l'audio all'applicazione. La tua app non mostrerà di nuovo la richiesta di autorizzazione.

Se si desidera testarlo, modificare l'ID bundle della propria app & try.

2

stessi per iOS 8 Simulator. AVAudioSession.sharedInstance().requestRecordPermission restituisce sempre true.On altra parte quando si chiama

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

per aprire le impostazioni dell'applicazione sul simulatore, il microfono non è mai elencato there.That avrebbe bisogno di essere testato su un dispositivo reale.

1

Aggiungi Privacy - Uso del microfono Descrizione nelle informazioni per consentire l'accesso all'app per chiedere le autorizzazioni. Questo mi stava causando Thread13: segnale SIGABRT errore. Al termine dell'errore, l'errore viene risolto automaticamente.

+0

Prova a mostrare il codice per il tuo suggerimento, per fornire una risposta di qualità migliore. – yivi