这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im_ios_ui组件开发指南 [2016/01/07 06:12] liuxia [3、下载UIKit组件的SDK] |
im_ios_ui组件开发指南 [2016/01/20 08:08] liuxia |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== IM iOS UIKitSDK简介 ====== | + | ====== 1、IM iOS UIKitSDK简介 ====== |
UI界面组件UCSIMKit 是集成云之讯的IM会话列表、聊天界面、邀请好友界面等。可快速集成和高度自定义界面的SDK | UI界面组件UCSIMKit 是集成云之讯的IM会话列表、聊天界面、邀请好友界面等。可快速集成和高度自定义界面的SDK | ||
在使用 IOS SDK之前,您可以先体验一下相关DEMO能力演示,帮助您快速了解和实现相关的能力 | 在使用 IOS SDK之前,您可以先体验一下相关DEMO能力演示,帮助您快速了解和实现相关的能力 | ||
行 7: | 行 7: | ||
======3、下载UIKit组件的SDK ====== | ======3、下载UIKit组件的SDK ====== | ||
- | 如果您还未下载UIKit SDK或者想获取最新的SDK,请点击下载云之讯UIKIT SDK([[http://www.ucpaas.com/product_service/im#item4 |下载地址在页面底部]]) | + | 如果您还未下载UIKit SDK或者想获取最新的SDK,请点击下载云之讯UIKIT SDK([[http://www.ucpaas.com/product_service/im#item4|下载地址]]) |
=====3.1、SDK目录讲解 ===== | =====3.1、SDK目录讲解 ===== | ||
从官网上下载下来的包中分为如下四部分: | 从官网上下载下来的包中分为如下四部分: | ||
行 13: | 行 13: | ||
1、USCIMkit.a UI组件的使用的静态库,是对界面组件的封装包 | 1、USCIMkit.a UI组件的使用的静态库,是对界面组件的封装包 | ||
2、UCSIMKit.bundle: 包含静态库中要使用的图片、语音资源 | 2、UCSIMKit.bundle: 包含静态库中要使用的图片、语音资源 | ||
- | 3、Lib: 包含录音功能相关文件和emoj表情的plist文件 | + | 3、Lib: 包含录音功能相关文件和emoj表情的plist文件和地图坐标信息转换的db文件 |
- | 4、头文件说明: | + | 4、3rdParty: UIKIT使用的第三方文件(避免重复引用冲突) |
+ | 5、头文件说明: | ||
UCSUIKitManager.h 是SDK的核心类,是一个单例类 | UCSUIKitManager.h 是SDK的核心类,是一个单例类 | ||
- | ChatListViewController.h 会话列表类 | + | ChatListViewController.h 会话列表类 |
ChatViewController.h 聊天界面类 | ChatViewController.h 聊天界面类 | ||
InfoManager.h 文件的处理类 | InfoManager.h 文件的处理类 | ||
行 23: | 行 24: | ||
MultiSelectViewController.h 选择好友的页面 | MultiSelectViewController.h 选择好友的页面 | ||
SingelChatDeltailViewController.h 单聊设置界面 | SingelChatDeltailViewController.h 单聊设置界面 | ||
+ | BaseViewController SDK的基础视图控制器类 | ||
UCConst.h 通知的枚举类 | UCConst.h 通知的枚举类 | ||
UCSIMDefine.h IM消息相关枚举类 | UCSIMDefine.h IM消息相关枚举类 | ||
UCSUserInfo.h 用户model类 | UCSUserInfo.h 用户model类 | ||
+ | UCSGroupInfo.h 群的model类 | ||
UCSUIKITSDK.h 包含所有的头文件 | UCSUIKITSDK.h 包含所有的头文件 | ||
UCSTcpDefine.h TCP相关枚举类 | UCSTcpDefine.h TCP相关枚举类 | ||
+ | UCSError.h SDK错误类型的定义类 | ||
</code> | </code> | ||
======4、SDK配置工程 ====== | ======4、SDK配置工程 ====== | ||
行 34: | 行 38: | ||
{{ :无标题1.png |}} | {{ :无标题1.png |}} | ||
=====4.2、导入UIKIT SDK ===== | =====4.2、导入UIKIT SDK ===== | ||
- | 将下载好的UCSUIKit_SDK_v3.0.0.zip包解压到任意目录。在你的项目中中加入libucsimkit.a和头文件,在你的Resource目录中加入ucsimkitBundel.bundel(资源包),将lib文件夹也拖到工程中。 | + | 将下载好的UCSUIKit_SDK_v3.0.0.zip包解压到任意目录。在你的项目中中加入libucsimkit.a和头文件,在你的Resource目录中加入ucsimkitBundel.bundel(资源包),将lib文件夹和3rdParty文件夹 也拖到工程中。 |
生成的效果如图 2 导入UIKit SDK效果图所示: | 生成的效果如图 2 导入UIKit SDK效果图所示: | ||
- | {{ :8888.jpg.png?nolink |}} | + | {{ :屏幕快照_2016-01-20_下午12.29.31.png |}} |
=====4.3、添加依赖库 ===== | =====4.3、添加依赖库 ===== | ||
行 43: | 行 47: | ||
libc++.dylib | libc++.dylib | ||
libstdc++.dylib | libstdc++.dylib | ||
+ | Libz.1.1.3.dylib | ||
+ | Libsqlite3.0.dylib | ||
+ | libicucore.A.dylib | ||
MessageUI.framework | MessageUI.framework | ||
MediaPlayer.framwork | MediaPlayer.framwork | ||
行 56: | 行 63: | ||
AVFoundation.framework | AVFoundation.framework | ||
SystemConfiguration.framework | SystemConfiguration.framework | ||
- | Libz.1.1.3.dylib | ||
- | Libsqlite3.0.dylib | ||
</code> | </code> | ||
生成的效果如下图所示: | 生成的效果如下图所示: | ||
- | {{ :99999.jpg.png?nolink |}} | + | {{ :屏幕快照_2016-01-20_下午2.17.16.png |}} |
注意:在Xcode7以上的编译器上,添加库时找不到以.dylib为后缀的库,将.dylib替换成.tdb就OK了。 | 注意:在Xcode7以上的编译器上,添加库时找不到以.dylib为后缀的库,将.dylib替换成.tdb就OK了。 | ||
=====4.4、配置编译选项 ===== | =====4.4、配置编译选项 ===== | ||
行 68: | 行 73: | ||
{{ :123456789.jpg?nolink |}} | {{ :123456789.jpg?nolink |}} | ||
=====4.5、预编译SDK ===== | =====4.5、预编译SDK ===== | ||
- | 新建一个预编译文件,将UIKIT所有头文件引入该文件中,以后使用的时候只需要导入这个头文件就可以了,也可以不进行这一步。 | + | 新建一个预编译文件,将UCSUIKITSDK.h引入预编译文件中。如果工程中已经存在预编译文件,那么将UCSUIKITSDK.h引入该文件中。 |
预编译文件中需要加入以下两句代码: | 预编译文件中需要加入以下两句代码: | ||
<code java> | <code java> | ||
行 77: | 行 82: | ||
====== 5、IOS UIKit SDK快速集成 ====== | ====== 5、IOS UIKit SDK快速集成 ====== | ||
===== 5.1、初始化SDK ===== | ===== 5.1、初始化SDK ===== | ||
- | 给核心单例传送root的控制器(root控制器是你设置管理IM通讯的控制,创建好友成功后跳转的页面) | + | 给核心单例传送root的控制器(root控制器是你设置管理IM通讯的控制,在选择好友页面,创建讨论组和单聊后的页面跳转) |
<code iOS> | <code iOS> | ||
MainVC = [[HomeViewControlleralloc] init]; | MainVC = [[HomeViewControlleralloc] init]; | ||
行 114: | 行 119: | ||
MultiSelectViewController *multiSel= [[MultiSelectViewControlleralloc]initWithType:UCSelectTypeCreatetargetId:[[InfoManagersharedInfoManager]phone ]]; | MultiSelectViewController *multiSel= [[MultiSelectViewControlleralloc]initWithType:UCSelectTypeCreatetargetId:[[InfoManagersharedInfoManager]phone ]]; | ||
</code> | </code> | ||
- | ===== 5.6、启动网络监控 ===== | + | |
- | <code iOS> | + | |
- | [[UCSUIKitManager shareUCSUIKit]watchNetorking]; | + | |
- | </code> | + | |
======6、显示用户头像和昵称以及好友联系人 ====== | ======6、显示用户头像和昵称以及好友联系人 ====== | ||
行 154: | 行 156: | ||
getFriend是获取用户的联系人 | getFriend是获取用户的联系人 | ||
<code iOS> | <code iOS> | ||
- | #pragma mark - UCSIMUserInfoDataSource method | + | 在试图控制器里设置一个代理然后实现参数的传递 |
+ | //设置代理 | ||
+ | [UCSUIKitManager setIMUserInfoDataSource:self]; | ||
+ | [UCSUIKitManager setUserInfoFetcherWithDelegate:self isCacheUserInfo:NO]; | ||
+ | |||
+ | #pragma mark - UCSIMUserInfoDataSource method | ||
-(NSArray*)getFriends | -(NSArray*)getFriends | ||
{ | { | ||
行 176: | 行 183: | ||
</code> | </code> | ||
- | ======7、UI的自定义 ====== | + | ======7、群信息头像和名称的自定义 ====== |
+ | |||
+ | 云之讯群信息头像的的自定义和用户头像的自定义原理是一样的,需要开发者自己根据获取群的ID设置群的头像和名称。 | ||
+ | |||
+ | 设计的原理: | ||
+ | 设置群信息是通过代理协议来设置数据源(类似TableView的代理方式),开发者只要实现2个代理就能设置数据源(可参考Demo)。 | ||
+ | <code iOS> | ||
+ | /*! | ||
+ | @protocol UCSIMUserInfoFetcherGroupDelegagte | ||
+ | 群信息的代理 | ||
+ | */ | ||
+ | @protocol UCSIMGroupInfoFetcherDelegagte <NSObject> | ||
+ | /*! | ||
+ | * 获取某个群信息。 | ||
+ | * | ||
+ | * @param groupId 群 Id。 | ||
+ | * @param completion 群信息 | ||
+ | */ | ||
+ | - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void(^)(UCSGroupInfo *groupInfo))completion; | ||
+ | @end | ||
+ | /*! | ||
+ | 群信息数据获取器。 | ||
+ | */ | ||
+ | @protocol UCSIMGroupInfoDataSource <NSObject> | ||
+ | /*! | ||
+ | 获取群信息列表。 | ||
+ | @return 群信息信息列表。 | ||
+ | */ | ||
+ | -(NSArray*)getGroupData; | ||
+ | @end | ||
+ | |||
+ | </code> | ||
+ | 在提供的用户信息的类中实现2个代理,组件的SDK就能获取到用户的信息数据 | ||
+ | getGroupDat是开发者根据群ID设置群的消息 | ||
+ | <code iOS> | ||
+ | #pragma mark -UCSIMGroupInfoDataSource | ||
+ | - (NSArray*)getGroupData | ||
+ | { | ||
+ | |||
+ | UCSGroupInfo *group = [[UCSGroupInfo alloc]init]; | ||
+ | group.userId = @"2"; | ||
+ | group.name = @"体验群"; | ||
+ | group.portraitUri = @"http://pica.nipic.com/2007-11-09/2007119124413448_2.jpg"; | ||
+ | |||
+ | |||
+ | UCSGroupInfo *group1 = [[UCSGroupInfo alloc]init]; | ||
+ | group1.userId = @"10"; | ||
+ | group1.name = @"我的群"; | ||
+ | group1.portraitUri = @"http://pica.nipic.com/2007-11-09/2007119124413448_2.jpg"; | ||
+ | |||
+ | [self.allGroupArray addObject:group]; | ||
+ | [self.allGroupArray addObject:group1]; | ||
+ | |||
+ | return self.allGroupArray; | ||
+ | } | ||
+ | |||
+ | #pragma mark --UCSIMGroupInfoFetcherDelegagte | ||
+ | - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(UCSGroupInfo *))completion | ||
+ | { | ||
+ | UCSGroupInfo *user = nil; | ||
+ | if([groupId length] == 0) | ||
+ | return completion(nil); | ||
+ | for(UCSGroupInfo *u in self.allGroupArray) | ||
+ | { | ||
+ | if([u.userId isEqualToString:groupId]) | ||
+ | { | ||
+ | user = u; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | return completion(user); | ||
+ | |||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ======8、UI的自定义 ====== | ||
通过子类的继承的方式,重写父类方法来达到UI的自定义。从而自定义内容更广,形式更加简单。 | 通过子类的继承的方式,重写父类方法来达到UI的自定义。从而自定义内容更广,形式更加简单。 | ||
行 203: | 行 285: | ||
</code> | </code> | ||
注意:BaseViewController中只有-(void)configureNavigationBar;这个方法。聊天界面、邀请好友界面以上方法都存在。 | 注意:BaseViewController中只有-(void)configureNavigationBar;这个方法。聊天界面、邀请好友界面以上方法都存在。 | ||
- | ======8、常见问题 ====== | + | ======9、常见问题 ====== |
Q:集成SDK后,头像不显示 | Q:集成SDK后,头像不显示 | ||
A:检查是否正确实现了-(NSArray*)getFriends;这个代理方法。 | A:检查是否正确实现了-(NSArray*)getFriends;这个代理方法。 | ||
- |