SDK install
Add @helium/passpoint-sdk to your React Native or Expo app.
Requirements
- React Native 0.73 or newer, or Expo with a config plugin and a custom dev client.
- iOS 15.0 or newer, physical device only. Passpoint isn't supported on the simulator.
- Android API 26 or newer (
minSdk 26).
Install the package
iOS
cd ios && pod install
In Xcode, on your app target's Signing & Capabilities tab:
- Add Hotspot Configuration.
- Add Keychain Sharing with the access group:
$(AppIdentifierPrefix)com.apple.networkextensionsharing - Note your Team ID. You'll need it for
keychainAccessGroup, which you pass to the provider as<TEAM_ID>.com.apple.networkextensionsharing.
The keychain access group must match your entitlements exactly. A mismatch makes profile installation fail silently: the OS dialog never appears. If you renamed your bundle ID or rotated your provisioning profile, double-check the Team ID.
No additional CocoaPods or SPM packages are required. The SDK uses only Apple's built-in Security framework.
Android
Set minSdk 26 or higher in app/build.gradle:
android {
defaultConfig {
minSdk 26
}
}
The SDK declares the permissions it needs in its own
AndroidManifest.xml:
ACCESS_FINE_LOCATIONACCESS_WIFI_STATECHANGE_WIFI_STATE
These merge into your app at build time; you don't need to copy them.
Request location at runtime.
ACCESS_FINE_LOCATIONmust be granted before you callinstall(), or the SDK rejects withPERMISSION_DENIED.
import { PermissionsAndroid, Platform } from 'react-native';
if (Platform.OS === 'android') {
await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
);
}
Expo
Expo Managed is not supported: Passpoint requires native entitlements Managed can't provide.
Expo with a
development build
is fully supported. Add the SDK as a normal dependency, run
npx expo prebuild, then apply the iOS entitlements above to the
generated ios/ project. A config plugin to automate this is on the
roadmap.