用户工具

im_ios_ui组件开发指南

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
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;这个代理方法。
- 

页面工具