From 55056bebac5edd3706637350a57a2a769b308586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magda=20Budzi=C5=84ska?= Date: Thu, 16 Feb 2023 13:00:06 +0100 Subject: [PATCH 1/2] Start incoming call action - new event --- ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift | 8 +++++++- lib/flutter_callkit_incoming.dart | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift b/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift index 0e536a7f..09928afe 100644 --- a/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift +++ b/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift @@ -36,6 +36,8 @@ public class SwiftFlutterCallkitIncomingPlugin: NSObject, FlutterPlugin, CXProvi private var data: Data? private var isFromPushKit: Bool = false private let devicePushTokenVoIP = "DevicePushTokenVoIP" + + private var answerAction: CXAnswerCallAction? private func sendEvent(_ event: String, _ body: [String : Any?]?) { eventCallbackHandler?.send(event, body ?? [:] as [String : Any?]) @@ -115,6 +117,10 @@ public class SwiftFlutterCallkitIncomingPlugin: NSObject, FlutterPlugin, CXProvi case "getDevicePushTokenVoIP": result(self.getDevicePushTokenVoIP()) break; + case "startCallIncoming": + self.answerAction?.fulfill() + result("OK") + break default: result(FlutterMethodNotImplemented) } @@ -381,8 +387,8 @@ public class SwiftFlutterCallkitIncomingPlugin: NSObject, FlutterPlugin, CXProvi self.configurAudioSession() } self.answerCall = call + self.answerAction = action sendEvent(SwiftFlutterCallkitIncomingPlugin.ACTION_CALL_ACCEPT, self.data?.toJSON()) - action.fulfill() } diff --git a/lib/flutter_callkit_incoming.dart b/lib/flutter_callkit_incoming.dart index ef7fb4d1..5baae42b 100644 --- a/lib/flutter_callkit_incoming.dart +++ b/lib/flutter_callkit_incoming.dart @@ -81,6 +81,13 @@ class FlutterCallkitIncoming { return await _channel.invokeMethod("getDevicePushTokenVoIP"); } + /// Start incoming call + /// On iOS: start connection timer + /// On Android: not implemented + static Future startIncomingCall() async { + await _channel.invokeMethod("startCallIncoming"); + } + static CallEvent? _receiveCallEvent(dynamic data) { Event? event; Map body = {}; From 2917d21f10c2f860d5392daa11ce8c2bbd96f5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magda=20Budzi=C5=84ska?= Date: Fri, 17 Feb 2023 08:22:03 +0100 Subject: [PATCH 2/2] Fix Decline&Accept action --- ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift b/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift index 09928afe..8276b6f1 100644 --- a/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift +++ b/ios/Classes/SwiftFlutterCallkitIncomingPlugin.swift @@ -410,7 +410,7 @@ public class SwiftFlutterCallkitIncomingPlugin: NSObject, FlutterPlugin, CXProvi action.fulfill() } }else { - sendEvent(SwiftFlutterCallkitIncomingPlugin.ACTION_CALL_ENDED, self.data?.toJSON()) + sendEvent(SwiftFlutterCallkitIncomingPlugin.ACTION_CALL_ENDED, call.data.toJSON()) action.fulfill() } } @@ -496,10 +496,7 @@ public class SwiftFlutterCallkitIncomingPlugin: NSObject, FlutterPlugin, CXProvi self.outgoingCall = nil } self.answerCall?.endCall() - if(self.answerCall != nil){ - self.answerCall = nil - } - self.callManager?.removeAllCalls() + self.sendEvent(SwiftFlutterCallkitIncomingPlugin.ACTION_CALL_TOGGLE_AUDIO_SESSION, [ "isActivate": false ]) }