iOS開發(fā)之環(huán)信(一)--基礎(chǔ)知識詳解

大大小小關(guān)于環(huán)信的知識點都在這里了!(之前自己寫了一個文檔所以現(xiàn)在這些都是粘貼文檔了)

一.環(huán)信常識:

1.名詞解釋

org_name企業(yè)唯一標(biāo)識,開發(fā)者在環(huán)信開發(fā)者管理后臺注冊賬號時填寫的企業(yè)ID

app_name同一企業(yè)下APP的唯一標(biāo)識努隙,開發(fā)者在環(huán)信開發(fā)者管理后臺創(chuàng)建應(yīng)用時填寫的”應(yīng)用名稱”

org_admin開發(fā)者在環(huán)信開發(fā)者管理后臺注冊時填寫的“用戶名”敞临。企業(yè)管理員擁有對該企業(yè)賬號下所有資源的操作權(quán)限

AppKey:一個APP的唯一標(biāo)識抗果,格式是${org_name}#${app_name}

2.環(huán)信ID與用戶名

一個用戶的環(huán)信ID和他的在APP中的用戶名并不需要一致,只需要有一個明確的對應(yīng)關(guān)系。例如暮的,用戶名是stliu@apache.org漩勤,當(dāng)這個用戶登錄到APP的時候感挥,可以登錄成功之后,再登錄環(huán)信的服務(wù)器越败,所以這時候触幼,只需要能夠從stliu@apache.org推導(dǎo)出這個用戶的環(huán)信ID即可

3.token(由后臺服務(wù)器來做)

環(huán)信提供的REST API需要權(quán)限才能訪問,權(quán)限通過發(fā)送HTTP請求時攜帶token來體現(xiàn)

獲取APP管理員Token

使用APP的client_id和client_secret獲取授權(quán)管理員token

client_id/client_secret:在環(huán)信官網(wǎng)注冊一個應(yīng)用時生成的

后臺通過這兩個參數(shù)獲取到token值

二.簡介:

用戶和好友體系

1.用戶體系集成(也就是說添加.修改.刪除用戶)

環(huán)信和用戶體系的集成主要發(fā)生在2個地方究飞,服務(wù)器端集成和客戶端集成置谦。

1.1服務(wù)器端集成需要做的內(nèi)容

1.1.1.如何創(chuàng)建環(huán)信賬號

環(huán)信只是即時通訊的消息通道.不包含用戶的私人信息

要使用環(huán)信,只需要為每一個APP用戶創(chuàng)建一個環(huán)信賬號(就是所謂的環(huán)信id)亿傅。創(chuàng)建環(huán)信賬號僅需要以下信息:

username: "jliu",?//username

password:"123456" //密碼媒峡。

這兩個參數(shù)通常是用戶的userID和用戶的app密碼加過密,然后在通過hash轉(zhuǎn)碼之后的參數(shù),防止第三方(環(huán)信)泄密

1.1.2.APP創(chuàng)建新用戶時創(chuàng)建環(huán)信賬號

每次當(dāng)APP客戶端調(diào)用APP自己的服務(wù)器后臺創(chuàng)建新用戶時,(這個過程最好在服務(wù)器端完成)也在環(huán)信上為該APP用戶創(chuàng)建一個環(huán)信賬號(環(huán)信id)

1.1.3.APP刪除用戶時刪除環(huán)信賬號

每次當(dāng)APP客戶端調(diào)用APP自己的服務(wù)器后臺刪除新用戶時袱蜡,(這個過程最好在服務(wù)器端完成)也在環(huán)信上將該APP用戶對應(yīng)的環(huán)信賬號刪除丝蹭。

1.1.4.APP修改用戶密碼時更新環(huán)信賬號的密碼

每次當(dāng)APP用戶的密碼被修改時慢宗,(這個過程最好在服務(wù)器端完成)也要更新該APP用戶對應(yīng)的環(huán)信賬號的密碼坪蚁。

1.2客戶端要做的內(nèi)容:

1.2.1客戶端登錄集成

APP客戶端在登錄自己的APP服務(wù)器后臺成功后,需要調(diào)用環(huán)信客戶端SDK的登錄方法镜沽。

1.2.2客戶端退出登錄集成

APP客戶端在退出登錄自己的APP服務(wù)器后臺成功后敏晤,需要調(diào)用環(huán)信客戶端SDK的退出登錄方法

2.好友體系的集成(也就是說集成好友列表,用于實現(xiàn)好友之間限制或其他權(quán)限)

好友體系,是指誰是誰的好友的關(guān)系體系缅茉。環(huán)信提供好友體系嘴脾,但不是必須使用的,僅在需要控制消息發(fā)送權(quán)限時才啟動蔬墩。

比如:一個交友類的APP就必須要控制只有我的好友才能給我發(fā)消息译打,不是我的好友的人需要向我發(fā)送加好友邀請,我批準(zhǔn)后才能給我發(fā)消息拇颅。這種情況下奏司,就需要啟用環(huán)信提供的好友體系。

2.1服務(wù)器端要做的內(nèi)容

2.1,1將已上線的APP的現(xiàn)有用戶的好友體系導(dǎo)入到環(huán)信

2.1.2APP用戶好友列表更新時也同步更新環(huán)信賬號的好友體系

每次當(dāng)APP服務(wù)器后臺的用戶的好友列表發(fā)生變化時樟插,也在環(huán)信上更新該APP用戶的好友體系

2.1.3.打開或關(guān)閉發(fā)送消息權(quán)限控制

是否在環(huán)信中建立好友體系韵洋,是否開啟或關(guān)閉發(fā)送消息的權(quán)限控制,是由APP用戶自己決定的

2.2.客戶端集成

2.2.1獲取好友列表黄锤,監(jiān)聽好友列表

2.2.2根據(jù)賬號(查找搪缨、添加、刪除鸵熟、黑名單)

三.通信過程及聊天記錄保存

1.環(huán)信通信的過程

1.1.在線狀態(tài):客戶端A發(fā)送消息到環(huán)信服務(wù)器副编,環(huán)信服務(wù)器推送消息到客戶端B。

1.2.離線狀態(tài):客戶端A發(fā)送消息到環(huán)信服務(wù)器流强,環(huán)信服務(wù)器檢測到客戶端B不在線齿桃,會添加到離線緩存隊列中惑惶,當(dāng)客戶端B登錄后服務(wù)器會把離線消息推送給客戶端B。

2.環(huán)信聊天記錄存儲

2.1.客戶端A發(fā)送消息到環(huán)信服務(wù)器的同時短纵,SDK會保存這條消息到本地數(shù)據(jù)庫(SDK內(nèi)部創(chuàng)建數(shù)據(jù)庫带污,不允許直接操作,但可以查看,具體步驟看視頻),環(huán)信服務(wù)器在推送消息到客戶端B的同時也會在服務(wù)器記錄下來(消息歷史記錄免費存儲3天)香到,客戶端B收到消息后鱼冀,SDK會將這條消息存儲到本地數(shù)據(jù)庫。

2.2.注:客戶端并未提供去環(huán)信服務(wù)器獲取聊天記錄的接口(都是在本地數(shù)據(jù)庫中獲取)悠就,所以千绪,如果換了設(shè)備或者清空了數(shù)據(jù),聊天記錄都不會存在梗脾,如果有需求要從服務(wù)器拉取聊天記錄荸型,可以在自己服務(wù)器處理。

2.3.獲取聊天記錄常用代碼

//獲取會話中的全部聊天記錄炸茧。

NSArray *messages = [conversationloadAllMessages];

//根據(jù)messageid獲取消息

NSArray *messages = [conversationloadMessagesWithIds:@[@"msgid1",@"msgid2",@"msgid3"]];

//根據(jù)messageid獲取消息

EMMessage *msg = [conversationloadMessageWithId:@"msgid1"];

//根據(jù)時間戳讀取指定條數(shù)的消息(獲取當(dāng)前時間的20條消息)

longlongtimestamp = [[NSDate date] timeIntervalSince1970] * 1000 + 1;

NSArray * messages = [conversationloadNumbersOfMessages:20 before:timestamp];

四.后臺操作

注意:以下很多雖然請求參數(shù)一樣,但他們的請求方式/url路徑,都是不一樣的

1.后臺注冊IM用戶(由后臺服務(wù)器來做)

注冊IM用戶(單個/批量)

請求參數(shù):username和password是必須的瑞妇,nickname是可選的,這個nickname用于iOS推送

分兩種模式:開放注冊和授權(quán)注冊梭冠。

開放注冊:請求頭中不加token辕狰;(只用于單個注冊)

授權(quán)注冊:請求頭中必須加token。(推薦使用)

獲取IM用戶

單個刪除參數(shù):token值

批量:token值/獲取個數(shù)

刪除IM用戶

單個參數(shù):token值

批量:token值/獲取個數(shù)

重置密碼

參數(shù):token/新的密碼

修改用戶昵稱

參數(shù):新昵稱/token值

2.好友與黑名單

二者

{owner_username}是要添加好友的用戶名控漠,

{friend_username}是被添加的用戶名,

好友必須是和自己在一個APP下的IM用戶

給IM用戶添加刪除好友

二者都放在url中

參數(shù):token值

查看好友/獲取IM用戶的黑名單

前者放在url中

參數(shù):token值

往IM用戶的黑名單中加人

前者放在url中

參數(shù):token值/需要加入到黑名單中的用戶名

從IM用戶的黑名單中減人

url中:owner_username/blocked_username

參數(shù):token值

3.在線與離線

查看用戶在線狀態(tài)/查詢離線消息數(shù)

參數(shù):token值

查詢某條離線消息狀態(tài)

url中添加一個消息id ;msg_id

參數(shù):token值

賬號禁用與解禁/強制用戶下線

參數(shù):token值

4.獲取聊天記錄/文件上傳下載/發(fā)送消息/群組管理/聊天室管理:

只是url中拼接的路勁不同

參數(shù):token值

環(huán)信客戶端操作

參考官方文檔主要有:

iOS客戶端集成

常見集成方案

iOS API常見錯誤碼

.集成iOS SDK前的準(zhǔn)備工作

1.注冊環(huán)信開發(fā)者賬號并創(chuàng)建后臺應(yīng)用(略)

2.制作并上傳推送證書(略)

如果不需要實現(xiàn)離線推送

功能蔓倍,請忽略這步

五.集成iOS SDK

1.iOS SDK

SDK:完整的IM功能,實現(xiàn)了不同類型消息的收發(fā)盐捷、會話管理偶翅、群組、好友碉渡、聊天室等功能(就是提供了很多牛逼的方法)

EaseUI:是一組IM相關(guān)的UI控件聚谁,旨在幫助開發(fā)者快速集成環(huán)信SDK。

我們可以直接用demo集成,也可以只用SDK其它的自己寫

2.SDK常用類

EMClient:是SDK的入口爆价,主要完成登錄垦巴、退出、連接管理等功能铭段。通過該類可以獲取到下面四個類骤宣。

EMChatManager:管理消息的收發(fā),完成會話管理等功能序愚。

EMContactManager:負責(zé)好友的添加刪除憔披,黑名單的管理。

EMGroupManager:負責(zé)群組的管理,創(chuàng)建芬膝、刪除群組望门,管理群組成員等功能。

EMChatroomManager:負責(zé)聊天室的管理锰霜。

3.集成步驟

a.官網(wǎng)下載SDK

b.SDK目錄講解:

環(huán)信iOS

HyphenateSDK開發(fā)使用(不包含實時通話功能)

環(huán)信iOS

HyphenateFullSDK開發(fā)使用(包含實時通話功能:比如打電話/對視頻,基本上不用吧)

環(huán)信iOS doc SDK相關(guān)API文檔

環(huán)信iOS

ChatUIDemo3.0工程源碼(官方寫的demo)

環(huán)信iOS EaseUI工程源碼

環(huán)信iOS

chatdemo-ui-3.x.x.ipa打包的ipa

注意:

iOS HyphenateSDK/HyphenateFullSDK中有兩個子文件夾:include筹误、lib。請不要擅自修改這些文件夾的任何東西

include包含SDK的頭文件,每個類的具體使用轉(zhuǎn)到Apple Docs

c.用到的第三方庫

EaseUI中用到的第三方庫:

MWPhotoBrowser:圖片處理庫癣缅,瀏覽顯示

MJRefresh:用于頁面刷新

MBProgressHUD:用于提示加載刷新

ibopencore-amrnb.a,libopencore-amrwb.a:用于amr與wav之間的轉(zhuǎn)換

Demo中用到的第三方庫:

Parse.framework厨剪、Bolts.framework:

Demo中的用戶信息存儲在Parse,這兩個庫是Parse所需要的庫友存,開發(fā)者如果沒用Parse存儲祷膳,不要復(fù)制到自己項目中

libMobClickLibrary.a:友盟相關(guān)的庫,用于環(huán)信Demo基本信息的統(tǒng)計屡立,開發(fā)者不用或者已有別的版本的庫不要復(fù)制到自己項目

d.導(dǎo)入SDK

(手動操作記筆記)

將下載好的SDK文件夾(HyphenateSDK)拖入到項目中直晨,并勾選上Destination。

向Build Phases→Link Binary

With Libraries中添加依賴庫膨俐。

SDK依賴庫有:

?CoreMedia.framework

?AudioToolbox.framework

?AVFoundation.framework

?MobileCoreServices.framework

?ImageIO.framework

?libc++.dylib

?libz.dylib

?libstdc++.6.0.9.dylib

?libsqlite3.dylib

若拖入HyphenateFullSDK時導(dǎo)入框架:

?libiconv.dylib

(如果使用的是xcode7勇皇,后綴為tbd。)

SDK不支持bitcode吟策,向Build

Settings→Linking→Enable Bitcode中設(shè)置NO儒士。

編譯即可

以上是介紹關(guān)于環(huán)信的一些知識和導(dǎo)入項目注意事項之類,具體操作請關(guān)注環(huán)信開發(fā)(二)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末的止,一起剝皮案震驚了整個濱河市檩坚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诅福,老刑警劉巖匾委,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氓润,居然都是意外死亡赂乐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門咖气,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挨措,“玉大人,你說我怎么就攤上這事崩溪∏骋郏” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵伶唯,是天一觀的道長觉既。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么瞪讼? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任钧椰,我火速辦了婚禮,結(jié)果婚禮上符欠,老公的妹妹穿的比我還像新娘嫡霞。我一直安慰自己,他們只是感情好希柿,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布秒际。 她就那樣靜靜地躺著,像睡著了一般狡汉。 火紅的嫁衣襯著肌膚如雪娄徊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天盾戴,我揣著相機與錄音寄锐,去河邊找鬼。 笑死尖啡,一個胖子當(dāng)著我的面吹牛橄仆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衅斩,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盆顾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了畏梆?” 一聲冷哼從身側(cè)響起您宪,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奠涌,沒想到半個月后宪巨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡溜畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年捏卓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慈格。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡怠晴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浴捆,到底是詐尸還是另有隱情蒜田,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布汤功,位于F島的核電站物邑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜色解,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一茂嗓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧科阎,春花似錦述吸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至错英,卻和暖如春入撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椭岩。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工茅逮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人判哥。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓献雅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親塌计。 傳聞我的和親對象是個殘疾皇子挺身,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,786評論 0 15
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,304評論 25 707
  • 六.集成SDK基礎(chǔ)功能 (仔細研習(xí),結(jié)合實際操作) 由于環(huán)信官方文檔比較詳細,因此,根據(jù)項目需求,把用到的方法記錄...
    夜空已沉寂閱讀 2,151評論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)锌仅,斷路器章钾,智...
    卡卡羅2017閱讀 134,707評論 18 139
  • 2017/03/13.今天和我小姨在惠州與深圳之間奔波了一天,為了房子按揭的事情技扼。我們都是活在大城市的小人物伍玖,有個...
    一只枇杷仙閱讀 109評論 0 0