2012-01-09 15 views
5

Sto testando un client Voip Sip scritto da uno sviluppatore di app per iPhone che utilizza PJSip. Personalmente mi sono divertito con qualche sviluppo SIP, ma non sono esperto.Iphone Voip app - Backgrounding e mantenimento nat pinhole vivo

Con il nostro softswitch VOIP (pacchetto Acme/Broadsoft), si occupa di tutto il Nat Handling determinando dinamicamente il miglior tempo di Ri-registrazione per mantenere in vita il piolo di Nat sul dispositivo nat. In genere quando l'iPhone è dietro un NAT questa volta è tra 60-90 secondi.

L'app Iphone utilizza TCP e funziona felicemente con lo sfondo. Ovviamente lo sfondo è l'ideale per risparmiare sulla durata della batteria. La chiamata sveglia il telefono e puoi ascoltare la chiamata.

Il problema è che quando l'App entra in modalità Sfondo, non ha modo di mantenere aperto il Pinhole Nat. Ciò significa che il firewall rifiuterà sempre le nuove chiamate in arrivo dal raggiungere l'app Iphone una volta che il foro è chiuso. Questo ha l'effetto delle chiamate in entrata che lavorano all'app per alcuni minuti, quindi non funziona per un periodo, e poi quando l'app esce dallo sfondo e si registra nuovamente, le chiamate in entrata funzionano di nuovo.

Secondo la documentazione di Apple: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

Hanno eccezioni insito speciali per applicazioni VoIP per backgrounding possiamo: 1. Prese Configurare le applicazioni in modo tale che essi possono ancora gestire la messaggistica in entrata. Ciò non aiuta poiché la messaggistica non raggiungerà mai l'app se il foro stenografico nat è chiuso. 2. Utilizzare un Mantieni vivo, tuttavia il tempo minimo è di 600 secondi. Ciò significa anche che il foro stenopeico si chiuderà.

C'è qualche modo intelligente in cui un'app può inviare un messaggio di registrazione Voip Sip, diciamo ogni 60 secondi circa rimanendo sullo sfondo. Oppure l'app può svegliarsi ogni 60 secondi fa un po 'di lavoro e poi chiude.

Im davvero perplesso sul fatto che ci siano altre app sorseggiare sul mercato che hanno aggirato questo problema.

+0

Ci sono applicazioni sul mercato che hanno risolto il problema per questo problema. Ad esempio l'app 3CX. –

+0

Hai trovato qualche soluzione per questo? –

risposta

-1

TCP keep alive sono consentiti se l'intervallo non è troppo breve, penso che questo dovrebbe mantenere la sessione NAT aperta. Puoi dirci se aiuta o no?

0

Per risolvere questo problema è necessario che Acme invii i keepal TCP ai dispositivi registrati e imposta la scadenza su almeno 600s. Potresti volerlo più in alto perché il telefono impiegherà un po 'di tempo per registrarsi nuovamente, quindi qualcosa come i 720 funzionerebbe meglio.

Questo dovrebbe mantenere aperto il pinhole NAT se si imposta l'intervallo di mantenimento in modo che sia sufficientemente basso, circa 30 secondi circa. Il NAT dovrebbe consentire un intervallo più alto ma potrebbe richiedere alcuni test.

So che gli SBC ACME possono gestirlo.