用户工具

im_ios_ui组件开发指南

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im_ios_ui组件开发指南 [2016/01/14 01:48]
tangbing [5.1、初始化SDK]
im_ios_ui组件开发指南 [2016/03/18 10:07]
liuxia
行 1: 行 1:
-====== IM iOS UIKitSDK简介 ====== +====== ​1、IM iOS UIKit SDK简介 ====== 
-UI界面组件UCSIMKit 是集成云之讯的IM会话列表、聊天界面、邀请好友界面等。可快速集成和高度自定义界面的SDK +云之讯IM UIKit是在原子SDK基础上封装了IM相关的上层业务和UI,开发者无须处理复杂IM业务及UI,只需启动已封装好的界面就能拥有IM功能。包括:IM会话列表界面、好友列表界面、聊天界面等。 
-在使用 IOS SDK之前,您可以先体验一下相关DEMO能力演示,帮助您快速了解和实现相关的能力+
 ====== 2、集成前的准备 ====== ====== 2、集成前的准备 ======
-成为云之讯平台开发者,创建后台应用,详细步骤见注册云之讯开发者账号和管理中心使用指南。如果已经是平台开发者,并且对云之讯平台非常熟悉,那么可以跳过这一步继续往下看。 +您需要成为云之讯平台开发者,然后在平台创建应用,详细步骤见注册云之讯开发者账号和管理中心使用指南。如果已经是平台开发者,并且对云之讯平台非常熟悉,那么可以跳过这一步继续往下看。 
-使用云之讯UI组件登陆云平台,需要使用token登陆,在实际的开发中,token ​一般由开发者自己的服务器下发。如果开发者对token概念不理解,请点击云之讯token+使用云之讯UIKIt组件登陆云平台,需要使用token,token是需要服务器向云平台申请,然后下发给用户登录
  
 ======3、下载UIKit组件的SDK ====== ======3、下载UIKit组件的SDK ======
-如果还未下载UIKit SDK或者想获取最新的SDK,请点击下载云之讯UIKIT SDK([[http://​www.ucpaas.com/​product_service/​im#​item4 |下载地址在页面底部]])+下载云之讯UI组件最新的SDK,请点击UIKIT SDK连接([[http://​www.ucpaas.com/​product_service/​im#​item4|下载地址]])
 =====3.1、SDK目录讲解 ===== =====3.1、SDK目录讲解 =====
-从官网上下载下来的包中分为如下四部分:+从官网上下载的SDK含的主要四部分:
 <code java> <code java>
-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、头文件说明:
-UCSUIKitManager.h  ​               ​SDK的核心类,是一个单例类 +UCSUIKitManager.h  ​               SDK的核心类,单例类 
-ChatListViewController.h         ​会话列表类+ChatListViewController.h ​               会话列表类
 ChatViewController.h  ​               聊天界面类 ChatViewController.h  ​               聊天界面类
 InfoManager.h  ​                       文件的处理类 InfoManager.h  ​                       文件的处理类
行 23: 行 23:
 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>​
 +<​html>​
 +<span style="​color:​red;​font-size:​100%;">​注意事项:添加的Lib文件成功的标志是在工程文件中的Copy Bundle Resource配置栏有相应的显示。
 + </​span>​
 +</​html>​
 +
 ======4、SDK配置工程 ====== ======4、SDK配置工程 ======
 ===== 4.1、新建工程 ===== ===== 4.1、新建工程 =====
行 34: 行 42:
 {{ :​无标题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(版本号).zip包解压到任意目录。在的项目中加入libucsimkit.a头文件ucsimkitBundel.bundel(资源包),lib文件夹。 
-生成的效果如图 2  ​导入UIKit SDK效果图所示:​ + ​导入UIKit SDK后工程界面如下图所示:​ 
-{{ :8888.jpg.png?​nolink ​|}} +{{ :屏幕快照_2016-03-07_下午5.21.44.png |}}
 =====4.3、添加依赖库 ===== =====4.3、添加依赖库 =====
-需要添加以下依赖库:+需要添加以下依赖库:
 <code java> <code java>
 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: 行 66:
 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了。 +<​html>​ 
-=====4.4、配置编译选项 ===== +<span style="​color:​red;​font-size:​100%;">​注意事项:在Xcode7以上的编译器上,添加库时找不到以.dylib为后缀的库,将.dylib替换成.tdb就OK了。 
-向Targets ->Build Settings -> Linking -> Other Linker Flags 中添加【-ObjC】(注意大小写)+ </​span>​ 
 +</html>
  
-在工程的info.plist文件中,增加项 【Required background modes】,将该项的任意一个Item字段的值修改为 【App provides Voice over IP services】如图: 
-{{ :​123456789.jpg?​nolink |}} 
 =====4.5、预编译SDK ===== =====4.5、预编译SDK =====
-新建一个预编译文件,将UIKIT所有头文件引入文件中,以后使用的时候只需要导入这个头文件就可以了也可以不进行这一步。 +新建一个预编译文件,将UCSUIKITSDK.h引入预编译文件中。如果工程中已经存在UCSUIKITSDK.h预编译文件,直接将文件导入工程。 
-预编译文件需要两句代码+如果新建预编译文件需要入下面2个头文件
 <code java> <code java>
 #import <​UIKit/​UIKit.h>​ #import <​UIKit/​UIKit.h>​
行 77: 行 84:
 ====== 5、IOS UIKit SDK快速集成 ====== ====== 5、IOS UIKit SDK快速集成 ======
 ===== 5.1、初始化SDK ===== ===== 5.1、初始化SDK =====
-核心单例传送root的控制器(root控制器是你设置管理IM通讯的控制,创建好友成功后跳转页面) +调用核心单例设置推送类型 
-<​code ​iOS+<​code ​java
-MainVC = [[HomeViewControlleralloc] init]; +//​通过单例的方法来调用核心类的能力接口 
-_nav = [[BaseNavigationViewControllerallocinitWithRootViewController:​_MainVC];​ +[UCSUIKitManager shareUCSUIKit
-_loginVC = nil; +/** 
-[[UCSUIKitManager shareUCSUIKit] ​registeNotificationsWithRootController:_nav];+*  设置开发环境 
 +*  参数 ​  ​parameter ​  ​UCSPushEnvironment ​  ​是枚举类型 ​ 开发环境和发布环境 
 +*/ 
 +[[UCSUIKitManager shareUCSUIKit]setPushEnvironment:UCSPushEnvironment_Production];
 </​code>​ </​code>​
-===== 5.2、连接服务器 ===== +<​html>​ 
-云之讯UIKit SDK的消息收发必须在和平保持连接情况下进行(离线推送除外)连接平代码如下:+<span style="​color:​red;​font-size:​100%;">​ 
 +- 注意事项: 
 + ​首先必须设置deviceToken,模拟是无法获取devicetoken,也就没有推送功能。 </​span>​ 
 +</​html>​ 
 + 
 +<​html>​ 
 +<span style="​color:​red;​font-size:​100%;">​ 
 +        - 当使用"​开/测试环境"​的appkey测试推送时,必须用Development的证书打包,并且上传"​开发/测试环境"​推送证书,证书必须是development的。 当使用"​生产/线上环境"​的appkey测试推送必须用Distribution的证书打包,并且在后上传"​生产/线上环境"​的推送证书,证书必须是distribution的。 </​span>​ 
 +</​html>​ 
 + 
 +===== 5.2、设置推送开发环境 =====
 <code iOS> <code iOS>
 +推送的环境要根据上传的证书的类型来匹配,证书是发布证书,对应设置为发布环境。同理,如果证书是开发型证书,对应设置为开发环境。(证书的类型可以在钥匙串访问中查找)
 +//​设置推送的环境 ​  ​1为开发 ​   其他为发布
 +eg:
 +[[UCSUIKitManager shareUCSUIKit]setPushEnvironment:​UCSPushEnvironment_Develop]; ​
 +在Appdelegate相应的系统方法中,保存推送的Token
 +- (void)application:​(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:​(NSData *)deviceToken
 +{
 + ​NSString *deviceToken1 = [[[[deviceToken description]
 +                                stringByReplacingOccurrencesOfString:​@"<"​withString:​@""​]
 +                               ​stringByReplacingOccurrencesOfString:​@">"​ withString:​@""​]
 +                              stringByReplacingOccurrencesOfString:​ @" " withString: @""​];​
 +    [[NSUserDefaults standardUserDefaults] setObject:​deviceToken1 forKey:​@"​DeviceToken"​];​
 +    [[NSUserDefaults standardUserDefaults] synchronize];​
 +}
 +</​code>​
 +<​html>​
 +<span style="​color:​red;​font-size:​100%;">​
 +注意事项:
 +NSUserDefaults设置的DeviceToken的名字一定要是"​DeviceToken",​这样才能被SDK识别。 </​span>​
 +</​html>​
 +
 +===== 5.3、连接服务器 =====
 +云之讯UIKit SDK的消息收发必须在和平台保持连接的情况下进行(离线推送除外),连接平台示例代码如下:
 +<code java>
 +/**
 + ​* ​ 连接服务器
 + ​@param token               ​从服务端获取的用户身份令牌(Token)。
 + ​@param successBlock ​       调用完成的处理。
 + ​@param errorBlock ​         调用返回的错误信息。
 + ​@param tokenIncorrectBlock token错误或者过期。需要重新换取token,但需要注意避免出现无限循环。
 + ​@return ​                   无
 + */
 [[UCSUIKitManager shareUCSUIKit] connectWithToken:​im_token success:​^(NSString *userId) { [[UCSUIKitManager shareUCSUIKit] connectWithToken:​im_token success:​^(NSString *userId) {
    [self connectionSuccessful:​0];​    [self connectionSuccessful:​0];​
行 94: 行 146:
 </​code>​ </​code>​
  
-===== 5.3、启动会话列表界面 =====+ 
 +===== 5.4、启动会话列表界面 =====
 启动会话的主要类是 ​   ChatListViewController 启动会话的主要类是 ​   ChatListViewController
  
 <code iOS> <code iOS>
 ChatListViewController *chatList = [[ChatListViewControlleralloc]init];​ ChatListViewController *chatList = [[ChatListViewControlleralloc]init];​
-[chatListsetNavigationTitle:​@"​会话列表"​ textColor:​[UIColorwhiteColor]];​ 
 [self.navigationControllerpushViewController:​chatListanimated:​YES];​ [self.navigationControllerpushViewController:​chatListanimated:​YES];​
 </​code>​ </​code>​
-===== 5.4、启动单聊会话界面 =====+===== 5.5、启动单聊会话界面 =====
 启动单聊的主要类是 ChatViewController (在demo中默认一个固定的chatter) 启动单聊的主要类是 ChatViewController (在demo中默认一个固定的chatter)
 <code iOS> <code iOS>
行 109: 行 161:
 </​code>​ </​code>​
  
-===== 5.5、启动邀请好友界面 ===== +===== 5.6、启动邀请好友界面 ===== 
-邀请好友的主要类是 ​ MultiSelectViewController (开发者可以自定义联系人,但如果需要聊天,改联系人必须经过云之讯鉴权)+邀请好友的主要类是 ​ MultiSelectViewController (开发者可以自定义联系人,但联系人必须经过云之讯鉴权)
 <code iOS> <code iOS>
 MultiSelectViewController *multiSel= [[MultiSelectViewControlleralloc]initWithType:​UCSelectTypeCreatetargetId:​[[InfoManagersharedInfoManager]phone ]]; MultiSelectViewController *multiSel= [[MultiSelectViewControlleralloc]initWithType:​UCSelectTypeCreatetargetId:​[[InfoManagersharedInfoManager]phone ]];
 +[self.navigationController pushViewController:​multiSel animated:​YES];​
 </​code>​ </​code>​
-===== 5.6启动网络监控 ​===== + 
-<​code ​iOS+===== 5.8SDK的其他接口 ​===== 
-[[UCSUIKitManager shareUCSUIKit]watchNetorking];+UIKitSDK还提供了其他的接口,供开发者自由选择搭配。示例代码如下: 
 +<​code ​java
 + /** 
 +   ​获取所有未读信息的数量 
 +   ​@return ​         返回的具体数据  
 + */ 
 +- (NSInteger)getTotalUnreadCount;​ 
 +/** 
 +  查询帐号与服务器连接状态 
 +  @return ​ Yes 为是连接状态 ​ NO 离线状态 
 + */ 
 +- (BOOL)isConnected;
 </​code>​ </​code>​
-======6、显示用户头像和昵称以及好友联系人 ​======+======6、UI的自定义====== 
 +===== 6.1、用户头像和昵称以及好友联系人的自定义  ​=====
  
-云之讯不维护和管理用户的基本信息(头像 id 、 昵称)的获取、缓存、变更和同步。所有的好友联系人的个人信息(比如昵称、头像)需要用户自己维护,UIKit SDK提供了相应的接口回调用户信息。+云之讯不维护和管理用户的基本信息(头像 id 、 昵称)的获取、缓存、变更和同步。所有的好友联系人的个人信息(比如昵称、头像)需要开发者自己维护,UIKit SDK提供了相应的接口回调用户信息。
  
 设计的原理: 设计的原理:
 +通过UCSUIKitManager的代理设置数据源的参数,然后调用代理方法参数的Block来回调数据,完成SDK从外部数据的获取。
 +
 设置用户的信息是通过代理协议来设置数据源(类似TableView的代理方式),开发者只要实现2个代理就能设置数据源(可参考Demo)。 设置用户的信息是通过代理协议来设置数据源(类似TableView的代理方式),开发者只要实现2个代理就能设置数据源(可参考Demo)。
-<​code ​iOS+<​code ​java
-/*!+/**
  ​@protocol UCSIMUserInfoFetcherDelegagte  ​@protocol UCSIMUserInfoFetcherDelegagte
  ​用户信息的获取器。  ​用户信息的获取器。
- 如果在聊天中遇到的聊天对象是没有登录过的用户(即没有通过云之讯服务器鉴权过的),IM 是不知道用户信息的,​IM 将调用此 Delegagte 获取用户信息。+ IM 是不知道用户信息的,​IM 将调用此 Delegagte 获取用户信息。
  */  */
 @protocol UCSIMUserInfoFetcherDelegagte <​NSObject>​ @protocol UCSIMUserInfoFetcherDelegagte <​NSObject>​
-/*!+/**
  ​* ​ 获取用户信息。  ​* ​ 获取用户信息。
  ​* ​ @param userId ​    ​用户 Id。  ​* ​ @param userId ​    ​用户 Id。
行 139: 行 206:
 @end @end
  
-/*!+/**
  ​好友列表的获取器。  ​好友列表的获取器。
  ​云之讯 本身不保存 App 的好友关系,如果在聊天中需要使用好友关系时(如:需要选择好友加入群聊),UCSIMkit 将调用此 Delegagte 获取好友列表信息。  ​云之讯 本身不保存 App 的好友关系,如果在聊天中需要使用好友关系时(如:需要选择好友加入群聊),UCSIMkit 将调用此 Delegagte 获取好友列表信息。
  */  */
 @protocol UCSIMUserInfoDataSource <​NSObject>​ @protocol UCSIMUserInfoDataSource <​NSObject>​
-/*!+/**
  ​获取好友信息列表。  ​获取好友信息列表。
  ​@return 好友信息列表。  ​@return 好友信息列表。
行 153: 行 220:
 在提供的用户信息的类中实现2个代理,组件的SDK就能获取到用户的信息数据 在提供的用户信息的类中实现2个代理,组件的SDK就能获取到用户的信息数据
 getFriend是获取用户的联系人 getFriend是获取用户的联系人
-<​code ​iOS+<​code ​java> 
-#pragma mark - UCSIMUserInfoDataSource method+在试图控制器里设置一个代理然后实现参数的传递 
 +//​设置代理 
 +[UCSUIKitManager setIMUserInfoDataSource:​self];​ 
 +[UCSUIKitManager setUserInfoFetcherWithDelegate:​self isCacheUserInfo:​NO];​ 
 + 
 + #​pragma mark - UCSIMUserInfoDataSource method ​  ​
 -(NSArray*)getFriends -(NSArray*)getFriends
 { {
行 176: 行 248:
 </​code>​ </​code>​
  
-======7UI的自定义 ======+===== 6.2群信息头像和名称的自定义 ​ ===== 
 + 
 +云之讯群信息头像的的自定义和用户头像的自定义原理是一样的,需要开发者自己根据获取群的ID设置群的头像和名称。 
 + 
 +设计的原理: 
 +通过UCSUIKitManager的代理设置数据源的参数,然后调用代理方法参数的Block来回调数据,完成SDK从外部数据的获取。 
 + 
 +设置群信息是通过代理协议来设置数据源(类似TableView的代理方式),开发者只要实现2个代理就能设置数据源(可参考Demo)。 
 + 
 +<code java> 
 +/** 
 + ​@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 java> 
 +#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>​ 
 + 
 +===== 6.3、导航栏的自定义  ​===== 
 通过子类的继承的方式,重写父类方法来达到UI的自定义。从而自定义内容更广,形式更加简单。 通过子类的继承的方式,重写父类方法来达到UI的自定义。从而自定义内容更广,形式更加简单。
  
 会话列表界面、会话界面、邀请好友界面、聊天设置界面都继承BaseViewController。 会话列表界面、会话界面、邀请好友界面、聊天设置界面都继承BaseViewController。
-可以被重写的方法如下:​ +能够被重写的方法如下所示
-<​code ​iOS+<​code ​java
-/*!+/**
  ​@brief ​ 配置导航栏上  ​@brief ​ 配置导航栏上
  */  */
 -(void)configureNavigationBar;​ -(void)configureNavigationBar;​
- +/**
-/*!+
  ​* ​ 导航左面按钮点击事件  ​* ​ 导航左面按钮点击事件
  */  */
 - (void)leftBarButtonItemPressed:​(id)sender;​ - (void)leftBarButtonItemPressed:​(id)sender;​
- +/**
-/*!+
  ​* ​ 导航右面按钮点击事件  ​* ​ 导航右面按钮点击事件
  */  */
 - (void)rightBarButtonItemPressed:​(id)sender;​ - (void)rightBarButtonItemPressed:​(id)sender;​
  
-/*! 
- ​@brief ​ 设置导航栏的标题的颜色和文字 
- */ 
-- (void)setNavigationTitle:​(NSString *)title textColor:​(UIColor*)textColor;​ 
 </​code>​ </​code>​
-注意:BaseViewController中只有-(void)configureNavigationBar;​这个方法。聊天界面、邀请好友界面以上方法都存在。 
-======8、常见问题 ====== 
  
-Q:集成SDK后,头像不显示+<​html>​ 
 +<span style="​color:​red;​font-size:​100%;">​注意事项: 
 +1、如果需要替换聊天界面的背景图片,可以在ucsimkitBundle.bundle资源库文件中替换对应chat_backgroud_sky名字的图片 
 +2、自定义的聊天界面需要开发者新建一个类,继承chatviewController。</​span>​ 
 +</​html>​ 
 + 
 + 
 +======7、常见问题 ====== 
 + 
 +**Q:集成SDK后,头像不显示** 
 + 
 +<​html>​ 
 +<span style="​color:​red;​font-size:​100%;">​A:检查是否正确实现了-(NSArray*)getFriends;这个代理方法。 </​span>​ 
 +</​html>​ 
 + 
 + 
 +**Q:集成SDK后,如果自定义了聊天页面(chatViewController),然后需击会话页面的cell,进入聊天页面,聊天页面的风格需要和自定义的聊天页面相同。 
 +** 
 + 
 +<​html>​ 
 +<span style="​color:​red;​font-size:​100%;">​A:请联系我们的技术支持,有相应的定制版本。 </​span>​ 
 +</​html>​ 
 + 
 + 
 +**Q:集成SDK后,编译的过程fail,bug工作台出现----x86的字样。 
 +**
  
-A:检查是否正确实现了-(NSArray*)getFriends;这个代理方法+<​html>​ 
 +<span style="​color:​red;​font-size:​100%;">​A:请选择真机调试,SDK库文件暂不支持模拟器编译。 </​span>​
  
 +</​html>​

页面工具