shernova_core and shernova_ui both work on iOS via Flutter. There is no native iOS plugin — behavior differs from Android by design and App Store policy.
Current iOS flow
- User enters phone number in
verifyPhone()(or your custom UI withShernova.verify()). - App shows the gateway number and a Call button.
- Tapping call opens the system Phone app via
tel:(url_launcher). - User completes the missed call and returns to your app manually (app switcher or back gesture).
- When the app resumes, Shernova polls the API and shows Verified — typically within a few seconds.
Difference from Android
| Feature | Android (shernova_ui) | iOS |
|---|---|---|
| Auto-return after call | Yes — foreground service + telephony | No — user returns manually |
| Native plugin | Yes (Kotlin) | No — Flutter + url_launcher only |
| Extra permissions | Phone, notifications, optional CALL_PHONE | None beyond your app’s normal setup |
| Play/App Store declarations | FGS + phone forms on Google Play | No special Shernova declarations |
App Store review expectations
- No CallKit or private APIs — Shernova does not intercept calls on iOS.
tel:scheme — Standard; ensure your app’s purpose strings and privacy policy mention phone verification if you collect numbers.- Privacy Nutrition Labels — Declare phone number collection if you send it to Shernova or your backend.
- Manual return is normal — Apple does not allow the same background telephony monitoring as Android; manual return is the compliant v1 UX.
UX recommendations for iOS v1
- Show clear copy: “After calling, return to this app to finish verification.”
- Keep the verification screen in the navigation stack so resuming is one tap from the app switcher.
- Use
afterVerifiedto run signup while a progress overlay is visible once status is verified. - Optional future improvement: local notification or push when verified — not required for App Store approval today.
Dashboard setup
Register Bundle ID and Apple Team ID in Dashboard → Application → iOS signature (same as Android SHA256 registration). Run dart run shernova_cli setup — the CLI reads Xcode project when available.
