Yun2win为企业和开发者提供最安全的即时通讯(IM)云服务和基于Web RTC下的融合通讯云服务,通过yun2win的SDK及API,快速拥有即时通讯(instant messaging)、实时音视频(Audio and video Communication)、屏幕共享(Screen sharing)、电子白板(whiteboard)通讯能力。
编译环境:Xcode-Version 7.2.1 (7C1002)
┌── API
│ ├── Common
│ │ ├── Config :全局配置
│ │ ├── Util :常用工具
│ │ ├── Category :扩展方法
│ ├── Yun2Win :SDK
│ ├── Model :SDK相关实体和方法
│ ├── APITests :单元测试
│ ├── Classes :Demo界面
│ │ ├── Login :登陆
│ │ ├── Setting :设置
│ │ ├── ConversationList :会话列表
│ │ ├── Conversation :会话
│ │ └── Contact :控制器,对应app中的各个页面
│ ├── Frameworks
│ │ ├── Y2W_RTC_SDK.framework :yun2win音视频SDK
│ │ └── Y2W_IM_SDK.framework :yun2win即时通讯SDK
└── Pods 依赖管理工具
直接把SDK拷贝到项目中,选择项目TARGETS,点击"Build Phases"选项,点击"+"号添加"Copy Files",点击"Copy Files"中"+"号选项添加SDK。
在需要使用Y2W_IM_SDK的代码中引用头文件。
#import <Y2W_IM_SDK/Y2W_IM_SDK.h>
在需要使用Y2W_RTC_SDK的代码中引用头文件。
#import <Y2W_RTC_SDK/Y2WRTCChannel.h>
#import <Y2W_RTC_SDK/Y2WRTCVideoView.h>
#import <Y2W_RTC_SDK/Y2WRTCMember.h>
- 初始化Y2W_IM_SDK对象实例
+ (instancetype)shareY2WIMClient;
- 设置获取到的Token、UID和Appkey
- (void)registerWithToken:(NSString *)token UID:(NSString *)uid Appkey:(NSString *)appkey;
- 与yun2win推送服务器建立连接
/**
* 与yun2win服务器建立连接
*/
- (void)connect;
/**
* 与yun2win服务器重新建立连接
*/
- (void)reconnect;
- 推送消息
/**
* 推送消息
*
* @param session 会话
* @param message 推送消息体
*/
- (void)sendMessageWithSession:(id<IMSessionProtocol>)session Message:(id<IMMessageProtocol>)message;
- 推送更新会话消息
/**
* 推送更新会话消息
*
* @param session 对象IMSession
* @param message 对象IMMessage
*/
- (void)updateSessionWithSession:(id<IMSessionProtocol>)session Message:(id<IMMessageProtocol>)message;
1.发起方使用Y2WRTCManager对象的createChannel方法获取到Y2WRTCChannel对象
2.接收方使用Y2WRTCManager对象的getChannel方法获取Y2WRTCChannel对象
3.给Y2WRTCChannel添加委托对象,并实现Y2WRTCChannelDelegate协议方法
4.然后调用join方法加入频道
5.调用leave方法离开频道
#####Y2WRTCManager发起、加入音视频频道
- 属性
@property (nonatomic, copy) NSString *channelId; // 频道ID,发起方会自动获取,加入时需要填入发起方获取的ID
@property (nonatomic, copy) NSString *memberId; // 频道连接中的成员ID
@property (nonatomic, copy) NSString *token; // 用户token
- 方法
/**
* 发起音视频
*/
Y2WRTCManager *manager = [[Y2WRTCManager alloc] init];
manager.memberId = uid;
manager.token = token;
[manager createChannel:^(NSError *error, Y2WRTCChannel *channel) {
if (error) {
// 发起失败,返回错误
return;
}
// 把channel.channelId转发给需要接听的用户
// 使用channel对象管理连接
}];
/**
* 发起音视频
* @discuss 加入方法必须填入需要加入的channelId
*/
Y2WRTCManager *manager = [[Y2WRTCManager alloc] init];
manager.channelId = channelId;
manager.memberId = uid;
manager.token = token;
[manager getChannel:^(NSError *error, Y2WRTCChannel *channel) {
if (error) {
// 加入失败,返回错误
return;
}
// 使用channel对象管理连接
}];
#####Y2WRTCChannel管理频道
- 属性
@property (nonatomic, copy) NSString *channelId; // 频道ID
@property (nonatomic, retain, readonly) NSArray<Y2WRTCMember *> *members; // 此频道当前的所有成员
@property (nonatomic, assign) id<Y2WRTCChannelDelegate> delegate; // 委托对象
- 方法
-------------------------------- 音频功能 --------------------------------
/**
* 开启音频连接
*/
- (void)openAudio;
/**
* 关闭音频功能(关闭后无法发送和接受音频)
*/
- (void)closeAudio;
/**
* 是否开启扬声器
*
* @param speaker bool
*/
- (void)setSpeaker:(BOOL)speaker;
/**
* 当前是否使用的扬声器
*
* @return bool
*/
- (BOOL)speakerEnabled;
/**
* 是否设置麦克风静音
*
* @param mute bool
*/
- (void)setMicMute:(BOOL)mute;
/**
* 麦克风是否静音状态
*
* @return bool
*/
- (BOOL)micMuteEnabled;
-------------------------------- 视频功能 --------------------------------
/**
* 开启视频功能
*/
- (void)openVideo;
/**
* 关闭视频功能(关闭后无法发送和接受视频)
*/
- (void)closeVideo;
/**
* 切换前后摄像头
*
* @param use YES为使用后置摄像头
*/
- (void)useBackCamera:(BOOL)use;
/**
* 当前是否使用的后置摄像头
*
* @return YES为后置摄像头,NO为前置摄像头
*/
- (BOOL)isUseBackCamera;
/**
* 关闭自己的摄像头画面
*
* @param mute bool
*/
- (void)setVideoMute:(BOOL)mute;
/**
* 自己的摄像头是否关闭状态
*
* @return bool
*/
- (BOOL)videoMuteEnabled;
#####Y2WRTCMember成员对象,管理成员的状态并提供视频数据
- 属性
@property (nonatomic, copy) NSString *uid; // 用户ID
@property (nonatomic, retain) RTCVideoTrack *track; // 视频数据流
@property (nonatomic, assign) BOOL audioOpened; // 是否开启了音频连接
@property (nonatomic, assign) BOOL audioMuted; // 是否开启了静音(关闭麦克风)
@property (nonatomic, assign) BOOL videoOpened; // 是否开启了视频连接
@property (nonatomic, assign) BOOL videoMuted; // 是否关闭了摄像头
#####Y2WRTCChannelDelegate用于频道内事件的回调
- 方法
/**
* 有成员加入此频道
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didJoinMember:(Y2WRTCMember *)member;
/**
* 有成员离开此频道
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didLeaveMember:(Y2WRTCMember *)member;
/**
* 有成员开启了音频
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didOpenAudioOfMember:(Y2WRTCMember *)member;
/**
* 有成员关闭了音频
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didCloseAudioOfMember:(Y2WRTCMember *)member;
/**
* 有成员关闭或开启了麦克风
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didSwitchMuteAudioOfMember:(Y2WRTCMember *)member;
/**
* 音频连接出现错误
*
* @param channel 频道对象
* @param error 错误对象
*/
- (void)channel:(Y2WRTCChannel *)channel onAudioError:(NSError *)error;
/**
* 有成员开启了视频
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didOpenVideoOfMember:(Y2WRTCMember *)member;
/**
* 有成员关闭了视频
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didCloseVideoOfMember:(Y2WRTCMember *)member;
/**
* 有成员关闭或开启了摄像头
*
* @param channel 频道对象
* @param member 成员对象
*/
- (void)channel:(Y2WRTCChannel *)channel didChangeVideoMuteFromMember:(Y2WRTCMember *)member;
/**
* 视频连接出现错误
*
* @param channel 频道对象
* @param error 错误对象
*/
- (void)channel:(Y2WRTCChannel *)channel onVideoError:(NSError *)error;
官方网站 : http://www.yun2win.com
安卓 : https://github.com/yun2win/yun2win-sdk-android
iOS : https://github.com/yun2win/yun2win-sdk-iOS
Web : https://github.com/yun2win/yun2win-sdk-web
Server : https://github.com/yun2win/yun2win-sdk-server
liyueyun-SDK-iOS is available under the MIT license. See the LICENSE file for more info.