Skip to main content
Markdown

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:

KeySuch as
NSMicrophoneUsageDescriptionYour microphone is heard by the person you call.
NSCameraUsageDescriptionYour 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: WordPlusRealtime and WordPlusRealtimeCalls each bring their own, which declares UserDefaults (reason CA92.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.