1. 程式人生 > >即時通訊(環信) bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)

即時通訊(環信) bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)

 因在開發公司專案有即時通訊模組,經商量之後選擇了第三方即時通訊sdk環信,由於3.0文件還不是非常全面,且本人之前沒有過開發即時通訊的經驗,查閱了很多資料,磕磕絆絆幾天終於完成了對該模組的開發,故此記錄所遇到的問題及解決辦法,方便以後自己或朋友的查閱:  

  首先,對於第一次接觸的朋友需要初步瞭解下環信,官方文件非常詳盡的介紹了,在此就不贅述.附上官方文件連結:http://docs.easemob.com/doku.php?id=im:start

1.先直接根據官方文件整合SDK,在整合之前如果是第一次接觸環信,建議備份工程.

注:官方下載的包裡會有兩個靜態庫,一個是包含實時語音的庫,另一個則不包含,根據業務需求,記得刪除掉一個庫,直接move to trash就可以.切記要刪除!否則在後邊的步驟會報重複引用連結錯誤.

2.根據官方文件匯入依賴庫的時候,dylib字尾沒有的直接用tbd就可以(Xcode 7之後改為tbd).

加入系統SDK依賴庫:

        CoreMedia.framework

        AudioToolbox.framework

        AVFoundation.framework

        MobileCoreServices.framework

        ImageIO.framework

        SystemConfiguration.framework

        libc++.a

        libresolv.dylib

        libz.dylib

        libstdc++.6.0.9.dylib

        libsqlite3.dylib

        libHyphenateSDK.a

如果報錯:"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o),則另外要加入libiconv.tbd依賴庫.

官方依賴庫匯入之後編譯,此處編譯會遇到的坑: 

1).報重複引用靜態庫錯誤(沒刪官方兩個靜態庫中的一個) 

2).報與-all_load 衝突錯誤 根據文件改為-ObjC即可  如果改為-ObjC還有錯 可按照文件改為 -force_load

注:專案如果用了友盟分享,改為-force_load之後 會與友盟有衝突,具體原因也不清楚,專案直接crash在分享新浪微博,此處求解惑.  改為-ObjC即可

到此步驟直到編譯沒錯的時候就說明匯入SDK 配環境成功.

3.環信官方提供了easeUI這個快速整合單聊介面,在整合easeUI之前建議不要用cocoapods來整合,因為會報一些莫名的錯誤. 

整合easeUI:

1).將EaseUI工程下載下來之後,直接拖入EaseUI資料夾,EaseUIResource裡面的Resource資料夾,export資料夾裡的resource資料夾下的EaseUIResource.bundle 包,到工程中.

2).新建一個pch檔案,設定好路徑之後,在pch檔案中新增引用:EaseUI-Prefix.pch 、ChatDemo-UI3.0-Prefix.pch 這兩個pch中的程式碼. 

此時編譯會報一個 NSObject + EaseMob類別錯誤 (該類別是2.0demo中的,根本沒有用) 可以選擇註釋,或者直接刪除該類別.將該類別註釋掉之後,如果報更多的錯誤,錯誤定在NSString或其他系統類上,在你新建的pch檔案裡,你所包含的標頭檔案開始加上: #ifdef __OBJC__   結尾處加上: #endif 如下圖:

450A4D8A-1D3D-463A-8012-D75920068558.png

此時編譯如果還報錯並且錯誤定在NSLocalizedString, 在你的pch檔案裡添上如下巨集:

#define NSEaseLocalizedString(key, comment) [[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"EaseUIResource"withExtension:@"bundle"]] localizedStringForKey:(key) value:@"" table:nil]

3).下載官方提供的ChatDemo-3.0 拖入demo中3rdparty資料夾,因EaseUI本身集成了幾個常用三方庫,因此會與工程中你所用的重複,此時編譯會報錯.本身所包含的常用三方如下:MBProgressHUD、VoiceConvert、MJRefresh、SDWebImage. 如果有衝突,切記刪除ChatDemo中的三方庫,然後改掉相關報錯的程式碼.

此時編譯如果還報錯,錯誤為Setting資料夾下的BackUp類,直接刪除掉或註釋即可,該類用處不大.

至此,編譯成功則EaseUI的整合也完畢了.

環信的EaseUI其實只是做到一個展示的作用,包括一些控制元件的佈局,排版都沒有處理,因此我們可以直接用ChatDemo3.0中的ChatViewController這個介面,附上整合視訊地址:http://v.youku.com/v_show/id_XMTQxOTgyNjU1Mg==.html?from=y1.2-1-87.3.6-2.1-1-1-5-0

好了,到此當你把ChatViewController也整合完畢,一個初步成型的單聊介面就出來了.ps:環信支援非好友之間的聊天,你只要知道對方的環信id即可.

那麼你會疑問了,頭像和暱稱還沒有搞定.因為環信伺服器不儲存使用者的頭像和暱稱,因此需要你與自己app的伺服器互動,聊天介面的頭像和暱稱在如下方法中修改:

- (id<IMessageModel>)messageViewController:(EaseMessageViewController *)viewController
                           modelForMessage:(EMMessage *)message

如果因業務需求用到會話列表,官方並沒有非常完善的文件,可以參考demo中的ConversationListViewController.

相關推薦

即時通訊() bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)

 因在開發公司專案有即時通訊模組,經商量之後選擇了第三方即時通訊sdk環信,由於3.0文件還不是非常全面,且本人之前沒有過開發即時通訊的經驗,查閱了很多資料,磕磕絆絆幾天終於完成了對該模組的開發,故

03-即時通訊 整合

環信 環信是在XMPP的基礎上進行的二次開發環信在網路上傳輸的資料是XML 環信 是否使用過環信,簡單說一下環信的實現原理 環信是一個即時通訊的服務提供商環信使用的是XMPP協議,

android-使用SDK開發即時通訊功能及原始碼下載

最近專案中整合即時聊天功能,挑來揀去,最終選擇環信SDK來進行開發,選擇環信的主要原因是介面方便、簡潔,說明文件清晰易懂。文件有android、ios、和後臺伺服器端,還是非常全的。 環信官網:http://www.easemob.com/ 本篇文章目的主要

Android 使用easeui 3.0 整合即時通訊 我踩過的坑

0、關於註冊賬號就不用說了。 1、建立應用、獲取appkey 0、建立應用 1、填寫資訊 2、獲取appkey 2、整合 0、首先新建一個工程 1、這裡主要介紹使用easeui來整合環信的即時通訊功能,需要下載sdk

VUE專案整合WebIM即時通訊以及所遇到的問題

功能背景: 之前和朋友一起做了一個wbe專案整合環信的即時通訊的功能,做的時候感嘆web端文件太少,而且npm包有一些坑,記錄下來寫了這篇部落格,之後不斷有人加我微信問我,怎麼整合.現在我再來重寫一下這篇部落格. 環信web整合功能介紹: 首先:在web端環信是不提供介

iOS 基於SDK實現即時通訊-語音、視訊聊天

這裡建立的專案是在文字聊天專案:http://blog.csdn.net/create_pro/article/details/62420040基礎上新增的功能,所以可能需要先去連結文章地址檢視整合過程,具體專案連結在下面,這裡只介紹使用環信SDK整合語音、視訊

android端使用快速在自己的專案中整合即時通訊

因為公司的產品開發需要,需要開發IM,於是打算使用環信進行即時通訊的開發 首先在環信註冊成為開發者,建立應用,得到APPKEY 然後在環信官方下載SDK,SDK中有一個ChatDemo,可以安裝到自己的手機上檢視。 而easeui則需要整合到我們的專案中 因為easeui

關於即時通訊的使用小結

因專案中涉及即時通訊的模組,老大跟我說用環信的,所以去熟悉了下後搬到專案中使用,環信文件地址點選開啟連結 首先應該在AndroidManifest.xml檔案中配置環信相關 [html] view plain copy  print? <!-- 設

即時通訊sdk使用時遇到的問題及解決

2.解壓後  3.匯入examples的ChatDemoUI3.0,如果沒有關聯類庫easeui 的話要匯入easeui類庫並關聯 執行時會出現以下異常 Error:Execution failed for task ':transformClassesWithJar

即時通訊的理解

近來公司要做環信的即時通訊,發現公司想要聊天的功能基本上QQ都有,這樣就顯得有點不怎麼現實:人家作幾年?咱才多少時間?算了,還好環信也做了幾年了。走多遠就看自己在這個功能裡泡多久吸收多少,有點耐心總能把這段路走完。  整合環信有兩種方法, 1 整合環信的SDK,好處是可以用

商城客服功能-------即時通訊

empty public class CustomHelper { private static CustomHelper customhelper; private String TAG = "CustomHelper"; private Context appContext; private E

5分鐘整合即時通訊功能——Android版

下載環信demo (Android) 什麼是環信demo 環信demo展示了怎樣使用環信SDK快速建立一個完整的類微信聊天APP。展示的功能包括:環信SDK初始化,登入,登出,註冊訊息接收listener, 傳送訊息。 環信demo原始碼已在github上開源供開發

為自己的app加入即時通訊功能的流程

1.      在環信官網上註冊賬號,建立自己的app,生成app的key 2.      下載環信的SDK開發包,並匯入到自己的app中並在自己的app的AndroidManifest.xml檔案中加入步驟1中的key,並加入許可權 具體程式碼為:         

整合sdk步驟(即時通訊)

步驟:一,從環信官網註冊獲得appkey(沒有key 無法接入環信伺服器)二, 新增依賴   build.gradle(project)allprojects { repositories { google() jcenter()

Android-IM即時通訊

參考: IM : 即時通訊系統(IM,Instant Messenger)。 Android第三方即時聊天SDK的有:網易雲信、環信和融雲等。 這裡以環信來做即時通訊demo達到兩個效果: 1、使用者登入, 2、使用者間即時通訊 環

Android- IM即時通訊(1)

********************************環境配置************************ 1.拷貝Demo包下的libs包下的baidumapapi_v2_1_1.jareasemobchat_2.1.3.jarlocSDK_3.3.jararmeabi資料夾 2.配置許可權

即時通訊-伺服器端整合(REST API)-php版demo

 }     }     /*      * 註冊IM使用者(授權註冊)      */     public function hx_register($username, $password, $nickname)     {         $url = $this->url . "/users"

Android- IM即時通訊_RESTAPI(2)

*****************************************************REST_API 簡介******************************************************* A)REST client:HTT

即時通訊整合過程

最近一直挺忙,使用了一些第三方的東西,也遇見了不少的問題,前面使用的一些還好,比如推送,分享這些第三方都比較容易整合,這次整合環信的即時通訊還是費了一些周折,剛弄完,趕緊記錄一下。 一.前期需要注意的地方 總的來說環信的開發文件和SDK做的已經很簡單了,但是畢竟是第一次整合

android-使用SDK開發即時功能及源代碼下載

聊天功能 實時 成就 soft cat xtend 技術 easy www. 近期項目中集成即時聊天功能。挑來揀去,終於選擇環信SDK來進行開發,選擇環信的主要原因是接口方便、簡潔。說明文檔清楚易懂。文檔有android、ios、和後臺server端。還