Skip to content
OpenAppPhysical access, fully managed
Login

Mobile intercom app

The OpenApp Intercom apps (iOS + Android) use the same portals and signaling stack as the dashboard. CallKit and ConnectionService provide the native incoming-call UI. Visitor calls in the production app are receive-only; visitors place calls from the web portal.

Sign in with the same OpenApp account you use on the web dashboard. The app opens the system browser for OpenApp sign-in, then returns to the app.

Tap Sign in on Home (or Account) and choose Continue in browser.

Mobile sign-in screen with Continue in browser.(click to enlarge)
Mobile sign-in screen with Continue in browser.

Home lists invitations and doors you can open, plus apartments that receive visitor calls when you are signed in. Scan a portal QR with the scan button to add an invitation on this device.

Home tab showing invitations and doors the resident can open.(click to enlarge)
Home tab showing invitations and doors the resident can open.
QR scanner for adding a portal invitation from a printed code.(click to enlarge)
QR scanner for adding a portal invitation from a printed code.

Opening an invite link (email or QR) adds that invitation on Home. You can use an invite without signing in. Tapping Open does not unlock the door until you confirm on the door screen.

Home tab after opening an invite link, with the invitation and Open.(click to enlarge)
Home tab after opening an invite link, with the invitation and Open.

Signed-in residents who scan a resident portal QR land on Home, not another building’s visitor directory.

From an invitation or door card, open the door screen and tap Open. Lights appear when the portal has them. Policy, curfew, and hold-closed rules still apply — if Open is disabled, the screen explains why.

Door screen with Open for the lobby door.(click to enlarge)
Door screen with Open for the lobby door.

Account shows your profile photo, name, verified or unverified email/phone, and locale when available. The app tells OpenApp which language you use it in, so invitations and call alerts arrive in that language; to pick a different one, choose it under Message language in Settings (Message language). Open Settings → Profile to see linked identity providers and the primary profile source. Identity-provider data is the default source; you can choose an OpenApp value for a field to keep it from changing on future provider sign-ins. Provider changes sync the next time you sign in with that provider. Pending account-combine suggestions appear in Settings and require your confirmation.

Account tab with the signed-in profile, connected identity providers, and account settings.(click to enlarge)
Account tab with the signed-in profile, connected identity providers, and account settings.
Send feedback form with type, message, and contact fields.(click to enlarge)
Send feedback form with type, message, and contact fields.

Answer visitor calls from the system call UI; media continues in the in-app call screen. Registering for push (FCM on Android, VoIP on iOS) happens when the build is configured for it. The Calls tab lists recent visitor threads after a call.

Calls tab showing recent visitor calls and chat threads.(click to enlarge)
Calls tab showing recent visitor calls and chat threads.

Parents mark a household member as a child and enter their date of birth in the dashboard. Under 13 are not rung from the public portal. Ages 13–15 receive visitor calls only if a parent turns that on. Residents can block a door and report a call from the incoming-call screen.

IssueWhat to try
No ringConfirm backend CallNotificationFanout has APNs or FCM enabled and the device token is registered (POST /api/v1/me/device-tokens).
WebRTC failsCheck STUN/TURN env (NUXT_PUBLIC_WEBRTC_ICE_SERVERS_JSON / EXPO_PUBLIC_WEBRTC_ICE_SERVERS_JSON).
Sign-in failsConfirm the phone can reach the same API origin as the dashboard, then sign in again from Account. The error text from the app is the server’s message.

For engineers: apps/mobile/docs/TESTING.md and apps/backend/local_server/PUSH_CHANNELS.md.