linkus-sdk-MacOS 1.2.0

linkus-sdk-MacOS 1.2.0

ygf 维护。



  • 杨桂福

iOS.GIF MacOS.GIF

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
  • 下载MacOS SDK

  • 拖拽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.mapplication: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. 登录接口

/**
 *  登录
 */
- (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;

更新日志

  • 20230428 提交尚未测试过的开源库,版本号:1.0.0
  • 20230508 开放日志路径、处理Voip推送、未接来电推送
  • 20230510 修复自测MacOS发现的问题
  • 20230608 修复iOS通话界面内存释放问题
  • 20230625 新增呼叫等待回调、修复Mac端日志数据路径异常
  • 20230625 更新SDK名称
  • 20230719 使用G722编码