Regarding the Apple documentation there is no way to handle the phone state while the app is suspended :
"While it is suspended, your application does not receive call events"
CTCallCenter *callCenter = [[CTCallCenter alloc] init];
All tests that I've done I can't receive any using
callEventHandler when the application is in background. But, when the application is in foreground, all nicely work.
The socket works, because iOS handles it for you app and deliver the packtes accordingly. But for that, you need to create a voip socket and add
UIBackgroundModes to your App-Info.plist.