1. 程式人生 > >基於融雲的好友關係實現

基於融雲的好友關係實現

好友關係是社交 IM 中 非常重要的一個模組, 一般意義上的理解即是成為好友關係以後。才能進行聊天溝通  但是對於融雲來說 只要你給了的 userid , 我知道了對方的 userid 就跟跟對方 發起聊天也就是發起會話。 我們不妨點選來參考一下 bob 的講解好友關係的部落格  你的 App 怎麼去定義好友關係  就看 你和你的 server 怎麼去維護這個關係 和 userid 了 下面我會通過 app 例項給大家講解一下好友關係的實現

一 : 例項展示 


下面對這個動圖做一下講解 

1 我們首先可以清晰的看到 兩個端的的使用者資訊 然後我點選了好友 目前可以清晰的看到現在好友列表裡面的是空的沒有一個好友資料

2 接下來 我點選了社交 社交裡面有個 新增好友 我輸入 shenzhen  模糊查詢出了兩個好友點選我們正在登陸的 shenzhen 新增好友 輸入我需要新增的好友資訊 shenzhen ni hao

3 這個時候重點來了 beijing 給 shenzhen 傳送好友請求同意後 我們可見 驗證訊息上面的 未讀訊息小紅點出現了 我們點選進去 看到 beijing 申請新增我為好友了

4 此時我們來看看 beijieng 端的 驗證訊息模組裡面 有什麼變化 第一次是展示的 請求新增 也就是我申請添加發出去了 等待對方響應 當 shenzhen 點選同意新增以後 此時我再 下拉重新整理了 我發出去的 申請新增狀態程式設計了 已新增 目前應該算是整個好友新增以及被同意的完整流程走完了

5 我們再來點選 好友列表  發現兩個端彼此的好友列表裡面都有了對方 其實整個好友列表 item 下面就是藏了一個 userid 點選後 會呼叫 stratPrivatechat 這就是所謂的 怎麼控制 userid 的出現來維護和實現好友關係

6 最後我們再來看會話列表 會話列表 此時也收到了服務端發來的同意對方成為好友的訊息 以及我新增對方時候的驗證訊息  

注: 好友關係是非常靈活的 建議大家不要盲目被上面的概念固定死了思維 也可以自己有更好的方式去實現, 用目前的介面實現的好友關係 沒有立即拒絕新增  只有 同意新增 和 預設不處理 如果你的產品需求有立即拒絕新增 這個需要你和你的後臺看怎麼去設計介面了

二 : 程式碼實現

相信大家看了上面的 gif 和 1-6 點的概念 腦海裡面已經比較清楚好友關係的實現了  方便大家理解得更加深刻 這邊再對程式碼 和 介面做一下梳理(介面為 Demo server的 介面) 自己的 App 應該有自己的介面

http://webim.demo.rong.io/ request_friend

請求方式:POST
引數:(Integer $id  String message)
返回成功json:

{"code":200}

{"code":304,"message":"unknow error"}

應該必須有個請求加對方為好友的介面 當然搜尋查詢使用者的介面肯定也得有 上面的程式碼片段是請求加對方為好友 我們再來看看接收到 這個好友申請的時候 服務端做了什麼事

服務端有個 好友列表  

http://webim.demo.rong.io/get_friend

請求方式:GET
引數:
返回成功json:
//status : 1 好友, 2 請求新增, 3 請求被新增, 4 請求被拒絕, 5 我被對方刪除

{
    "code": 200,
    "result": [
        {
            "id": "6754",
            "email": "[email protected]",
            "username": "[email protected]",
            "portrait": "http://www.gravatar.com/avatar/3f56d1043edd4b9657c465ac7a507067?s=82",
            "status": "1"
        },
        {
            "id": "19237",
            "email": "[email protected]",
            "username": "hahajaj",
            "portrait": "http://www.gravatar.com/avatar/6405153265d25fd4b6dccfacf0fe410c?s=82",
            "status": "1"
        }
    ]
}

這裡主要看維護的狀態的變化  當你發起 新增對方的好友申請以後 服務端 好友表的 status 這個欄位有就有值了 目前是在兩個端看到的是不一樣 請求端是 請求新增 接收到這個被新增的請求端的 狀態是 請求被新增  此時服務端還做了一件事 發了一個 新增好友的訊息(這裡的訊息為融雲內建訊息) 給被請求好友端 被請求好友端 收到這個訊息(接收訊息的監聽) 去重新整理好友列表的 status 狀態

1

 @Override
    public boolean onReceived(Message message, int i) {
        MessageContent messageContent = message.getContent();
        if (messageContent instanceof ContactNotificationMessage) {
            BroadcastManager.getInstance(mContext).sendBroadcast(FRIEND_MESSAGE);
        }

上面的程式碼片段是接收訊息的監聽 收到 服務端推來的好友訊息後 傳送一個廣播去通知重新整理好友列表 在上面的 gif 圖當中也就是點開驗證訊息後的介面

http://webim.demo.rong.io/process_request_friend

請求方式:POST
引數:(Integer $id, Boolean $is_access)
O false 不接收
1 true接收
返回成功json:

{"code":200}
{"code":111,"message":"credential is error"}
{"code":306,"message":"unknow error"}

上面的 介面也有是當我收到對方加我為好友的訊息後 在服務端儲存的狀態為 3 也就是請求被新增時候使用的 這個時候 我可以發個請求同意對方新增我為好友 去改變服務端 儲存的 status 這個時候狀態的 1 也就是你們互相為好友關係了 其實說白了也就是 我請求 和 被請求都是去即使的查詢服務端儲存的好友關係的 status 如果為 1 我們就把對方的 userid 

做成一個 好友實體 展示在好友列表了 

好了 ,相信你此時如果認真仔細的研讀了上面的 gif 圖片和 和 概念 還有介面程式碼 , 我相信好友關係的實現對你來說並不是難事了!

相關資料提供:

筆者演示 gif 的開源專案地址 : https://github.com/13120241790/Seal 歡迎 star or fork 

融雲 Demo server 地址:https://github.com/rongcloud/demo-server-php

相關推薦

基於好友關係實現

好友關係是社交 IM 中 非常重要的一個模組, 一般意義上的理解即是成為好友關係以後。才能進行聊天溝通  但是對於融雲來說 只要你給了的 userid , 我知道了對方的 userid 就跟跟對方 發起聊天也就是發起會話。 我們不妨點選來參考一下 bob 的講解好友關係的

基於api開發客服聊天功能

以下所有內容均為本人自己開發總結的經驗,如有雷同,不勝榮幸! 最近公司在做一款app,app裡面涉及到與客服聊天功能。 於是公司就接入了融雲api聊天系統。 app端(前端)聊天由專業的ios andorid開發人員完成,我負責開發後臺客服聊天即可。 目前使用的是ss

android專案中整合IM之實現訊息提供者來顯示群名

        融雲的訊息提供者可以用來設定群名,暱稱,頭像等等。由於套路都是一樣的,正好現在做到顯示群名這塊。所以就說說這個,其他訊息提供者跟這個是大同小異。 思路: 1.建立一個類,整合群組資訊

java伺服器端--好友關係

官方提供的伺服器端程式碼是用nodejs寫的(地址https://github.com/sealtalk/sealtalk-server),我需要改成用spring-boot實現。 也是費了好大的功夫。 融雲【單聊】的機制在於,只要知道 兩個人的 id,就能互相傳送訊息,不管是不是好友,所以

CEO韓迎:如何基於通訊構建企業競爭力

企業im近日,“第四屆互聯網+高峰論壇暨大數據應用峰會 CIO 時代中國行蘇州站”活動成功舉行。本次論壇由中國新一代 IT 產業推進聯盟、江蘇省企業信息化協會指導,CIO 時代學院、蘇州工業園區人工智能產業協會、江蘇省企業信息化協會蘇州代表處聯合主辦,吸引了來自全國各地的近150名行業翹楚、知名 CIO 及專

基於公有平臺實現直播、點播及小視頻功能(二)

騰訊 去除 使用 商業 png wowza 技術分享 傳感器 都是 呵呵,上一節不知道怎麽的就開始扯起了電視的發展,不過確實是勾起了我童年的回憶,這節我們正式進入正題,先說說直播。直播這個詞看到以後,讓我們想到的是什麽?其實感覺也沒什麽,因為已經很普及,是否更多的是想到了直

基於阿裏 DNS API 實現的 DDNS 工具

count 程序打包 打包 Coding 說明 str sha1 .get 右鍵 0.使用說明 AliDDNSNet 是基於 .NET Core 開發的動態 DNS 解析工具,借助於阿裏雲的 DNS API 來實現域名與動態 IP 的綁定功能。 使用時請更改同目錄下的 se

基於阿里物聯網平臺實現的簡易出入監控

本文通過一個簡單例項,主要介紹瞭如何使用樹莓派快速接入阿里雲iot platform,並實現了一個簡易的監控人員出入並拍照上送釘釘群的場景 場景 在公司大門入口處布點樹莓派和紅外感應,實現出入口人員出入時,自動拍照並上送釘釘群機器人 準備 物料準備 樹莓派 HC-SR501 人體紅外

[原創]基於OneNET實現STM32+K型熱電偶溫度HTTP實時上報

公司手頭有個專案,需要做溫控系統,溫度探頭引線長度至少10米,帶液晶顯示,還要無線上報,仔細研究下來,確定了 STM32+K型熱電偶+SIM800C方案 其實看著真的很簡單,完整做下來,真心。。。電路細節暫時不表,基本一路綠燈,軟體真心調的懷疑人生。記錄下來,以便有同仁指教 S

基於阿里物聯網平臺,我們這樣實現簡易出入監控

本文通過一個簡單例項,主要介紹瞭如何使用樹莓派快速接入阿里雲iot platform,並實現了一個簡易的監控人員出入並拍照上送釘釘群的場景 場景 在公司大門入口處布點樹莓派和紅外感應,實現出入口人員出入時,自動拍照並上送釘釘群機器人 準備 物料準備

【上傳檔案】基於阿里的視訊點播VOD、物件儲存OSS實現音視訊圖片等檔案上傳

一、效果演示 a.測試介面初始化 b.點選【上傳視訊】 c.點選【開始上傳】 d.點選【上傳音訊】選擇音訊之後點選【開始上傳】 c.點選【上傳圖片】,注意圖片上傳為單按鈕,選擇檔案之後自動完成上傳 d.點選【確定】來獲取以上幾個上傳檔案成功之後

基於nutcracker的redis叢集實現 阿里

坑還是比較多的吧 安全組必不可少開啟 22121 22122 22123 22124 22222 aliyun 搭建redis叢集https://my.oschina.net/u/3647713/blog/1982995 安裝autoconf cd /usr/local wget http://f

【原創】基於第三方的即時通訊--轉載請註明出處

一、融雲接入架構       融雲在進行接入時,具有不影響原APP架構的特性,提供有專門的sdk用於進行APP端的開發。在不需要自身伺服器的前提下,可以使APP與融雲伺服器進行自行互動。同時服務端可以與融雲服務端以API呼叫的形式進行互相互動,提供的功能有訊息推

android + 科大訊飛 實現仿微信語音訊息轉換為文字(附DEMO原始碼)

融雲SDK 使用很方便,簡單配置就可以搭建即時通訊功能,配合科大訊飛的語音識別, 即可實現微信中語音訊息轉換為文字的功能 融雲sdk的基本使用就不細說了, 網上很多資料 使用融雲sdk自帶的聊天會話介面,想要在此會話介面上增加語音訊息長按時彈出 “轉換為文

克拉克拉:基於阿里PAI實現渠道ROI投放預測系統

作者:阿里雲MVP 田亮 瞭解更多:克拉克拉(KilaKila):借力阿里雲快速構建短視訊推薦系統 業務背景克拉克拉(KilaKila)是國內專注二次元、主打年輕使用者的娛樂互動內容社群軟體。KilaKila推出互動語音直播、短視訊、對話小說等功能,滿足當下年輕使用者個性化、碎片化的文娛需求。APP產品

1月8日棲精選夜讀 | 克拉克拉:基於阿里PAI實現渠道ROI投放預測系統

基於阿里雲PAI實現渠道ROI投放預測系統,實現利用ROI指標衡量渠道質量,最終可決定當日哪些渠道可“投”,哪些渠道應該“停止”投放。 熱點熱議 克拉克拉:基於阿里雲PAI實現渠道ROI投放預測系統 作者:辰悠 發表在:阿里雲MVP 程式設計師總數3w+,阿里巴巴首度公開2018程式碼資料報告

實現基於阿里負載均衡https證書

一、https協議流程:1、生成伺服器證書:1.1、生成祕鑰檔案mykey:keytool -genkey -alias tomcat7.0 -keyalg RSA -keystore mykey -storepass Zyg15328420313 -keypass Zyg

基於滴滴搭建 S3FS 及其實現機制剖析

簡介 S3FS ( S3 FUSE ) 是基於 FUSE 的檔案系統,其使 Linux 或 Mac OS X 有能力通過 FUSE 掛載到 S3 的一個 Bucket ( 桶 ) 上,使用者可以像操作本地檔案系統一樣操作 S3 的 Bucket 。 案例使用 環境

【原創】基於第三方的即時通訊

一、融雲接入架構       融雲在進行接入時,具有不影響原APP架構的特性,提供有專門的sdk用於進行APP端的開發。在不需要自身伺服器的前提下,可以使APP與融雲伺服器進行自行互動。同時服務端可以與融雲服務端以API呼叫的形式進行互相互動,提供的功能有訊息推送,訊息路由

IM通訊行業步入快車道,或將和Twilio一樣實現資本上市

2016年,Twilio的成功上市,以及搶眼的股價表現,拓寬了全球雲通訊行業的想象空間,行業內公司估值水平也集體上調。 在中國,IM雲通訊行業也從2016年開始進入了一個“黃金髮展時期”,一批如融雲、容聯、環信等專業服務商以及阿里悟空、騰訊雲通訊、網易雲信等巨頭型企業紛紛