linkus SDK 接入指南
一. SDK 集成
系统要求: iOS 11
MacOS 10.13
因为 MacOS 使用 SwiftUI 实现,所以需要 Xcode 14.3
Linkus 提供两种集成方式供开发者选择:
- CocoaPods
- 手动集成
1.1 CocoaPods集成方式
在 iOS 项目中 Podfile 添加以下代码:
pod 'linkus-sdk'
在 MacOS 项目中 Podfile 添加以下代码:
pod 'linkus-sdk-MacOS'
保存并执行 pod install
,然后用后缀为 .xcworkspace
的文件打开项目。
有关 CocoaPods 的更多信息,请查看 CocoaPods 官方网站。
1.2 手动集成方式
-
下载 iOS SDK
-
将
linkus_sdk_iOS.framework
文件拖拽到 Xcode 工程内(请勾选Copy items if needed
选项) -
添加依赖库
libz.dylib
libc++.dylib
libxml2.dylib
libresolvdylib
-
将
linkus_sdk_MacOS.framework
文件拖拽到Xcode工程中(请选择Copy items if needed
选项) -
添加依赖库
libcurl.dylib
libxml2.dylib
libc++.dylib
二. 初始化SDK
2.1 导入头文件
在项目的PrefixHeader.pch
文件中导入头文件
#import <linkus_sdk_iOS/linkus_sdk.h>
或者#import <linkus_sdk_MacOS/linkus_sdk.h>
2.2 初始化iOS SDK
在项目的AppDelegate.m
文件中的application:didFinishLaunchingWithOptions:
方法中初始化:
- Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[YLSSDK sharedYLSSDK] initApp];
return YES;
}
2.3 初始化MacOS SDK,参考Demo
Linkus SDK 使用指南
一. 接口声明
1. 配置
/**
* 配置项
*/
+ (instancetype)sharedConfig;
/// Localized name of the provider
@property (nonatomic,copy,nullable) NSString *localizedName;
/// Image should be a square with side length of 40 points
@property (nonatomic,copy,nullable) NSData *iconTemplateImageData;
/// 日志文件路径,外层需创建文件夹
@property (nonatomic,copy) NSString *logPath;
/// 数据文件路径,外层需创建文件夹
@property (nonatomic,copy) NSString *dataPath;
/// 来电声音频文件
@property (nonatomic,copy) NSString *comeAudioFileName API_AVAILABLE(macos(10.13));
/// 挂断声音频文件
@property (nonatomic,copy) NSString *hangupAudioFileName;
/// 呼叫等待声音频文件
@property (nonatomic,copy) NSString *alertAudioFileName;
2. 登录接口
/**
* 登录接口返回值
* 1: 连接不上服务器
* -5: 连接服务器成功但是登录请求没有响应
* 403:用户名或密码错误
* 405:客户端被禁用
* 407:账号被锁定
* 416:请求ip被禁止(pbx开启国家防御)
*/
- (void)login:(NSString *)account token:(NSString *)token localIP:(NSString *)localIP localPort:(NSString *)localPort
remoteIP:(NSString *)remoteIP remotePort:(NSString *)remotePort completion:(void (^)(NSError * _Nullable error))completion;
/**
* 自动登录
*/
- (void)autoLogin API_AVAILABLE(ios(11.0));
/**
* 登出
*/
- (void)logout:(void (^)(NSError * _Nullable error))completion;
/**
* 登录回调
*/
- (void)onLoginStep:(LoginStep)step;
/**
* 被踢(服务器/其他端)回调
*/
- (void)onKickStep:(KickReason)code;
3. 通话接口
/**
* 发起通话
*/
- (void)startCall:(YLSSipCall *)sipCall completion:(void (^)(NSError *error))completion;
/**
* 结束通话
*/
- (void)endCall:(YLSSipCall *)sipCall;
/**
* Hold
*/
- (void)setHeld:(YLSSipCall *)sipCall;
/**
* 静音
*/
- (void)setMute:(YLSSipCall *)sipCall;
/**
* 录音
*/
- (BOOL)setRecord:(YLSSipCall *)sipCall;
/**
* 咨询转
*/
- (void)transferConsultation:(YLSSipCall *)sipCall;
/**
* 盲转
*/
- (void)tranforBlind:(YLSSipCall *)sipCall;
/**
* 通话质量
*/
- (NSString *)callQuality;
4. 通话信息
/**
* 处理Voip推送
*/
- (void)receiveIncomingPushWithPayload:(NSDictionary *)dictionaryPayload;
/**
* 处理Miss Call未接来电
*/
- (BOOL)didReceiveRemoteNotification:(NSDictionary *)userInfo;
/**
* 正在进行的通话信息
*/
- (YLSSipCall *)currentSipCall;
/**
* 所有通话信息
*/
- (NSArray<YLSSipCall *> *)currentSipCalls;
/**
* 获取MacOS 麦克风与扬声器
*/
- (NSArray<YLSCaptureDevice *> *)audioALLDevice API_AVAILABLE(macos(10.13));
/**
* 设置MacOS 麦克风与扬声器
*/
- (void)audioSetDevice:(NSInteger)microphone speaker:(NSInteger)speaker API_AVAILABLE(macos(10.13));
/**
* Sip 注册状态
*/
- (BOOL)sipRegister;
/**
* 录音功能是否可用
*/
- (BOOL)enableRecord;
/**
* 管理员录音功能
*/
- (BOOL)adminRecord;
/**
* 来电委托
*/
- (void)setIncomingCallDelegate:(id<YLSCallManagerDelegate>)delegate;
/**
* 添加委托
*/
- (void)addDelegate:(id<YLSCallManagerDelegate>)delegate;
/**
* 移除委托
*/
- (void)removeDelegate:(id<YLSCallManagerDelegate>)delegate;
/**
* 来电回调
*/
- (void)callManager:(YLSCallManager *)callManager contact:(void (^)(id<YLSContactProtocol> (^block)(NSString *number)))contact completion:(void (^)(void (^controllerBlock)(void),void (^errorBlock)(NSError *error)))completion;
/**
* 通话信息变更回调
*/
- (void)callManager:(YLSCallManager *)callManager callInfoStatus:(NSMutableArray<YLSSipCall *> *)currenCallArr;
/**
* Sip错误码回调
*/
- (void)callManager:(YLSCallManager *)callManager callFaild:(NSError *)error;
/**
* 录音状态回调
*/
- (void)callManagerRecordType:(YLSCallManager *)callManager;
/**
* 当前通话质量回调
*/
- (void)callManager:(YLSCallManager *)callManager callQuality:(BOOL)quality;
/**
* 呼叫等待回调
*/
- (BOOL)callWaitingSupport;
5. 通话类型、呼叫等待、呼叫转移
/**
* 呼叫等待切换通话
*/
- (void)callChange:(YLSSipCall *)waitingCall;
/**
* 添加委托
*/
- (void)addDelegate:(id<YLSCallStatusManagerDelegate>)delegate;
/**
* 移除委托
*/
- (void)removeDelegate:(id<YLSCallStatusManagerDelegate>)delegate;
/**
* 挂断所有通话
*/
- (void)callStatusManagerDissmiss:(YLSCallStatusManager *)callStatusManager;
/**
* 普通来电
*/
- (void)callStatusManager:(YLSCallStatusManager *)callStatusManager currentCall:(YLSSipCall *)currentCall;
/**
* 呼叫等待转移
*/
- (void)callStatusManager:(YLSCallStatusManager *)callStatusManager currentCall:(YLSSipCall *)currentCall
callWaiting:(nullable YLSSipCall *)callWaitingCall transferCall:(nullable YLSSipCall *)transferCall;
6. 历史记录
/**
* 历史记录信息
*/
- (NSArray<YLSHistory *> *)historys;
/**
* 删除历史记录
*/
- (void)historyManagerRemove:(NSArray<YLSHistory *> *)historys;
/**
* 删除所有历史记录
*/
- (void)historyManagerRemoveAll;
/**
* 标记已读
*/
- (void)checkMissedCalls;
/**
* 历史记录变更回调
*/
- (void)historyReload:(NSMutableArray<YLSHistory *> *)historys;
/**
* 未接来电数量变更回调
*/
- (void)historyMissCallCount:(NSInteger)count;
6. 会议室
/**
* 会议室来电
*/
- (void)conferenceManager:(YLSConfManager *)manager
callStatus:(YLSSipCall *)sipCall
reportIncomingCall:(void (^)(void (^controllerBlock)(void),void (^errorBlock)(NSError * _Nullable error)))completion;
/**
* 会议室通话状态
*/
- (void)conferenceManager:(YLSConfManager *)manager callStatus:(YLSSipCall *)sipCall;
/**
* 会议室成员状态
*/
- (void)conferenceManager:(YLSConfManager *)manager conferenceInfo:(YLSConfCall *)confCall;
/**
* 异常会议室
*/
- (void)conferenceManager:(YLSConfManager *)manager abnormal:(nullable YLSConfCall *)confCall;
/**
* 正在进行的会议室通话信息
*/
- (YLSSipCall *)currentConfSipCall;
/**
* 创建会议室
*/
- (void)createConference:(YLSConfCall *)confCall
complete:(void(^)(NSError * _Nullable error,NSString *confid))complete;
/**
* 邀请成员
*/
- (void)inviteConferenceMembers:(NSArray<NSString *> *)contacts
confid:(NSString *)confid
complete:(void(^)(NSError * _Nullable error))complete;
/**
* 操作成员
*/
- (void)operationConferenceMember:(NSString *)member
confid:(NSString *)confid
operationType:(int)type
complete:(void(^)(NSError * _Nullable error))complete;
/**
* 会议室来电委托
*/
- (void)setIncomingCallDelegate:(id<YLSConfManagerDelegate>)delegate;
/**
* 添加委托
*/
- (void)addDelegate:(id<YLSConfManagerDelegate>)delegate;
/**
* 移除委托
*/
- (void)removeDelegate:(id<YLSConfManagerDelegate>)delegate;
更新日志
- 20230719 上传未测试过的开源库,版本号:1.1.0