main_production_audio_video_call
Sikander Saleem 3 weeks ago
parent 2a0f27f4d7
commit f2afab96fc

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'dart:io'; import 'dart:io';
@ -287,7 +288,7 @@ Future<void> handleDataMessage(Map<String, dynamic> messageData) async {
// } // }
if (messageData["type"] != null && messageData["type"] == "incoming_call") { if (messageData["type"] != null && messageData["type"] == "incoming_call") {
// if (notificationType == 'incoming_call' || transactionType == 'call') { // if (notificationType == 'incoming_call' || transactionType == 'call') {
// CRITICAL FIX: Show CallKit UI in foreground just like background
final callId = messageData['callId'] as String? ?? messageData['sessionId'] as String? ?? DateTime.now().millisecondsSinceEpoch.toString(); final callId = messageData['callId'] as String? ?? messageData['sessionId'] as String? ?? DateTime.now().millisecondsSinceEpoch.toString();
final callerId = messageData['callerId'] as String? ?? messageData['callerEmployeeNumber'] as String? ?? messageData['sourceUserId'] as String? ?? 'unknown'; final callerId = messageData['callerId'] as String? ?? messageData['callerEmployeeNumber'] as String? ?? messageData['sourceUserId'] as String? ?? 'unknown';
@ -311,7 +312,7 @@ Future<void> handleDataMessage(Map<String, dynamic> messageData) async {
log('📱 [FOREGROUND] Showing CallKit UI...', name: 'FirebaseNotificationManger'); log('📱 [FOREGROUND] Showing CallKit UI...', name: 'FirebaseNotificationManger');
// Show CallKit UI using CallKitService Timer? _callTimeoutTimer;
try { try {
final callKitParams = CallKitParams( final callKitParams = CallKitParams(
id: callId, id: callId,
@ -372,15 +373,21 @@ Future<void> handleDataMessage(Map<String, dynamic> messageData) async {
// "rationaleMessagePermission": "Notification permission is required, to show notification.", // "rationaleMessagePermission": "Notification permission is required, to show notification.",
// "postNotificationMessageRequired": "Notification permission is required, Please allow notification permission from setting." // "postNotificationMessageRequired": "Notification permission is required, Please allow notification permission from setting."
// }); // });
// Check if can use full screen intent
await FlutterCallkitIncoming.canUseFullScreenIntent();
// Request full intent permission await FlutterCallkitIncoming.canUseFullScreenIntent();
await FlutterCallkitIncoming.requestFullIntentPermission(); await FlutterCallkitIncoming.requestFullIntentPermission();
FlutterCallkitIncoming.unsilenceEvents();
FlutterCallkitIncoming.showCallkitIncoming(callKitParams); FlutterCallkitIncoming.showCallkitIncoming(callKitParams);
log('✅ [FOREGROUND] CallKit UI displayed successfully', name: 'FirebaseNotificationManger'); _callTimeoutTimer?.cancel();
_callTimeoutTimer = Timer(const Duration(seconds: 30), () async {
await FlutterCallkitIncoming.endCall(callId);
await FlutterCallkitIncoming.endAllCalls();
_callTimeoutTimer?.cancel();
_callTimeoutTimer = null;
});
} catch (e, stackTrace) { } catch (e, stackTrace) {
log('❌ [FOREGROUND] Failed to show CallKit UI: $e\nStack: $stackTrace', name: 'FirebaseNotificationManger'); _callTimeoutTimer?.cancel();
_callTimeoutTimer = null;
} }
} }
} }

Loading…
Cancel
Save