App proxy and packet tunnel providers in one extension

We are working on a Network Extension based iOS app. Is it possible to have an app proxy (for per-app VPN) and packet tunnel providers within the same extension binary on iOS? On Mac this seems to be allowed, but with iOS it looks like we have to separate binaries - one per provider. In our case this complicates things.

Accepted Reply

This is not an iOS vs macOS thing, but a sysex vs appex thing. A sysex can hold multiple provider types, an appex cannot. Of course that difference only matters on macOS, which supports both models. iOS only supports the appex model.

In our case this complicates things.

Most folks address that issue using two techniques:

  • They move the bulk of their code into a framework that’s shared between the two appexes.

  • They use an app group to share state between the two appexes.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Replies

This is not an iOS vs macOS thing, but a sysex vs appex thing. A sysex can hold multiple provider types, an appex cannot. Of course that difference only matters on macOS, which supports both models. iOS only supports the appex model.

In our case this complicates things.

Most folks address that issue using two techniques:

  • They move the bulk of their code into a framework that’s shared between the two appexes.

  • They use an app group to share state between the two appexes.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"