//
|
// HDLLinPhoneSDK.m
|
// HDLLinPhoneSDK
|
//
|
// Created by 陈启扬 on 2021/8/3.
|
// Copyright © 2021 陈启扬. All rights reserved.
|
//
|
|
#import "HDLLinPhoneSDK.h"
|
#import "HDLLinphoneManager.h"
|
#import "HDLLinphoneIntercomVC.h"
|
#import "HDLLinPhoneCommon.h"
|
#import "HDLLPOnMonitorViewController.h"
|
|
@interface HDLLinPhoneSDK()
|
//@property (nonatomic, strong) HDLLinphoneIntercomVC *IntercomVC;
|
//@property (nonatomic, strong) HDLLPOnMonitorViewController *CallVC;
|
@end
|
|
@implementation HDLLinPhoneSDK
|
|
+ (instancetype)instance{
|
static HDLLinPhoneSDK *service = nil;
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
service = [[HDLLinPhoneSDK alloc] init];
|
[NSNotificationCenter.defaultCenter addObserver:service
|
selector:@selector(registrationUpdate:)
|
name:@"LinphoneRegistrationUpdate"
|
object:nil];
|
// service.CallVC=nil;
|
// service.IntercomVC=nil;
|
|
});
|
return service;
|
}
|
|
-(void)dealloc{
|
// [NSNotificationCenter.defaultCenter remo];
|
}
|
|
-(void)login:(NSString*)username password:(NSString*)pwd domain:(NSString*) domain{
|
[HDLLinphoneManager.instance login:username password:pwd domain:domain];
|
}
|
|
- (void)registrationUpdate:(NSNotification *)notif {
|
LinphoneRegistrationState state = [[notif.userInfo objectForKey:@"state"] intValue];
|
if (state == LinphoneRegistrationFailed){
|
NSLog(@"登失败");
|
}else if (state == LinphoneRegistrationCleared){
|
NSLog(@"登录清空");
|
} else if (state == LinphoneRegistrationOk) {
|
|
// HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
|
// [[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
|
//
|
// }];
|
NSLog(@"登录成功啦");
|
}else if (state==10){//接收到呼叫通知
|
// self.IsAutoJumpCallView=YES;
|
NSString *userName=[NSString stringWithFormat:@"%@",[notif.userInfo objectForKey:@"userName"]];
|
[self.hdlLinphoneCallDelegate onIncomingCall:userName];
|
|
if(self.IsAutoJumpCallView){
|
NSString *callId=[NSString stringWithFormat:@"%@",[notif.userInfo objectForKey:@"callID"]];
|
BOOL hasVideo=(BOOL)[notif.userInfo objectForKey:@"hasVideo"];
|
|
HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
|
vc.CallId=callId;
|
vc.hasVideo=hasVideo;
|
vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
|
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
// self.IntercomVC=vc;
|
[[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
|
|
}];
|
}
|
|
|
}else if(state==11){//挂断了
|
// NSLog(@"挂断或出错了");
|
// if (self.IntercomVC) {
|
// __weak typeof(self) weakSelf = self;
|
// [self.IntercomVC dismissViewControllerAnimated:YES completion:^{
|
// weakSelf.IntercomVC=nil;
|
// }];
|
// }
|
//
|
// if (self.CallVC) {
|
// __weak typeof(self) weakSelf = self;
|
// [self.CallVC dismissViewControllerAnimated:YES completion:^{
|
// weakSelf.CallVC=nil;
|
// }];
|
// }
|
|
}else if(state==12){//占线了
|
// NSLog(@"占线了");
|
// if (self.CallVC) {
|
// [self.CallVC showUIAlertViewWithBack:@"监视结束"];
|
// }
|
}
|
}
|
|
-(void)initalLinPhone{
|
[HDLLinphoneManager.instance initalLinPhonal];
|
}
|
|
-(void)callWithUserName:(NSString*)username title:(NSString *)title{
|
|
HDLLPOnMonitorViewController *vc=[[HDLLPOnMonitorViewController alloc]init];
|
// vc.CallId=callId;
|
// vc.hasVideo=YES;
|
vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
|
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
vc.userName=username;
|
vc.titleName=title;
|
// self.CallVC=vc;
|
[[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
|
|
}];
|
|
}
|
/**
|
* 跳转呼叫页面
|
*
|
* @param titleName 标题
|
*/
|
-(void)gotoHDLLinphoneIntercomVC:(NSString*)titleName{
|
|
// NSString *callId=[NSString stringWithFormat:@"%@",[notif.userInfo objectForKey:@"callID"]];
|
// BOOL hasVideo=(BOOL)[notif.userInfo objectForKey:@"hasVideo"];
|
|
HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
|
// vc.CallId=callId;
|
vc.hasVideo=YES;
|
vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
|
vc.titleName=titleName;
|
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
// self.IntercomVC=vc;
|
[[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
|
|
}];
|
}
|
|
-(void)logoutAllLinphoneUser{
|
[HDLLinphoneManager.instance removeAllAccounts];
|
}
|
|
-(void)clearAllConfigs{
|
|
}
|
|
-(void)enterBackground{
|
[HDLLinphoneManager.instance enterBackgroundMode];
|
}
|
|
-(void)becomactive{
|
[HDLLinphoneManager.instance becomeActive];
|
}
|
|
-(void)willResignActive{
|
[HDLLinphoneManager.instance willResignActive];
|
}
|
@end
|