环境
- 因为SDK中需要使用到麦克风,需在
Info.plist
中添加Privacy - Microphone Usage Description
集成
方式一:CocoaPods集成(推荐)
pod 'FGCallKit-pod', '~> 1.0.1'
方式二:手动集成
1.下载FGCallKit.framework
2.复制 FGCallKit.framework
至项目路径下。
3.打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。
4.点击 + > Add Other… > Add Files 添加对应动态库,并确保添加的动态库 Embed 属性设置为 Do Not Embed。
5.在TARGETS > Project Name > Build Settings > Other Linker Flags中添加$(inherited)
6.添加以下系统依赖库AVFoundation、CoreData、WebKit、SystemConfiguration、MobileCoreServices
7.在Podfile
文件中添加pod 'xpjsip', '~>2.12.1'
使用
引入头文件
#import <FGCallKit/FGCallKit.h>
登录
在你登录自己服务器成功后拿到数据后登录FGCallKit
,该登录方法和logout:
方法是成对使用的。
/**
* 登录
* @param apiKey 平台申请的key
* @param apiSecret 平台申请的secret
* @param username 用户名
* @param callBlock 回调
*/
- (void)login:(NSString *)apiKey
apiSecret:(NSString *)apiSecret
username:(NSString *)username
callBlock:(FGCallKitCommonCallBlock)callBlock;
例如:
[[FGCallKit sharedKit] login:@"你的apiKey"
apiSecret:@"你的apiSecret"
username:@"你的username"
callBlock:^(NSInteger code, NSString *msg, id data) {
NSLog(@"登录%@ code:%ld msg:%@", code == 200 ? @"成功" : @"失败", code, msg);
}];
错误码:
code | 备注 |
---|---|
200 | 登录成功 |
500 | apiKey、apiSecret、username不能为空 |
501 | 服务器或网络出错 |
其他 | 服务端返回错误提示 |
退出登录
/**
* 退出登录
* @param callBlock 回调
*/
- (void)logout:(FGCallKitCommonCallBlock)callBlock;
错误码:
code | 备注 |
---|---|
300 | 退出登录成功 |
501 | 服务器或网络出错 |
其他 | 服务端返回错误提示 |
呼出
/**
* 拨号
* @param number 呼出号码
* @block 回调
*/
- (void)outgoingCall:(NSString *)number
block:(FGCallKitOutgoingCallBlock)block
监听来电代理
[FGCallKit sharedKit].delegate = self;
/**
* 收到来电回调
* @param call 来电对象
*/
- (void)callKit:(FGCallKit *)callKit didReceiveIncomingCall:(FGCall *)call;
呼出成功和收到来电你可以弹出一个自定义View或ViewController来展示通话中的内容
收到来电你可以循环播放一个来电铃声直至接通关闭铃声
应用在后台收到来电处理
因为如果应用退到后台是接收不到来电的,所以需要在应用进入前台时查询一下是否有来电
- (void)applicationDidBecomeActive:(UIApplication *)application {
[[FGCallKit sharedKit] queryHaveIncoming];
}
其他说明
通话中开启/关闭免提
注:这个方法属于
FGCallKit
类
/**
* 通话中开启/关闭免提
* @param isHandfree 是否免提
*/
- (void)handfree:(BOOL)isHandfree;
通话/通话中操作
/**
* 接听
*/
- (void)answer;
/**
* 挂断
*/
- (void)hangup:(void(^)(BOOL succeed, NSString *msg))block;
/**
* 开启/关闭静音
* @param isMute 是否静音
*/
- (void)mute:(BOOL)isMute;
/**
* 通话中途发送数字
* @param digits 数字
*/
- (BOOL)sendDTMFDigits:(NSString *)digits;