QVCCS innovation · How-to guides

Building a native iPhone app on Genesys Cloud: verified messaging, live video and location

We built a native iPhone app that puts a person in a verified, persistent conversation with a Genesys Cloud contact centre in one tap: sign in once with a mobile number, then message, share photos, a precise location or live video, while the agent sees who they are and the context they need. We run it ourselves as a proving ground, and it is a blueprint for what any contact centre can offer its own customers.

QVCCS Innovation team

A verified front door in an app A large iPhone outline shows a chat whose header carries a green verified tick, a message bubble holding a location pin and a live video frame. A thick line runs from the phone through Genesys Cloud to a tile with a headset agent, labelled Agent and Verified caller. On the left, three large labels name what the app adds: verified sign-in, precise location and live video. QVCCS INNOVATION · MOBILE A verified front door in an app Verified sign-in Precise location Live video GENESYS CLOUD Agent Verified caller
  • Did you know that Genesys publishes an open-source Messenger Transport SDK for iOS and Android? It is a thin network layer over the Web Messaging Guest APIs, so a native app can use Genesys Cloud messaging with its own interface instead of the Messenger web window.

  • Did you know that an inbound message flow in Architect can read Message.IsAuthenticated? It tells the flow whether the customer signed in through authenticated messaging, so routing, greetings and screen pops can treat verified and anonymous customers differently.

  • Did you know that the Genesys Cloud Agentless SMS API, by default, will not send to a customer who already has a connected SMS conversation, whether in a flow, in a queue or with an agent? An optional setting changes that behaviour.

  • Did you know that the Messenger Transport SDK accepts files of up to 10 MB from the customer and up to 25 MB from the agent, with the permitted file types set by a supported content profile in Genesys Cloud?

01

Why a contact centre should own its mobile channel

Most organisations reach their customers' phones through someone else's channel: a web chat squeezed into a mobile browser, a messaging app they do not control, or a phone number. Each works, but each starts the conversation knowing very little. The customer has to prove who they are, describe where they are, explain what they can see, and repeat it all if the conversation moves to another day or device.

A native app changes the starting point. The phone already knows who its owner is, where it is, what its camera can see and what state it is in. Built on Genesys Cloud messaging, an app can carry all of that into the conversation, with the customer's consent, while Genesys Cloud keeps doing what it does best: routing, history, recording rules and reporting. We wanted to prove how far that goes, so we built the app for our own staff first, as a proof of concept and a proving ground, and ran it end to end against our Genesys Cloud organisation.

02

One sign-in, verified everywhere

The person taps one button, enters their mobile number and types the six-digit code that arrives by SMS. That is the only sign-in they ever do, and there is no password to forget or leak. The code is sent from the organisation's own number through the Genesys Cloud Agentless SMS API, so no separate SMS provider is involved, and the number it proves becomes the person's identity everywhere that follows.

Behind the button sits a small OpenID Connect provider that we host. Genesys Cloud authenticated messaging is configured to trust it through the OpenID Connect Messenger Configuration integration, so the app can hand Genesys a one-time authorisation code on the person's behalf. Genesys exchanges it exactly as it would for a browser sign-in. The result is one sign-in and two trusted sessions: one with our service and one with Genesys Cloud.

Because the session is authenticated, Genesys Cloud keeps the conversation history with the identity rather than with the device, and with identity resolution switched on it links the conversation to the person's external contact record. Close the app, come back tomorrow or pick up another iPhone, and the same thread is there. The agent sees a named, verified person with their history one click away, not an anonymous guest.

One sign-in, verified everywhere A left-to-right flow. A person with an iPhone enters their mobile number; an SMS code is sent by Genesys Cloud from the organisation's own number; the proved number signs them in at an identity provider using OpenID Connect. That one sign-in creates two trusted sessions, an app session and a Genesys Cloud authenticated messaging session, and the messaging session is linked to the person's external contact, so the agent sees a verified caller. A strip at the bottom reads: one sign-in, two trusted sessions, the same thread on any device. SIGN-IN AND VERIFICATION One sign-in, verified everywhere Person iPhone STEP 1 Mobile number STEP 2 SMS code sent by Genesys Cloud from the organisation's own number STEP 3 Identity provider (OpenID Connect) App session Genesys Cloud authenticated messaging Linked to the external contact AGENT SEES Verified caller ONE SIGN-IN, NO PASSWORD TWO SESSIONS SAME THREAD, ANY DEVICE One sign-in. Two trusted sessions. The same thread on any device.
One SMS-proved number signs the person into the app, into Genesys Cloud authenticated messaging and onto their contact record.
Three iPhone screens: a welcome screen offering sign-in with a mobile number, a screen asking for the mobile number, and a screen asking for the six-digit code sent by text
Signing in with a one-time SMS code on our internal build. The phone number and web address are fictional.

03

What the agent sees before typing a word

The conversation arrives in the agent's normal Genesys Cloud workspace, routed to the usual queue, with a script popped beside it. A green banner confirms the person is verified, with the method and the time; an amber banner says when they are not. If the person has chosen to share it and their phone reports they appear to be driving, a red banner tells the agent to keep it brief or offer to call back. None of this needs a new agent desktop: it is an inbound message flow, a data action and a script.

The script separates two kinds of fact, and we think every mobile channel should. Trusted facts come from our service and cannot be faked by the phone: which iPhone is registered to this person and when they last proved their number. Reported facts come from the app: device and app version, battery and Low Power Mode, network type, language and local time, accessibility settings such as VoiceOver or larger text, and which permissions are granted. An agent who can see that the person is on 9% battery with VoiceOver on answers differently, and better, than one who cannot.

Genesys Cloud agent workspace with a web messaging interaction on the left and a script on the right headed Verified caller, listing the registered iPhone, last SMS sign-in, linked contact, the time Genesys checked it, and device context reported by the app including battery, network, language, permissions and position
The agent's view in Genesys Cloud as the conversation arrives. Names, identifiers and the location are fictional; browser and journey panels removed.

04

Photos, location and live video

From the chat, the person can send a photo from their library or take one with the camera. Photos are resized on the phone and sent through the Messenger Transport SDK's attachment support, so Genesys Cloud stores them with the conversation like any other attachment. A pending photo can be removed before it is sent, and it travels with the next message rather than on its own.

Share my location takes a single, accurate position, only when tapped; the app never tracks in the background. It sends the coordinates and their accuracy, a map link and a what3words address, three words that an agent can read back over the phone or pass to a field engineer. The same values are attached to the conversation as structured data, so a flow, a report or an integration can use them.

Share live video turns the phone into a camera for the agent. The phone streams up to 1080p to a video server that we host ourselves, and a private link appears in the conversation for the agent to open in their browser. The person can switch cameras, pause, or take a sharp still photo that drops straight into the chat. When they end the share, the link stops working. Nothing is recorded, and no third-party video service sees the picture.

Architecture by role: who owns what On the left, the iPhone app offers chat, photos, location and live video. It sends messages, photos and location to Genesys Cloud, which owns the conversation through a Messenger deployment, an inbound message flow, a script screen pop, a data action, a queue and the agent workspace. Below, inside a dashed boundary hosted by QVCCS, the companion service handles identity, caller context and the what3words lookup, and a self-hosted video server carries live video. The app signs in and sends context to the companion service, the data action fetches caller context from it, the app publishes live video to the video server, and the agent's browser only watches it through a private link. ARCHITECTURE BY ROLE Who owns what iPhone app Chat Photos Location Live video GENESYS CLOUD · OWNS THE CONVERSATION Messenger deployment Inbound message flow Script screen pop Data action Queue Agent workspace Agent in a browser HOSTED BY QVCCS COMPANION SERVICE Identity Caller context what3words lookup VIDEO SERVER (SELF-HOSTED) Live video, not recorded MESSAGES, PHOTOS, LOCATION SIGN-IN · CONTEXT LIVE VIDEO PUBLISH ONLY CALLER CONTEXT WATCH ONLY · PRIVATE LINK Genesys Cloud owns the conversation; QVCCS owns identity, context and video.
Genesys Cloud owns the conversation; a small companion service owns identity, caller context and live video, all hosted by QVCCS.
Three iPhone screens: a home screen showing the queue with one agent free and a Chat with our team button, a conversation with a shared location, a live video link, a photo and a bot reply, and a My details screen listing name, phone numbers, email addresses and town
Home, conversation and My details on our internal build. Names, numbers, addresses, the location and the video link are fictional.

05

Context with consent, and one system of record

Anything sensitive is opt-in. A screen in the app called What we share lists exactly what travels with each message, and the two most personal items, telling the team if the person appears to be driving and attaching their position to every message, are switched off until the person turns them on. Each phone permission is requested only at the moment its feature is first used, with plain wording about why.

The app stores no messages. Genesys Cloud is the system of record for the conversation, its history and its attachments, so retention, reporting and access control stay where the contact centre already manages them. Our companion service keeps only what it must: the identity provider's sessions, the registered device, and the latest device context, which the agent's script ignores once it is more than a short while old. Secrets such as integration credentials and the what3words key live on the server, never in the app.

06

What we learned building on Genesys messaging for iOS

Several findings cost us time and will save it for anyone building something similar. In our testing, a Messenger deployment restricted to a list of allowed domains refused the native SDK, because a native app has no web origin; Genesys's documentation explains that restricted deployments reject API requests from other domains. With auto-start switched on, the conversation and the inbound flow began when the app connected, not when the first message was sent. And custom attributes sent with a message reached the conversation after the inbound flow had already run, too late for a screen pop, so the flow fetches the same context from our service through a data action instead.

On the identity side, Genesys Cloud expects the Authorization Code Flow and the openid scope, and uses the sub claim to identify the person. In our testing, an identity provider that advertised the authorisation-response issuer parameter caused authorisation from the iOS SDK to fail, because the SDK could not pass the issuer back; we stopped advertising it. Scripts need the Message property enabled before a message flow can pop them, and an Agentless SMS send is refused while the number has a connected SMS conversation, though an open web messaging conversation does not block it.

07

From proving ground to blueprint

We built the app as our own proof of concept, in steps that were each proved end to end before the next began: identity, sign-in, native chat, rich media, the verified-caller experience, caller context, live video, and distribution to our staff's iPhones. It follows our usual delivery method, from design decisions recorded up front to testing on the simulator, in a browser and on physical iPhones, and it runs on our own infrastructure today.

The same design is a blueprint for what a contact centre can offer its own customers. An insurer could let a policyholder show the damage on live video and drop a what3words pin for the assessor. A utility could take a fault report with the exact location and a photo of the meter. A bank or a public service could start every mobile conversation with a verified customer and their history, without passwords. In each case Genesys Cloud stays the contact centre, and the app becomes the most capable front door it has.

There is more to build, and we are open about it. Replies reach the person only while the app is open today; Genesys documents push notifications for the Transport SDK through Apple's and Google's push services, and that is our next step. Live video currently needs the video server to be reachable directly from the phone's network. A customer-facing version would also be distributed through the App Store and, for most organisations, built for Android too, which the same Genesys SDK supports.

How it compares

Web messaging in a mobile browser and a native app on the Transport SDK

Both run on Genesys Cloud messaging. The difference is how much the conversation knows when it starts, and how much the organisation controls.

Web messaging in a mobile browser and a native app on the Transport SDK
AspectMessenger in a mobile browserNative app on the Messenger Transport SDK
InterfaceGenesys's ready-made Messenger window, configured and styled in Genesys CloudThe organisation's own screens, built around the conversation
Sign-inAnonymous, or authenticated through the website's own sign-in with OpenID ConnectAuthenticated once in the app, here with an SMS code, and reused for every conversation
History across devicesAuthenticated customers resume conversations in any browser where they sign inThe same thread follows the identity across launches, days and devices
Rich mediaAttachments within the deployment's supported content profileCamera and library photos, a one-tap precise location with what3words, and live video
Context for the agentWhatever the web page passes as custom attributesDevice, battery, network, language, accessibility and permissions, with trusted facts kept apart from reported ones
NotificationsVisible while the page is openPush notifications documented by Genesys for the SDK, through Apple's and Google's push services

The takeaways

  • A native app on the Genesys Messenger Transport SDK can start every conversation with a verified, named person and their history.
  • One SMS-proved number can sign a person into the app, into authenticated messaging and onto their contact record, with no password.
  • Photos, a precise what3words location and live video give agents what they would otherwise ask for, and nothing is recorded.
  • Keep trusted facts apart from what the phone reports, and make anything sensitive opt-in.
  • Genesys Cloud stays the system of record, so routing, history, retention and reporting are unchanged.

Designed, built and supported by the same certified team that delivers Genesys Cloud CX solutions for enterprises and integrators.

Who to contact Managed Professional Services

Last reviewed

Questions about what you have read?

Clients, partners and people introduced to us can reach the specialists behind our applications and articles directly.

Who to contact