Ios Voip Kit

development_aamir
Aamir Muhammad 2 years ago
parent 23820e7e5e
commit 4f3437cba9

@ -141,6 +141,7 @@ class IosCallPayload {
String? incomingCallerName;
String? callData;
String? uuid;
bool? isIncomingCall;
IosCallPayload({
this.incomingCallType,
@ -148,6 +149,7 @@ class IosCallPayload {
this.incomingCallerName,
this.callData,
this.uuid,
this.isIncomingCall,
});
factory IosCallPayload.fromRawJson(String str) => IosCallPayload.fromJson(json.decode(str));
@ -160,6 +162,7 @@ class IosCallPayload {
incomingCallerName: json["incoming_caller_name"],
callData: json["call_data"],
uuid: json["uuid"],
isIncomingCall: true,
);
Map<String, dynamic> toJson() => {

@ -38,10 +38,13 @@ import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/ui/chat/call/chat_incoming_call_screen.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/button/hmg_connectivity_button.dart';
import 'package:mohem_flutter_app/widgets/input_widget.dart';
import 'package:provider/provider.dart';
import 'package:signalr_netcore/hub_connection.dart';
// import 'package:safe_device/safe_device.dart';
import 'package:wifi_iot/wifi_iot.dart';
@ -93,8 +96,10 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
callListeners();
checkAndNavigationCallingPage();
}
if (Platform.isIOS) {
setupVoIPCallBacks();
}
}
// IOS Voip Call
void setupVoIPCallBacks() {
@ -114,8 +119,8 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
Map<String, dynamic> payload,
) async {
_iosCallPayload = IosCallPayload.fromJson(payload);
isIncomingCall = true;
_timeOut();
isIncomingCall = _iosCallPayload!.isIncomingCall!;
// _timeOut();
};
voIPKit.onDidRejectIncomingCall = (
@ -131,10 +136,11 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
String callerId,
) async {
var callerID = "did accept call $callerId";
timeOutTimer.cancel();
isIncomingCall = true;
await connectCall();
await voIPKit.acceptIncomingCall(callerState: CallStateType.calling);
await voIPKit.callConnected();
//await voIPKit.
};
}
@ -153,14 +159,27 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
Future<void> connectCall() async {
try {
// Utils.showToast("Connect " + isIncomingCall.toString(),longDuration: true);
if (isIncomingCall) {
Future.delayed(Duration(seconds: 3),(){
BuildContext context = AppRoutes.navigatorKey.currentContext!;
Utils.hideLoading(context);
if(context !=null) {
Utils.showToast("Connect ---- Conn" , longDuration: true);
}
_iosCallPayload!.isIncomingCall = false;
Utils.saveStringFromPrefs("iosCallPayload", jsonEncode(_iosCallPayload));
var pageRoute = MaterialPageRoute(builder: (context) => StartCallPage());
Navigator.push(context, pageRoute).whenComplete(() {
checkFirebaseToken();
// checkFirebaseToken();
});
});
}
} catch (e) {
Utils.showToast("Connect " + e.toString(),longDuration: true);
logger.d(e);
}
}
@ -180,17 +199,6 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
// print(error);
// }
// }
// Future<void> connectCall() async {
// try {
// UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserCallToken(userid: _iosCallPayload!.incomingCallerId!.split("-").last);
// if (userLoginResponse.response != null) {
// AppState().setchatUserDetails = userLoginResponse;
// Utils.saveStringFromPrefs("userLoginChatDetails", jsonEncode(userLoginResponse.response));
// }
// } catch (e) {
// logger.d(e);
// }
// }
Future<void> callListeners() async {
try {
@ -392,6 +400,8 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
Utils.showLoading(context);
Future.delayed(const Duration(seconds: 2)).whenComplete(() {
if (!isIncomingCall) {
// isIncomingCall=true;
Utils.showToast("Incoming + $isIncomingCall", longDuration: true);
if (isAppOpenBySystem!) checkFirebaseToken();
}
});

Loading…
Cancel
Save