2010-10-03 6 views
23

Sto scrivendo un'applicazione che registra l'audio. Sto esaminando la fattibilità di supportare il multitasking mentre faccio registrazioni audio (in background).Multitasking iOS per un'applicazione di registrazione audio

La risposta sembra essere un no da quello che ho letto finora, soprattutto dal momento che il programma è destinato a rilasciare tutte le risorse di sistema utilizzate al momento dello spegnimento.

Quindi mi chiedo, è possibile consentire all'utente di passare a un'altra applicazione in iOS mentre la mia applicazione continua a catturare l'audio in background?

+0

Ciao, sto cercando di fare la stessa cosa. Hai fatto come detto da Tc e l'hai impostato sia su "voip" che su "audio"? Sei riuscito a registrare? – Namratha

+1

@Namratha Non impostarlo su VoIP se non si è un provider VoIP. La nostra app è stata respinta a causa di ciò. Registrare sullo sfondo non era una brutta cosa da fare come si è visto. Il sistema operativo è consapevole dal momento che sei collegato a AVAudioSession. L'ho usato così com'era e tutto andava bene. – dineth

+0

Oh. Grazie mille per il consiglio. Quindi la registrazione audio in background ha funzionato? Grande! Come l'hai fatto esattamente, per favore? – Namratha

risposta

23

È possibile. Skype fa questo.

Probabilmente hai bisogno di impostare <key>UIBackgroundModes</key><array><string>audio</string></array> in Info.plist, e devi assicurarti che la sessione audio sia attiva/in esecuzione/qualsiasi altra cosa prima di cambiare app (l'ipotesi è che non inizierai improvvisamente a registrare/riprodurre musica/qualsiasi altra cosa quando la tua app è in background).

The docs dire che "audio" consente di riprodurre l'audio in background, ma presumibilmente questo vale anche per la registrazione audio. Se non funziona, ci sono alcune cose che potresti provare:

  • Impostare sia "voip" che "audio".
  • Riproduci silenzio (potrebbe essere più semplice con l'API della coda audio).
+1

"presumibilmente questo si applica anche alla registrazione audio" - nella mia esperienza, quelli sono i tipi di ipotesi su cui non si vuole prendere una decisione aziendale. –

+0

Ecco perché testare per vedere se funziona su un dispositivo. –

+12

Volevo solo aggiornare questa risposta. Non utilizzare VOIP se la tua app non sta eseguendo VOIP. È lì per abilitare l'attività di rete mentre l'app è in background. Usare "audio" fa il trucco. La nostra app è stata respinta al primo tentativo di avere voip. – dineth

5

Apple sembra aver accettato app per iOS4 che continuano a registrare audio quando vengono messe in background, quindi questa potrebbe essere una prova di esistenza. L'app deve dichiararsi in grado di supportare l'audio in background, pre-allocare tutte le risorse audio e avviare la registrazione audio prima che l'app venga riprodotta in background, e si aspetta anche di essere uccisa se la sua memoria o le risorse audio sono richieste dall'app in primo piano. Quindi qualsiasi utilizzo delle risorse di sistema dovrebbe essere il minimo assoluto.

+0

Ho pensato che tutte le applicazioni per gli sfondi siano state uccise dopo 10 minuti ... –

+1

Non se dichiarato in elenco come 1 dei 3 tipi speciali per lo sfondo e sono disponibili risorse sufficienti. – hotpaw2

+0

Questa è una grande notizia! Non ti capita di avere un link su questo? –

1

Sì!

L'app continuerà a registrare/riprodurre un audio mentre viene inviato in background.

Non provare a utilizzare VOIP a meno che non desideri pubblicare la tua app su Apple Store (ad esempio, trasmetti la tua app utilizzando negozi di terze parti che installano il profilo di provisioning).