集成
<p>[TOC]</p>
<h2>集成方式</h2>
<p>QD_IMSDK 通过手动下载 SDK, 然后添加到您的项目中。</p>
<h3>手动集成</h3>
<p>需要做以下步骤: 将下载的 SDK 拖动到 Targets -> General -> Embedded Binaries 里,如下图
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/3fb5b764e44fb13336c7afa1ef9c68cf?showdoc=.jpg" alt="" />
弹框这样选择
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/03823e8797b4cad67bb339265ea0f817?showdoc=.jpg" alt="" />
即可完成集成。</p>
<h3>自动集成</h3>
<p>暂不支持...</p>
<h3>类库说明</h3>
<p>QD_IMSDK 主要提供了如下类(协议)与方法</p>
<table>
<thead>
<tr>
<th style="text-align: center;">类(协议)</th>
<th style="text-align: center;">描述</th>
<th style="text-align: center;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">QDClient</td>
<td style="text-align: center;">SDK的主入口类</td>
<td style="text-align: center;">提供初始化,注册,内部管理的公共能</td>
</tr>
<tr>
<td style="text-align: center;">QDIMLoginManager</td>
<td style="text-align: center;">登录管理类</td>
<td style="text-align: center;">负责登录,注销和相应的回调收发</td>
</tr>
<tr>
<td style="text-align: center;">QDIMChatManager</td>
<td style="text-align: center;">聊天/会话管理类</td>
<td style="text-align: center;">负责消息、最近会话的管理</td>
</tr>
<tr>
<td style="text-align: center;">QDIMGroupManager</td>
<td style="text-align: center;">群组管理类</td>
<td style="text-align: center;">负责群组各种操作</td>
</tr>
<tr>
<td style="text-align: center;">QDIMSystemNotificationManager</td>
<td style="text-align: center;">系统通知管理类</td>
<td style="text-align: center;">负责系统消息的接收和存储</td>
</tr>
<tr>
<td style="text-align: center;">QDIMApnsManager</td>
<td style="text-align: center;">推送管理类</td>
<td style="text-align: center;">负责推送的设置和接收</td>
</tr>
<tr>
<td style="text-align: center;">QDIMResourceManager</td>
<td style="text-align: center;">资源管理类</td>
<td style="text-align: center;">负责文件上传、敏感词信息获取</td>
</tr>
<tr>
<td style="text-align: center;">QDIMUserManager</td>
<td style="text-align: center;">用户管理类</td>
<td style="text-align: center;">负责好友的增删查以及会话的设置</td>
</tr>
<tr>
<td style="text-align: center;">QDIMOrgManager</td>
<td style="text-align: center;">组织架构管理类</td>
<td style="text-align: center;">负责获许组织架构的相关信息</td>
</tr>
<tr>
<td style="text-align: center;">QDIMAppManager</td>
<td style="text-align: center;">应用管理类</td>
<td style="text-align: center;">负责取应用信息</td>
</tr>
<tr>
<td style="text-align: center;">QDIMMediaManager</td>
<td style="text-align: center;">媒体管理类</td>
<td style="text-align: center;">负责音视频通话的相关通讯</td>
</tr>
<tr>
<td style="text-align: center;">QDIMTokenManager</td>
<td style="text-align: center;">Web验证Token管理类</td>
<td style="text-align: center;">负责Web认证的Token的获取与刷新</td>
</tr>
</tbody>
</table>
<h2>调用规则</h2>
<h3>调用方式</h3>
<p>所有业务均通过 QDClient 单利调用</p>
<pre><code>@interface QDClient : NSObject
/**
* 获取 SDK 实例
*
* @return QDClient 是咧
*/
+ (instancetype)sharedClient;
@end
</code></pre>
<p>以获取登录管理类为例:</p>
<pre><code>id<QDIMLoginManager> loginManager = [[QDClient sharedClient] loginManager];</code></pre>
<p>我们强烈推荐您在且只在主线程调用相应接口。</p>
<h3>通知方式</h3>
<p>SDK 通过两种方式通知上层 API 调用结果:回调(callback)和委托 (delegate),两种方式都只在主线程触发。</p>
<p>一般回调接口直接反映在对应接口的 completion 参数上,调用时设置即可。而委托则需要开发者在合适时机在对应管理类上进行添加和移除:一般推荐在相应 ViewController 或管理类初始化进行委托注册,在其销毁时进行移除。</p>
<p>例如,开发者需要在在会话页上监听消息的发送结果</p>
<pre><code>@implementation MySessionViewController
- (void)dealloc
{
...
[[QDClient sharedClient].chatManager removeDelegate:self];
...
}
- (void)viewDidLoad
{
...
[[QDClient sharedClient].chatManager addDelegate:self];
...
}
#pragma mark - QDChatManagerDelegate
- (void)sendMessage:(QDMessage *)message didCompleteWithError:(nullable NSError *)error
{
//发送结果
}
</code></pre>
<p>所有调用错误都会以 NSError 的形式暴露。针对不同场景,我们将错误进行分类,主要分为以下两种错误域和对应错误码</p>
<table>
<thead>
<tr>
<th style="text-align: center;">错误域</th>
<th style="text-align: center;">错误码</th>
<th style="text-align: center;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">QDIMLocalErrorDomain</td>
<td style="text-align: center;">QDLocalErrorCode</td>
<td style="text-align: center;">本地操作出错导致</td>
</tr>
<tr>
<td style="text-align: center;">QDIMRemoteErrorDomain</td>
<td style="text-align: center;">QDRemoteErrorCode</td>
<td style="text-align: center;">与服务器交互出错导致</td>
</tr>
</tbody>
</table>
<p>在开发过程中遇到错误情况,可以对照错误域和错误码进行排查,具体定义可以参考 QDGlobalDefs.h。当然在开发过程中你也可以通过检视 NSError 中 userInfo 对应的错误描述信息定位问题。
备注:
如果出现错误 Building for , but the linked and embedded framework was built for iOS + iOS Simulator
可以用一下方法解决:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/85dbecfa2f3ad8b7cdbf3992fb4cfa1e" alt="" /></p>