From version < 44.7 >
edited by Simon Morlat
on 2020/06/23 14:30
To version < 44.8 >
edited by Simon Morlat
on 2020/06/23 14:30
< >
Change comment: There is no comment for this version



Page properties
... ... @@ -100,8 +100,24 @@
100 100  
101 101  = Guidelines for integrating with push notifications =
102 102  
103 -= CallKit Integration =
103 +An iOS application has in general a very limited capability to run in background, for example to keep a connection to a SIP server in order to receive calls and IM at any time. When the application goes in background, the network connections are killed and the application no longer executes.
104 104  
105 +The solution to circumvent this limitation is to rely on Apple's push notification systems. The push notification first resumes the app in background, that can then connect to the SIP service and retrieve the pending INVITE or MESSAGE request.
106 +
107 +Additional limitations and restrictions were set by Apple with Xcode 11 and iOS 13. These restrictions are:
108 +
109 +* applications can no longer use PushKit kind of push notifications for anything else than presenting a VoIP call with CallKit. This is disruptive because previously, communication apps were also using PushKit get notified of incoming IM messages. Indeed, PushKit has the main advantage of waking up the application in background without displaying anything to the user. Instead, the application can silently connect to the service, receive the pending message or call, and display it with all its associated data (such as sender or caller ID) to the end-user through either a Callkit call or a notification popup.
110 +* applications receiving a PushKit notification are required to immediately invoke Callkit to display the call to the end-user. This is disruptive also, because at the time of receiving the push notification, the app has not yet the signaling information about the call (ie, the SIP INVITE). The end user may even accept the call while the INVITE is not yet arrived, in which case the app has to postpone the call acceptance to the actual receiving of the INVITE, and also update the CallKit view with the missing information.
111 +
112 +This migration guide explains the detailed steps to create a Liblinphone based application based on the above new requirements. It can be used of course as a guide to upgrade an existing liblinphone based application to iOS 13 / Xcode 11.
113 +
114 +Please note that an iOS application compiled with Xcode 10 still executes normally on iOS 13. The disruption happens only while compiling with Xcode 11.
115 +
116 +For each use case (calls, IM), different solutions can be implemented, as summarized in the table below
117 +
118 +
119 +== CallKit Integration ==
120 +
105 105  Starting from linphone-sdk >= 4.3, **Callkit** must be integrated in the following way:
106 106  
107 107  * Add the **CallKit** framework into your application's dependencies in Xcode.