在上一篇文章中咱們瞭解了環信客戶互動雲的功能,以及集成SDK前須要作的配置工做,接下來咱們正式進入項目集成階段,集成流程摘自環信CEC iOS SDK集成,本文對環信文檔作了更加詳細的說明,以及一些未指明錯誤的處理辦法,若有不當之處,請各位大神指正. 文末會附上GitHub的demo地址 #1、集成ios
提示 : 請按照如下5步所有操做完畢後再編譯,中間步驟執行中若是編譯報錯了不用管,繼續往下執行便可git
首先咱們先新建本身的項目,名稱起爲HuanxinKefugithub
打開項目目錄,新建一個文件夾HXService,從商城Demo中找HelpDeskUI文件夾,找到後複製進HXService文件夾bash
新建一個文件夾HXFramework,而後將HelpDesk.framework、HyphenateLite.framework(不包含實時語音功能)放在HXFramework文件夾中app
注意點 : Xcode 9.0的bug,把文件拖進項目後,這些文件的.m不能自動添加到Compile Source中,致使找不到文件等錯誤,須要手動添加.m到Compile Source,特別麻煩 解決方案 : 升級Xcode 9.1或9.2ui
HFileViewController : 查看聊天文件控制器(不是發送文件的) HDChatViewController : 聊天界面控制器(最主要的控制器) AppDelegate+HelpDesk : 初始化環信SDK,APNs,登陸,退出操做,多設備登陸功能等 SCLoginManger : 環信SDK管理者(單例) SVProgressHUD : 蒙版/HUD LocalDefine : 一些常量的宏定義 spa
//如下兩段代碼選用一個就好
//包含實時音視頻的這樣添加
#ifdef __OBJC__
#import <HelpDesk/HelpDesk.h>
#import "HelpDeskUI.h"
#import "SVProgressHUD.h"
#import "LocalDefine.h"
#import "UIImageView+WebCache.h"
#import "UIButton+WebCache.h"
#import "其餘頭文件"
#endif
//不包含實時音視頻的這樣添加
#ifdef __OBJC__
#import <HelpDeskLite/HelpDeskLite.h>
#import "HelpDeskUI.h"
#import "SVProgressHUD.h"
#import "LocalDefine.h"
#import "UIImageView+WebCache.h"
#import "UIButton+WebCache.h"
#import "其餘頭文件"
#endif
複製代碼
注意點:若是你的pch文件中已經導入了其餘頭文件,務必將其餘頭文件也寫在#ifdef __OBJC__ 和 #endif 之間,否則會報錯,由於SDK中包含的有C文件.net
//#import <Bugly/Bugly.h>
//[Bugly startWithAppId:@"b336efe49a"];
複製代碼
#import "SCLoginManager.h"
複製代碼
//第17行導入頭文件,註釋掉
//#import "HDLeaveMsgViewController.h"
複製代碼
//第77行的留言方法註釋掉
// 留言
/*
- (void)moreViewLeaveMessageAction:(HDChatBarMoreView *)moreView
{
[self stopAudioPlayingWithChangeCategory:YES];
HDLeaveMsgViewController *leaveMsgVC = [[HDLeaveMsgViewController alloc] init];
[self.navigationController pushViewController:leaveMsgVC animated:YES];
}
*/
複製代碼
//第211行,跳轉留言控制器的方法註釋掉
/*
- (void)didPressedLeaveMsgButton {
HDLeaveMsgViewController *leaveMsgVC = [[HDLeaveMsgViewController alloc] init];
[self.navigationController pushViewController:leaveMsgVC animated:YES];
}
*/
複製代碼
若是導入SDK後,編譯,報文件重複duplicate的錯,那是由於環信HelpDeskUI中的第三方庫與你項目中已集成的第三方庫重複,因此直接刪掉HelpDeskUI--3rdparty中對應的庫便可3d
Privacy - Photo Library Usage Description 須要訪問您的相冊 Privacy - Microphone Usage Description 須要訪問您的麥克風 Privacy - Camera Usage Description 須要訪問您的攝像機 代理
#import "AppDelegate+HelpDesk.h"
#import "ViewController.h" //初始界面,登陸/註冊界面
複製代碼
//1.建立窗口
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//2.初始化環信
[self easemobApplication:application didFinishLaunchingWithOptions:launchOptions];
//3.添加自定義小表情
[[HDEmotionEscape sharedInstance] setEaseEmotionEscapePattern:@"\\[[^\\[\\]]{1,3}\\]"];
[[HDEmotionEscape sharedInstance] setEaseEmotionEscapeDictionary:[HDConvertToCommonEmoticonsHelper emotionsDictionary]];
//4.設置根控制器
UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *vc = [story instantiateViewControllerWithIdentifier:@"story"];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
self.window.rootViewController = nav;
//5.顯示窗口
[self.window makeKeyAndVisible];
return YES;
複製代碼
#import "HDChatViewController.h"
#import "SCLoginManager.h"
複製代碼
而後實現註冊方法
//註冊
- (void)regHuanXin{
HError *error = [[HChatClient sharedClient] registerWithUsername:self.username.text password:self.password.text];
if (!error) {
NSLog(@"註冊成功");
}else{
NSLog(@"註冊失敗:%@",error.errorDescription);
}
}
複製代碼
實現登陸方法,判斷登陸成功,則跳轉到聊天控制器HDChatViewController
//登陸方法
- (void)loginHuanXin{
HChatClient *client = [HChatClient sharedClient];
if (client.isLoggedInBefore != YES) {
HError *error = [client loginWithUsername:self.username.text password:self.password.text];
if (!error) {
NSLog(@"登陸成功");
[self joinChat];
} else {
NSLog(@"登陸失敗");
}
}else{
[self joinChat];
}
}
複製代碼
//跳轉到聊天控制器(重點)
- (void)joinChat{
SCLoginManager *sc = [SCLoginManager shareLoginManager];
HDChatViewController *chatVC = [[HDChatViewController alloc] initWithConversationChatter:sc.cname]; // 獲取地址:kefu.easemob.com,「管理員模式 > 渠道管理 > 手機APP」頁面的關聯的「IM服務號」
[self.navigationController pushViewController:chatVC animated:YES];
}
複製代碼
//退出登陸
//若是要更換帳號登陸,必定要退出登陸後再登陸
- (IBAction)loginOutAction:(id)sender {
HError *error = [[HChatClient sharedClient] logout:YES];
if (error) { //登出出錯
NSLog(@"退出登陸出錯");
} else {//登出成功
NSLog(@"退出登陸成功");
}
}
複製代碼
找到AppDelegate+HelpDesk.m文件中的initializeCustomerServiceSdk方法,配置推送證書的名稱,關於生成推送證書可參考 : www.jianshu.com/p/4be583833… 其中的選項能夠關閉/開啓打印日誌
在LocalDefine.h文件中,填寫與客戶互動雲後臺關聯的信息,與後臺創建關聯關係
至此,基本集成工做已所有完畢,咱們打開APP嘗試聊天 首先註冊帳號
而後點擊登陸,登陸成功跳轉到聊天控制器,咱們嘗試發送一條消息給後臺客服//添加消息監控,第二個參數是執行代理方法的隊列,默認是主隊列
[[HChatClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
//移除消息監控
[[HChatClient sharedClient].chatManager removeDelegate:self];
- (void)messagesDidReceive:(NSArray *)aMessages{
//收到普通消息,格式:<HMessage *>
//只接收未讀消息,每條消息都會調用一次該方法
}
複製代碼
1.更多擴展功能能夠查看環信文檔,若有須要,我能夠將功能加在本身的Demo中
2.若是在集成過程當中遇到任何問題,請在下方留言~咱們共同交流
3.附github的demo地址 : 本身寫的demo 下載後只需導入HelpDeskLite.framework,HyphenateLite.framework便可
4.感謝各位的支持~