Miscellaneous
Minimum Requirements
We officially support iOS 11.0 as iOS Deployment Target. You can try older versions but there are no guarantees it will work as expected.
Note on Sinch.xcframework File Size vs. Linked Size
The Sinch.xcframework file includes a FAT-binary containing the architectures arm64 and x86_64. When linking an application target against the Sinch.xcframework targeting an iOS device, it will add a approximately 9.5MB for arm64.
Restrictions on User IDs
User IDs must not be longer than 255 bytes, must only contain URL-safe characters, and restricted to the following character set:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyz0123456789-_=
If you need to use User IDs containing characters outside the allowed set above, you could consider base64-encoding the raw User IDs using a URL-safe base64 alphabet as described in https://tools.ietf.org/html/rfc4648#section-5). Please note how the allowed character set overlaps with the URL-safe base64 alphabet, but does NOT allow characters in the non-URL-safe alphabet, example /
(forward slash) and +
(plus sign).
Local Database File
Sinch SDK needs a local database file to operate properly. It's located in the application support directory (NSApplicationSupportDirectory) in the sinch/db/rtc/ subfolder. The application must not delete this folder.
Statistics
The Sinch SDK client uploads statistics to the Sinch servers at the end of a call, a call failure, or similar event. The statistics are used for monitoring of network status, call quality, and other aspects regarding the general quality of the service.
Some of the information is not anonymous and may be associated with the User ID call participants.
The statistics upload is done by the client in the background.
Xcode and Bitcode Intermediate Representation
The Sinch SDK supports Bitcode intermediate representation.
App Extensions
App Extensions is a feature introduced in iOS 8. App extensions are compiled into executables that are separate from the main application executable. The Sinch SDK are using parts of the iOS SDK APIs that are unavailable to app extensions, thus it’s not supported to use the Sinch SDK in an app extension.
Linking Against the C++ Standard Library
Since Sinch SDK version 3.4.0, it's required to link against libc++. Though if your application is also dependent on libstdc++ (which is now considered deprecated by Apple for use on iOS), you can actually link against both libc++ and libstdc++ by passing the following linker flags:
-
Other Linker Flags ->
-ObjC -Xlinker -lc++ -Xlinker -lstdc++
SDK Static and Dynamic Libraries
The SDK is available as both a static library and a dynamic library; note that if you switch from using the dynamic to the static version of the SDK, you may have to:
-
change the "Embed" field for
Sinch.framework
in the target dependency from "Embed & Sign" to "Do not embed," or you may not be able to install the app on devices (see https://stackoverflow.com/q/68931476 for example of error logs). - add "-ObjC" to your app's "Other Linker Flags" (Build settings -> All -> Other Linker Flags) if you experience runtime errors such as "selector not recognized"; see https://developer.apple.com/library/archive/qa/qa1490/_index.html for further details.
Encryption Export Regulations
Please see Encryption and Export Administration Regulations (EAR) and ensure that, if applicable, your application is registered for encryption regulations.
Deprecated Features and APIs
Active Connection in Background
Apple has since iOS 10 discontinued support for maintaining a VoIP control connection alive via -[UIApplication setKeepAliveTimeout:handler:]
. Attempting to use this method on an iOS device running iOS 10 results in the following warning log: Legacy VoIP background mode is deprecated and no longer supported
. The Sinch feature Active connection in background was using the keep alive handler API and is as a consequence no longer supported on iOS. it's recommended to use VoIP Push Notifications and CallKit to achieve the equivalent functionality.
Missed Call Push Notifications
Sinch SDK primarily use VoIP push notifications. Since iOS 13, Apple and iOS imposed stricter limitations and requirements on how each VoIP push notification that an application receive must be reported to CallKit as an incoming call. This has the implication that Sinch SDK no longer supports separate "Missed Call" push notifications.
We recommend using your own non-VoIP push notification mechanism to deliver "Missed Call" push notifications.
Please also see Apple Developer documentation on this topic.