Ios api

来自恩布企业IM,协作平台文档
跳转至: 导航搜索


恩布互联IOS端API手册

前言

说明文档适用于所有合作伙伴的苹果IOS版客户端应用,在接入之前,请确认您已在恩布开放平台(http://www.entboost.com/)注册,并已获得App ID, App Key。如还未获取,请参考业务文档。

准备工作

申请应用的appID和appKey

恩布官网注册开发者账号后,可以免费申请appID和appKey,用于开发中的相关验证。

导入SDK包

. 获取最新版本SDK:http://git.oschina.net/akee/EntboostChat/tree/master/sdk

IOS-API-1 4 1 01.png

. 将获取的工具包解压,提取出文件夹下4个文件夹及文件

IOS-API-1 4 1 02.png

. 将获取到的所有文件复制到你的工程目录下并导入。

IOS-API-1 4 1 03.png

第一步:导入momd文件(注意:务必选中references-引用方式)

IOS-API-1 4 1 04.png

第二步:导入头文件和资源文件(注意:选中create groups方式)

IOS-API-1 4 1 05.png

第二步:导入静态库文件

IOS-API-1 4 1 06.png
IOS-API-1 4 1 07.png
IOS-API-1 4 1 08.png

第四步:在Build Settings -> Linking -> Other Linker Flags中增加-ObjC值

IOS-API-1 4 1 09.png

代码使用说明

简单样例

引入恩布API头文件

#import "ENTBoost.h"

环境初始化

(由于初始化过程需要一些时间,因此尽量不要把这个工作放主线程)

//设置服务器访问地址
[ ENTBoostKit setServerAddress:@"entboost.entboost.com:18012"];
//获取恩布API全局单实例
ENTBoostKit* _ebkit = [ENTBoostKit sharedToolKit];
//初始化应用环境
[_ebkit registerWithAppId:appId appKey:appKey andDelegate:self onCompletion:^{
         NSLog(@"init app success");
    } onFailure:^(NSError *error) {
    }];

用户登录

[_ebkit logonSyncWithAccount:account password:password onCompletion:^(EBAccountInfo *accountInfo) {
          NSLog(@"logon success, username = %@", accountInfo.userName);
        } onFailure:^(NSError *error) {
}];

呼叫对方用户

执行呼叫后可能将有几种事件返回: onCallConnected: onCallReject: onCallBusy: onCallAlerting:

//呼叫单个用户
[_ebkit callUserWithAccount: @"auto-reply-test@entboost.com" onFailure:^(NSError *error){
    NSLog(@"呼叫用户错误");
}];
//呼叫群组
[_ebkit callGroupWithDepCode:99089 onFailure:^(NSError *error) {
     NSLog(@"呼叫群组错误");
}];

发送信息

//检查会话是否已经存在
//一对一会话,depCode==0
EBCallInfo* callInfo = [_ebkit callInfoWithAccount:toAccount depCode:0];
if(!callInfo) { //还没有与对方建立会话
    [_ebkit callUserWithAccount:toAccount onFailure:^(NSError *error) {
        NSLog(@"呼叫用户错误");
    }];
} else { //已经接通
    EBChatText* chat = [[EBChatText alloc] initWithText:text];
    EBMessage* message = [[EBMessage alloc] init];
    [message addChatDot:chat];
    [_ebkit sendMessage:message forCallId:callInfo.callId onCompletion:^{
          NSLog(@"发送文本完毕");
        } onFailure:^(NSError *error) {
        }];
}

登出系统

[_ebkit asyncLogoffWithAcceptPush:NO];

重载实现回调代理方法

//接收到被邀请对话的事件
-(void)onCallIncoming:(const EBCallInfo *)callInfo fromUid:(uint64_t)fromUid fromAccount:(NSString *)fromAccount 
vCard:(EBVCard *)vCard  clientAddress:(NSString *)clientAddress
{
    //应答是否接受邀请    
   [_ebkit ackTheCall:callInfo.callId accept:YES onCompletion:^{
        NSLog(@"onCallIncoming ack the call success");
    } failure:^(NSError *error) {
    }];
}
//会话已连通事件
-(void)onCallConnected:(const EBCallInfo *)callInfo
{
    NSLog(@"onCallConnected event callId = %llu", callInfo.callId);
}
//会话已挂断事件
-(void)onCallHangup:(const EBCallInfo *)callInfo
{
    NSLog(@"onCallHangup event callId = %llu", callInfo.callId);
}
//接收到信息
-(void)onRecevieMessage:(EBMessage *)message
{
    NSArray* chats = message.chats;
    [chats enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        EBChat* chatDot = obj;
        switch (chatDot.type) {
            case EB_CHAT_ENTITY_TEXT:
            {
                 NSString* txt = ((EBChatText*)chatDot).text;
                 NSLog(@"[%i]文本段:%@", idx, txt);
                 });
             }
             break;
             case EB_CHAT_ENTITY_RESOURCE:
             {
             EBChatResource* resDot = (EBChatResource*)chatDot;
             EBEmotion* expression = resDot.expression;
             NSLog(@"[%i]资源(表情)段:resId = %llu, 文件路径 = %@", idx, expression.resId, expression.filepath);
             }
             break;
             case EB_CHAT_ENTITY_IMAGE:
             {
                 EBChatImage* imageDot = (EBChatImage*)chatDot;
                 //NSData* imageData  = imageDot.data; 
                 UIImage* image = imageDot.image;
                 CGSize size = image.size;
                 NSLog(@"[%i]图片段:大小%fX%f", idx, size.width, size.height);
             }
             break;
             case EB_CHAT_ENTITY_AUDIO:
             {
                 EBChatAudio* audioDot = (EBChatAudio*)chatDot;
                 NSLog(@"[%i]语音段:长度(字节)%i", idx, audioDot.data.length);
                 dispatch_async(dispatch_get_main_queue(), ^{
             }
                 break;
         }
    }];
}
//即将接收文件,询问是否接收并要求传入要保存的绝对路径
-(void)onWillRecevieFileForCall:(uint64_t)callId msgId:(uint64_t)msgId msgTime:(NSDate*)msgTime fromUid:(uint64_t)
fromUid fileName:(NSString *)fileName fileSize:(uint64_t)fileSize accept:(BOOL *)accept  savedFilePath:(NSString**)savedFilePath
{
    *accept = TRUE;
    *savedFilePath = [EBFileUtility receivedFilePathWithFileName:fileName]; //可以是其它路径,由上层应用决定
}

API说明

详细内容见《Entboost_SDK_Document_1.4.1.zip》