to impliment call kit i used flutter_callkit_incoming package and use local notification to trigger call kit.
so this is working in android when app is foreground or background but not working in ios background.
here are step which i follow for setup.
on flutter : https://github.com/hiennguyen92/flutter_callkit_incoming/blob/master/example/lib/main.dart
on app delegate : https://github.com/hiennguyen92/flutter_callkit_incoming/blob/master/example/ios/Runner/AppDelegate.swift
and for ios steup: https://github.com/hiennguyen92/flutter_callkit_incoming/blob/master/PUSHKIT.md
<code>//lisent notificaiton in background and trigger call kit.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
debugPrint("-----[FIREBASE-BACK]------><><>Handling a background message: ${message.data}");
if (message.data['topic'] == 'screen.sharing.invite') {
showCallkitIncoming(data: message.data);
<code>//lisent notificaiton in background and trigger call kit.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
debugPrint("-----[FIREBASE-BACK]------><><>Handling a background message: ${message.data}");
if (message.data['topic'] == 'screen.sharing.invite') {
showCallkitIncoming(data: message.data);
}
}
</code>
//lisent notificaiton in background and trigger call kit.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
debugPrint("-----[FIREBASE-BACK]------><><>Handling a background message: ${message.data}");
if (message.data['topic'] == 'screen.sharing.invite') {
showCallkitIncoming(data: message.data);
}
}
Function implimention
<code>//Here is full implimentation of showCallKitIncomeing function
Future<void> showCallkitIncoming({required Map<String?, dynamic> data}) async {
CallKitParams params = CallKitParams(
nameCaller: 'APP Screen Sharing Call',
appName: 'APP Title', ///<<< this is also not working...
avatar: data['senderImageUrl'],
handle: data['senderName'],
type: 0, // 0 for audio and 1 for video
duration: 60000, //60 seconds
missedCallNotification: const NotificationParams(
extra: <String, dynamic>{'guestRoomCode': data['guestRoomCode'], 'receiverName': data['receiverName']},
headers: <String, dynamic>{},
android: const AndroidParams(
backgroundColor: '#dda088',
isCustomNotification: true,
isShowFullLockedScreen: true,
isCustomSmallExNotification: true,
ringtonePath: 'system_ringtone_default',
incomingCallNotificationChannelName: 'screen_share_call',
missedCallNotificationChannelName: "screen_share_miss_call",
maximumCallsPerCallGroup: 1,
audioSessionMode: 'default',
audioSessionActive: true,
audioSessionPreferredSampleRate: 44100.0,
audioSessionPreferredIOBufferDuration: 0.005,
supportsUngrouping: false,
ringtonePath: 'system_ringtone_default',
await FlutterCallkitIncoming.showCallkitIncoming(params);
<code>//Here is full implimentation of showCallKitIncomeing function
Future<void> showCallkitIncoming({required Map<String?, dynamic> data}) async {
CallKitParams params = CallKitParams(
id: const Uuid().v4(),
nameCaller: 'APP Screen Sharing Call',
appName: 'APP Title', ///<<< this is also not working...
avatar: data['senderImageUrl'],
handle: data['senderName'],
type: 0, // 0 for audio and 1 for video
duration: 60000, //60 seconds
textAccept: 'Accept',
textDecline: 'Decline',
missedCallNotification: const NotificationParams(
showNotification: true,
isShowCallback: false,
subtitle: 'Missed call',
callbackText: '',
),
extra: <String, dynamic>{'guestRoomCode': data['guestRoomCode'], 'receiverName': data['receiverName']},
headers: <String, dynamic>{},
android: const AndroidParams(
isShowLogo: true,
textColor: "#ffffff",
actionColor: '#dda088',
backgroundColor: '#dda088',
isShowCallID: true,
isCustomNotification: true,
isShowFullLockedScreen: true,
isCustomSmallExNotification: true,
ringtonePath: 'system_ringtone_default',
incomingCallNotificationChannelName: 'screen_share_call',
missedCallNotificationChannelName: "screen_share_miss_call",
),
ios: const IOSParams(
iconName: 'AppIcon',
handleType: '',
supportsVideo: true,
maximumCallGroups: 2,
maximumCallsPerCallGroup: 1,
audioSessionMode: 'default',
audioSessionActive: true,
audioSessionPreferredSampleRate: 44100.0,
audioSessionPreferredIOBufferDuration: 0.005,
supportsDTMF: true,
supportsHolding: true,
supportsGrouping: false,
supportsUngrouping: false,
ringtonePath: 'system_ringtone_default',
),
);
await FlutterCallkitIncoming.showCallkitIncoming(params);
}
</code>
//Here is full implimentation of showCallKitIncomeing function
Future<void> showCallkitIncoming({required Map<String?, dynamic> data}) async {
CallKitParams params = CallKitParams(
id: const Uuid().v4(),
nameCaller: 'APP Screen Sharing Call',
appName: 'APP Title', ///<<< this is also not working...
avatar: data['senderImageUrl'],
handle: data['senderName'],
type: 0, // 0 for audio and 1 for video
duration: 60000, //60 seconds
textAccept: 'Accept',
textDecline: 'Decline',
missedCallNotification: const NotificationParams(
showNotification: true,
isShowCallback: false,
subtitle: 'Missed call',
callbackText: '',
),
extra: <String, dynamic>{'guestRoomCode': data['guestRoomCode'], 'receiverName': data['receiverName']},
headers: <String, dynamic>{},
android: const AndroidParams(
isShowLogo: true,
textColor: "#ffffff",
actionColor: '#dda088',
backgroundColor: '#dda088',
isShowCallID: true,
isCustomNotification: true,
isShowFullLockedScreen: true,
isCustomSmallExNotification: true,
ringtonePath: 'system_ringtone_default',
incomingCallNotificationChannelName: 'screen_share_call',
missedCallNotificationChannelName: "screen_share_miss_call",
),
ios: const IOSParams(
iconName: 'AppIcon',
handleType: '',
supportsVideo: true,
maximumCallGroups: 2,
maximumCallsPerCallGroup: 1,
audioSessionMode: 'default',
audioSessionActive: true,
audioSessionPreferredSampleRate: 44100.0,
audioSessionPreferredIOBufferDuration: 0.005,
supportsDTMF: true,
supportsHolding: true,
supportsGrouping: false,
supportsUngrouping: false,
ringtonePath: 'system_ringtone_default',
),
);
await FlutterCallkitIncoming.showCallkitIncoming(params);
}
Getting Notification when app is killed but call kit not showing up.
Apart from this i also want to how can i hide notification for this call only other notification need to show as usual.
Thanks in advance.