2010-08-13 3 views
4

J'ai une application VOIP iPhone qui fait face multi-multi transmettre et recevoir (c.-à-téléconférence) mis en place à l'aide de sockets BSD. Je voudrais qu'il soit capable de répondre aux demandes entrantes quand il est en arrière-plan mais d'après ce que je peux comprendre des doc iOS 4 je ne peux le faire que sur un objet NSStream (ou CFRead/WriteStream) en définissant la propriété à NSStreamNetworkServiceTypeVoIP . C'est un peu un problème car mon système est une application basée sur les sockets BSD UDP. Tout est reçu et envoyé sur une seule socket UDP. Est-ce que je vais avoir besoin de réécrire mon coeur de transmission/réception audio pour gérer NSStreams ou est-ce que je peux obtenir iOS 4 pour gérer mon socket BSD de la même manière qu'un NSStream? Je suppose que cela peut être un problème car un NSStream est basé sur un événement.iOS 4 application VOIP répondant en arrière-plan

Serait-il possible de détecter quand l'application passe en arrière-plan et de créer un objet NSStream temporaire qui transmettra les données via la gestion appropriée et continuera normalement? Est-il même possible de créer un UDP NSStream?

Des idées?

Répondre

5

Vous pouvez créer un socket à partir d'un descripteur de fichier avec CFSocketCreateWithNative(), puis créer une paire de flux avec CFStreamCreatePairWithSocket(). Il pourrait vous permettre de les utiliser sur un socket UDP. Pourvu que les flux ne lisent pas les données à moins que vous ne le demandiez, vous pourrez peut-être utiliser le FD directement.

Bonne chance avec ça!

+0

Ok Cela semble fonctionner. Il s'avère que je ne peux pas démarrer automatiquement un flux d'enregistrement audio en arrière-plan, mais il me donne le contrôle lorsque les données arrivent sur le port UDP (Ce qui vaut la peine d'être connu!) – Goz