VOIP application behavior in the background (iOS 4.0+):
Having a single socket that remains open is marked as Voip. This VOIP connector is supported by the system and the application is suspended on BG. You can schedule a keep-alive block and the OS will wake your application every X times X> = 10min (see [[UIApplication sharedApplication] setKeepAliveTimeout: handler :) this socket is NOT a multimedia socket, it only uses to receive invitations for incoming calls The application wakes up for every incoming data in the socket (iOS 5.0+ limit is 15 times in 300 seconds) After you receive an incoming call, your Appendix wake up, and you can start a conversation with the audio for the call.
VOIP applications should be tagged on info.plist in the “Required Background Modes” section, like “voip” and “audio”.
Once you have opened an audio session (for an active call), your application can work completely in the background and it will no longer be paused until this audio session is closed.
In any case, another alternative is to use push notifications as triggers for incoming calls.
In addition, this eliminates the need to maintain the socket 24/7, save battery power, and will work even if the user closes the application (which does not correspond to the first alternative).
source share