Well, I explored this a little further, but first I have to point out that I did not test it, actually trying to build a project for this, as now it would be too laborious for me.
I found this (already mentioned in the comments), this , and, most importantly, this tech Q & A.
What I have compiled, especially from various comments by Apple technicians in these threads, looks like the behavior of iOS 10 has really changed. This means that the same code that is connected to VoiP servers in previous versions of iOS will no longer do this if you link your assembly to the latest version of the SDK, that is, to iOS 10.
Now, in your case, you really don't need a real VoiP connection, right? You are just interested in the "start after reboot" functionality, right? At least the demo project that you linked actually does not use any VoiP connection, the setKeepAliveTimeout:handler: method, for example, is not even implemented. I know that this particular issue is not discussed in related threads or is not addressed in Q & A, BUT:
It makes sense that along with all the outdated VoiP behavior, the reboot function also disappears. If you switched to the VoiP Push-Kit, your application did not need to be launched after a restart, it will restart after the next remote notification arrives (and VoiP notifications have a high priority, so there may be no delay).
Obviously, I subtract the rationale for this whole goal here and cannot guarantee that Apple really thinks about it, but it makes sense: the whole reason for the (former) VoiP application to be (re) launched after reboot was because it needed to establish a connection, that is, he needed to run some code. With push notifications that are no longer needed (the OS basically does this behind the scenes to receive these notifications), it makes sense that they completely removed this functionality along with the whole outdated VoiP approach.
You can test this by compiling against the old SDK (i.e. use Xcode 7 as suggested by Q & A) and see if it will resume. This Apple employee actually explained that the OS really distinguishes the build SDK for applications, which is completely contrary to intuition for me. Apparently, in this case, he would have decided "hey, this is an older application, so it is expected that it will be restarted because its SDK was documented that way" for applications based on Xcode 7 and "Oh, this application is new, so I do not otherwise need to stick to the old ways. " Wowsies.
TL; DR . It seems to me that yes, the iOS SDK has changed this behavior, and also left the whole old VoiP method without notice. Compiling with the new SDKs will cause applications to not restart after a reboot.
For the record: I can understand the evil people in these streams. Although there may be technical reasons for the change, this specific consequence was far from obvious. If the method is deprecated, but the project is still compiling and starting, I would not expect such a process to fail. These applications do not crash, they are just “handled differently by the OS”, which is not exactly the same. At least I was expecting the documentation to become more clear in the new SDK.