Shipping
Your server address
Builds point at your server in full, over HTTPS: App Transport Security refuses plain HTTP. While you develop, the simulator reaches your Mac at localhost. Allow it in the app Info.plist for debug builds only:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
Your app in WordPlus Cloud needs no address for the app: a native app is let in by itself. The key and secret stay on your server. The app gets what it needs from your server config() at sign-in.
Microphone and camera
An app with calls says why it uses them, in Info.plist. iOS shows it the first time a call opens them, and stops the app without it:
| Key | Such as |
|---|---|
NSMicrophoneUsageDescription | Your microphone is heard by the person you call. |
NSCameraUsageDescription | Your camera is shown to the person you call. |
The simulator has no camera: try video calls on a device.
In the background
- Rooms: iOS suspends an app soon after it leaves the screen, and its connection with it. Coming back, the SDK connects again and each room gets what it missed from its history, so nothing your rooms keep is lost. An app that must hear something while closed needs push, which this SDK leaves for later.
- A call going on when the user leaves the app keeps its sound with the Audio, AirPlay, and Picture in Picture background mode (
UIBackgroundModes:audio), which also lets the call screen picture in picture show it. iOS stops the camera of an app in the background unless Apple grants it the multitasking camera access entitlement. - Calls ring while the app is open. Ringing a closed or suspended app needs a VoIP push and CallKit, which come with push.
Privacy
- The privacy manifests:
WordPlusRealtimeandWordPlusRealtimeCallseach bring their own, which declares UserDefaults (reasonCA92.1: the connection keeps the realtime servers it reached, the calls a codec a peer failed on) and no tracking. LiveKit, under the calls, brings its own. - Your App Store privacy details describe what your app collects, as for any of its features: the SDK sends WordPlus Cloud the user id, the rooms they join, and the data your app sends, sealed with keys WordPlus Cloud does not hold. The history of a room keeps that sealed data for as long as its rule says.
Encryption
App Store Connect asks whether the app uses encryption, and the Info.plist ITSAppUsesNonExemptEncryption records your answer. What the SDK uses:
- Rooms: XChaCha20-Poly1305, through the ChaCha20-Poly1305 of CryptoKit, with HChaCha20 in the code of the SDK itself.
- Calls: the WebRTC DTLS-SRTP, and for group calls the LiveKit end-to-end frame encryption.
- The connection: TLS, through URLSession.
Versions
The package takes the LiveKit Swift SDK and its WebRTC build at the exact versions the Better Messages app is tested with. An app that uses LiveKit itself takes the same versions. Xcode says so when they differ.