NexusLink on iOS and tvOS
The iOS app is built from two parts:
- The NexusLink SDK (
NexusLinkSDK.xcframework) built from this repository'sclient/ios/NexusLinkSDKpackage with gomobile. It runs inside the Network Extension (packet tunnel provider). - The iOS app (Swift, SwiftUI, NetworkExtension). Upstream keeps it in a separate repository: https://github.com/netbirdio/ios.
Building the SDK
Requirements: macOS with Xcode and command line tools, Go.
tools/mobile/build-ios-sdk.sh
# -> dist/ios/NexusLinkSDK.xcframework
Environment overrides: IOS_VERSION (minimum deployment target, default 15.0),
VERSION, OUT_DIR.
Building the app
git clone https://github.com/netbirdio/ios.git nexuslink-ios
python3 tools/branding/rebrand.py --root nexuslink-ios # apply NexusLink naming
Then in Xcode:
- replace the
NetBirdSDK.xcframeworkreference withdist/ios/NexusLinkSDK.xcframework(the Swift module isNexusLinkSDK); - set the bundle identifiers to
com.nexusremotesolutions.nexuslink(app) andcom.nexusremotesolutions.nexuslink.tunnel(network extension), sharing an App Group such asgroup.com.nexusremotesolutions.nexuslink; - enable the Network Extensions (packet tunnel) and App Groups capabilities in your Apple Developer account and provisioning profiles;
- import the app icon set from
branding/icons/nexuslink-1024.png; - point the default management URL at your server;
- archive and upload with your distribution certificate (App Store, TestFlight or MDM-based enterprise distribution).
tvOS builds use the same SDK with the tvOS target of the upstream project.