【iOS】環信客戶互動雲SDK集成+使用攻略(二)

上一篇文章中咱們瞭解了環信客戶互動雲的功能,以及集成SDK前須要作的配置工做,接下來咱們正式進入項目集成階段,集成流程摘自環信CEC iOS SDK集成,本文對環信文檔作了更加詳細的說明,以及一些未指明錯誤的處理辦法,若有不當之處,請各位大神指正. 文末會附上GitHub的demo地址 #1、集成ios

提示 : 請按照如下5步所有操做完畢後再編譯,中間步驟執行中若是編譯報錯了不用管,繼續往下執行便可git

1.新建項目

首先咱們先新建本身的項目,名稱起爲HuanxinKefugithub

2.向Build Settings → Linking → Other Linker Flags 中增長-ObjC(注意區分大小寫)。

3.複製所需SDK文件夾

  • 打開項目目錄,新建一個文件夾HXService,從商城Demo中找HelpDeskUI文件夾,找到後複製進HXService文件夾bash

    導入HelpDeskUI.png

  • 新建一個文件夾HXFramework,而後將HelpDesk.framework、HyphenateLite.framework(不包含實時語音功能)放在HXFramework文件夾中app

    導入環信客戶互動雲SDK.png

4.導入SDK

  • 將HXService文件夾拖進項目中,勾選 Copy items if needed 和 Create groups,此時不要慌着編譯,報錯也沒事,先無論,繼續往下操做
    導入HelpDeskUI.png

注意點 : Xcode 9.0的bug,把文件拖進項目後,這些文件的.m不能自動添加到Compile Source中,致使找不到文件等錯誤,須要手動添加.m到Compile Source,特別麻煩 解決方案 : 升級Xcode 9.1或9.2ui

  • 導入SDK,選中項目--General--Embedded Binaries--添加HelpDesk.framework和HyphenateLite.framework
    導入SDK.png

5.在項目中新建一個文件夾HXChat,將商城Demo中的下圖中藍色標註文件或文件夾所有複製進HXChat

HFileViewController : 查看聊天文件控制器(不是發送文件的) HDChatViewController : 聊天界面控制器(最主要的控制器) AppDelegate+HelpDesk : 初始化環信SDK,APNs,登陸,退出操做,多設備登陸功能等 SCLoginManger : 環信SDK管理者(單例) SVProgressHUD : 蒙版/HUD LocalDefine : 一些常量的宏定義 spa

所需文件.png

6.在pch文件或全局.h文件中添加以下代碼:

//如下兩段代碼選用一個就好

//包含實時音視頻的這樣添加
#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

7.須要修改的細節

  • AppDelegate+HelpDesk.m 文件中註釋掉Bugly(若是你須要bugly,在商城demo的Frameworks文件夾中找到Bugly.framework並拖進項目,此步則能夠不用執行)
//#import <Bugly/Bugly.h>
//[Bugly startWithAppId:@"b336efe49a"];
複製代碼
  • AppDelegate+HelpDesk.m 文件中,導入該頭文件
#import "SCLoginManager.h"
複製代碼
  • HDChatViewController中須要註釋掉如下代碼:
//第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];
}
*/
複製代碼

8.文件重複duplicate報錯注意點

若是導入SDK後,編譯,報文件重複duplicate的錯,那是由於環信HelpDeskUI中的第三方庫與你項目中已集成的第三方庫重複,因此直接刪掉HelpDeskUI--3rdparty中對應的庫便可3d

HelpDeskUI中的第三方庫.png

9.此時編譯,Success編譯成功--文件結構以下

最終文件瀏覽.png

2、相關配置

1.SDK 暫時不支持bitcode,在Build Settings →Enable Bitcode 改成NO。

image.png

2.去除大量多餘的警告,在Build Settings →documentation comments 改成NO

去除大量多餘警告.png

3.在工程info.plist文件中,增長隱私權限:

Privacy - Photo Library Usage Description 須要訪問您的相冊 Privacy - Microphone Usage Description 須要訪問您的麥克風 Privacy - Camera Usage Description 須要訪問您的攝像機 代理

權限配置.png

3、使用

1.初始化

  • 在AppDelegate.m文件中的導入頭文件
#import "AppDelegate+HelpDesk.h"
#import "ViewController.h" //初始界面,登陸/註冊界面
複製代碼
  • 在AppDelegate.m的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中調用
//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;
複製代碼
  • 在初始界面ViewController中進行登陸註冊 首先導入頭文件
#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(@"退出登陸成功");
    }
}
複製代碼

2.配置環信

  • 找到AppDelegate+HelpDesk.m文件中的initializeCustomerServiceSdk方法,配置推送證書的名稱,關於生成推送證書可參考 : www.jianshu.com/p/4be583833… 其中的選項能夠關閉/開啓打印日誌

    image.png

  • 在LocalDefine.h文件中,填寫與客戶互動雲後臺關聯的信息,與後臺創建關聯關係

    image.png

  • 至此,基本集成工做已所有完畢,咱們打開APP嘗試聊天 首先註冊帳號

    註冊.png
    而後點擊登陸,登陸成功跳轉到聊天控制器,咱們嘗試發送一條消息給後臺客服
    前臺發消息.png

後臺接收到消息.png
至此,咱們代碼使用過程已經所有寫完了,表情和語音信息均可以正常使用,目前只能接收和查看文件,若是想要集成發送文件功能,能夠參考http://blog.csdn.net/mengmakies/article/details/64122172 #####3.注意點

  • 遠程推送在AppDelegate+HelpDesk中已經集成,本地推送代碼能夠參考商城Demo
  • 聊天控制器HDChatViewController繼承自HelpDeskUI中的HDMessageViewController,HDMessageViewController纔是真正的聊天控制器,若是要修改東西,也能夠從該控制器中修改
  • 當聊天控制器HDChatViewController沒有加載(例如APP剛啓動)或已經dealloc,此時是不能接受到後臺發的消息的(HDChatViewController有消息監聽方法),可是咱們使用中每每會有這樣的需求,此時,你能夠在AppDelegate+HelpDesk(其餘不會dealloc的控制器也能夠)中也添加消息監聽的代理方法,多個接受消息監聽的方法互不影響
//添加消息監控,第二個參數是執行代理方法的隊列,默認是主隊列
[[HChatClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
//移除消息監控
[[HChatClient sharedClient].chatManager removeDelegate:self];

- (void)messagesDidReceive:(NSArray *)aMessages{
     //收到普通消息,格式:<HMessage *>
     //只接收未讀消息,每條消息都會調用一次該方法
}
複製代碼
  • 頭像和暱稱均可以在HelpDeskUI中修改
    修改頭像/暱稱.png

4、總結

1.更多擴展功能能夠查看環信文檔,若有須要,我能夠將功能加在本身的Demo中

2.若是在集成過程當中遇到任何問題,請在下方留言~咱們共同交流

3.附github的demo地址 : 本身寫的demo 下載後只需導入HelpDeskLite.framework,HyphenateLite.framework便可

4.感謝各位的支持~

相關文章
相關標籤/搜索