1、引言

IM應用的初學者們,在補全了各種基礎技術知識後(如果您仍不具備這些知識,建議馬上閱讀《新手入門一篇就夠:從零開發移動端IM》),在動手編碼實踐時,很多時候糾結的並不是功能該如何實現,而是這個功能該實現成什麼樣(沒有經驗,我特瑪能找誰問問?)。

比如,最常見的糾結有以下這些:

1)離線聊天訊息該儲存多久?

2)好友請求應該儲存多久?

3)短影片訊息中的影片時長設為多大合適?

4)圖片、短影片、語音這些多媒體訊息中,未讀的檔案資料儲存多久?

5)群管理的邏輯該怎麼弄?參考微信?還是參考QQ?(關鍵是參考資料哪裡有?)

6)朋友圈限制最多發幾張照片合適?

。。。 。。。

嗯,這些問題,老闆認為並不是問題,因為可以“參考微信”啊!

然而,微信又不會親口說出來它的這些規則到底是多少?難不成要一個一個去試?那太扯了!

本文將根據微信官方目前已公開的資料,將它的一些常用功能引數和邏輯規則資料進行了彙總整理,希望能助力你的IM開發!

學習交流:

- 即時通訊/推送技術開發交流5群:215477170[推薦]

- 移動端IM開發入門文章:《新手入門一篇就夠:從零開發移動端IM》

本文已同步釋出於“即時通訊技術圈”公眾號,歡迎關注:

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

▲ 本文在公眾號上的連結是:

https://

mp。weixin。qq。com/s/F-pV

E9vN21h0Vm8LwnYplg

2、資料來源

本文中整理的所有內容均來自微信官方知識庫,如果存在不全或不準確的情況,請在評論中回覆,我會逐條核實並修訂。

* 特別申明:

本文內容僅供研究和學習使用,請勿用作其它用途。如有不妥之處,請指出,我會及時處理。

3、閱讀物件

本文適合作為新老IM開發者的備查資料。本文不適合不懂技術的普通使用者閱讀,因為所有內容都儘量以技術人員的視解整理和表述。

移動端IM產品中,微信是標杆,也是事實的使用者體驗標準。所以,無論是被老闆或產品經理懟,直接說“微信也這樣”,能省去很多口水仗(經驗啊)。這也是整理本文的初衷,以及價值所在。

4、相關資源

《微信本地資料庫破解版(含iOS、Android),僅供學習研究 [附件下載]》(* 推薦研究)

《仿微信的IM聊天時間顯示格式(含iOS/Android/Web實現)[圖文+原始碼]》

5、微信的好友關係規則彙總

5.1 好友驗證請求有效期限

有效期限為 3 天。

* 補充規則:

微信的好友驗證請求只儲存在手機本地,當解除安裝重灌後,好友請求會消失且無法找回。

5.2 通訊錄分組/好友排序

微信通訊錄分組、好友排序,是根據微信通訊錄朋友暱稱的首字母(或首個漢字拼音首字母)由A-Z排序。

* 補充規則:

如果好暱稱是特殊符號、數字或Emoji表情(比如愛心、氣球等),將會歸到#類中。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

5.3 好友驗證規則

1)當開啟“加我為朋友時需要驗證”後,需你同意接受請求後,才能成為好友;

2)未開啟“加我為朋友時需要驗證”時,任何人都能新增你為好友(無需你確認)。

* 補充規則:

如果不想被他人新增好友時搜尋到,微信中可以設定關閉“微訊號/手機號/QQ號”等搜尋方式。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

5.4 微信有4種新增好友方式

1)搜尋加好友:

輸入對方的微訊號/QQ號/手機號搜尋新增即可,但不支援搜尋暱稱。

* 補充規則:

如果對方將關閉了“透過QQ/手機號/微訊號搜尋到我”,則沒有辦法透過此種方法新增好友。

2)雷達加朋友:

當被新增者

物理距離

很近時,一起按住手機,就可以新增對方為朋友。

3)掃二維碼加朋友:

掃描對方的二維碼名片,就可以新增對方為朋友。

4)手機聯絡人:

繫結手機聯絡人的微信帳號,可以檢視到手機通訊錄聯絡人已開通了微信的朋友,並直接新增對方為微信好友。

5.5 好友人數上限

微信最多可以新增 5000 個好友。

5.6 通訊錄黑名單功能邏輯

將對方加入黑名單後,與對方的關係邏輯如下:

1)在自己的

會話列表

不再顯示與其聊天記錄,解除黑名單後會重新出現在會話列表中;

2)在對方的通訊錄好友列表中仍然會顯示;

3)將不再接收到對方的訊息;

4)對方無法給你發訊息,會提示“對方拒絕接收您的訊息”,自己可以給對方正常傳送訊息;

5)互相無法檢視更新後的頭像、個性簽名;

6)對方將無法檢視你的微信個人相簿和對照片進行評論;

7)互相看不到朋友圈更新,拉黑之前在朋友圈分享的照片也不在對方朋友圈展示。

5.7 當被對方刪除或“拉黑”後的聊天效果

當好友將你刪除或加入黑名單後,你給他發訊息時,微信將出現以下提示。

對方將我加入黑名單後,我發訊息時的微信提示:

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

對方把我刪除後,我發訊息時的微信提示:

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

6、微信的群聊規則彙總

6.1 微信群的功能定位

微信群相當於QQ中的討論組,所以沒有QQ裡的群號碼這種東西。

6.2 群主規則

群的建立者預設是群主。

* 補充規則:

當建立者退出該群時,群成員列表中的第一位(也就是建群以來第2個加群的人)將自動成為新群主(好奇葩的規則!)。

另外:

當原群建立者(即原群主)再次加群時,身份將會是普通群員。

6.3 群員邀請規則

群成員可以拉其他人加入群,群主不能取消普通群員的這個能力。

* 補充規則:

群主可以設定邀請需確認,即需群主確認後才可以讓被邀請的好友加到群內。

6.4 群名稱規則

每個人(不只是群主)都可以修改群名稱。

* 補充規則:

當群超過 100 人時,只有群主可以修改群名稱。

6.5 群公告規則

只有群主可編輯群公告。

* 補充規則:

群公告字數限制為最大 2000 個字(即4000位元組)。

6.6 群儲存規則

微信群需要手動新增到通訊錄才會永久儲存,否則它只會儲存在本地,一旦你解除安裝APP後,它就會消失。除非有群內成員傳送訊息,你才能再次看到,除次之外,你沒有別的方法可以找回它。

6.7 群人數限制

微信群最大上限為 500 人。而且,100 人以上的微信群只有已透過實名驗證的微信使用者才能加入。

6.8 加群驗證規則

1)當群人數小於40人時,好友可以自由加入或被邀請加入;

2)當群人數超過40人時,加群邀請需要對方同意;

3)當群人數超過100人時,對方需要透過實名驗證才能接受邀請(微信中可以透過繫結銀行卡進行實名驗證)。

6.9 解散或退出群規則

微信沒有像QQ那樣的“一鍵解散群”功能。

可以透過中列方法實現解散群或退出群的能力:

1)如果是群主(建立者或群成員列表第一位),可以將群成員全部刪除;

2)如果是普通群員,可以退出群聊。

6.10 群二維碼的有效期限

微信群的二維碼有效期為 7 天(從二維碼生成時開始計算),失效後的2維碼掃描時將提示“該二維碼已過期”。

6.11 微信群訊息遮蔽規則

微信沒有遮蔽群聊訊息的功能,如果要達到這樣的效果,你只能設定不提醒新訊息或退出此群。

7、微信的朋友圈規則彙總

7.1 照片數和文字數限制

1)朋友圈照片單次最多可新增 9 張照片,上傳照片沒有檔案數量限制,也沒有儲存容量限制。

2)最多可輸入 1500 個漢字(即 3000 個位元組)。

7.2 朋友圈新動態提醒規則

如果關閉了朋友圈更新提醒,當好友有釋出新的朋友圈動態時,“發現”按鈕上將不會再出現紅點提示,否則將提示。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

7.3 朋友圈檢視許可權規則

當你未作任何許可權設定的情況下:

1)你的所有朋友可以,檢視到你在朋友圈發表的所有動態;

2)陌生人可以檢視你最近的10條動態。

發新朋友圈時,可以設定迴避的人(即設定“誰可以/不可以看”):

1)公開:所有朋友可見;

2)私密:僅自己可見;

3)部分可見:可在通訊錄中選擇哪些好友可見;

4)不給誰看:可在

通訊錄

中選擇哪些好友不可見。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

可以允許或禁止陌生人檢視:

可以允許或禁止陌生人(可能來自掃碼但未新增好友、附近的人、搖一搖、群聊時)看到10張最近發的照片。

可以設定朋友圈檢視時間範圍:

可選擇允許好友檢視朋友圈最近三天、最近半年或者全部的內容。

可以關閉朋友圈功能:

之前透過朋友圈發表的照片,可在個人相簿裡檢視。但好友仍可以看到。

7.4 朋友圈的評論可見規則

1)評論時,只會通知釋出者;

2)當評論時“@”某評論者,只會通知被回覆者;

3)評論者只能看到朋友的所有評論(當該條朋友圈的回覆者不是朋友時,是看不到他的回覆的)。

7.5 朋友圈隱私規則

1)陌生人檢視十張照片:

當禁止“允許陌生人檢視十張照片”時,陌生人將看不到你釋出的任何朋友圈動態。微信預設是允許。

2)不看他(她)的朋友圈(即遮蔽好友的朋友圈):

在您的朋友圈中不會顯示對方傳送的朋友圈訊息。

3)不讓他(她)看我的朋友圈(即內容不更新給好友):

對方檢視您的朋友圈顯示是空白的,不會顯示您傳送過的任何朋友圈訊息。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

8、微信的聊天訊息規則

8.1 聊天記錄儲存規則

1)微信聊天記錄儲存在本地手機,一旦解除安裝微信,則聊天記錄永久消失;

2)微信不支援聊天記錄漫遊功能,一旦更新手機,新手機上無法看到之前手機上的聊天記錄。

點評:

這裡有份完整的微信本地資料庫樣本,可以用來研究和學習:《微信本地資料庫破解版(含iOS、Android),僅供學習研究 [附件下載]》。

8.2 離線訊息儲存規則

1)微信伺服器只儲存 72 小時內的離線普通訊息(從對方發訊息時間開始算起),過期會被服務端清理;

2)微信伺服器只儲存 72 小時內的多媒體資料(圖片、短影片、大檔案),即使你的手機已收到該條訊息,只要未點選檢視,即被視為未讀,伺服器會在此期限後清理掉多媒體資料。

8.3 “對方正在輸入”的顯示規則

給對方傳送訊息後,對方在 10 秒內回覆才可以看到該提示。

IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總

8.4 聊天訊息撤回時限

微信的規則是可以撤回2分鐘內傳送的訊息。

8.5 訊息已讀回執規則

微信不支援已讀回執功能。微信認為已讀或未讀狀態屬於個人隱私,不希望打破這種自由溝通的感覺。

8.6 語音訊息規則

1)最長可錄製為 60 秒的語音訊息;

2)語音檔案格式為:AMR;

3)語音檔案壓縮比率:60秒語音檔案約為45KB。

點評:

如果你的IM中,語音檔案大大超過微信的這個資料量,就表達存在較大最佳化空間,可以從

取樣率

等方面進行設定。

8.7 短影片訊息規則

1)最長可錄製為 10 秒的語音訊息;

2)語音檔案格式為:MP4;

3)語音檔案壓縮比率:10秒短影片約檔案紅為1。5MB至2。0MB。

點評:

如果你的IM中,短影片檔案大大超過微信的這個資料量,就表達存在較大最佳化空間,可以從取樣率等方面進行設定。

8.8 檔案訊息規則

微信限制最大可以上傳的檔案大小為 25 MB。

8.9 聊天訊息時間顯示規則

1)當天的訊息,以每5分鐘為一個跨度顯示時間(即格式:HH:mm);

2)超過1天、小於1周的訊息,將顯示“星期+收發訊息的時間”;

3)超過1周的訊息,將顯示手機收發時間的日期(即格式:yyyy-MM-dd)。

點評:

這裡有一份仿微信的聊天介面時間顯示規則程式碼,可以下載用一用:《仿微信的IM聊天時間顯示格式(含iOS/Android/Web實現)[圖文+原始碼]》。

9、微信的其它規則

9.1 收藏功能規則

* 收藏的內容:可以收藏文字、語音、圖片、影片、地理位置等。

* 儲存的位置:收藏裡面的內容是儲存在伺服器中的,只要你不主動刪除,會一直存在。

* 單個檔案大小限制:可以收藏的單個檔案大小不能超過 25 M。

* 儲存總容量限制:微信限制收藏資料的總容量為 2 GB,當總收藏容量超出2G後,超出容量的內容,將不能再上傳。

9.2 “附近的人”功能規則

* 技術實現:當你檢視附近的人功能時,微信將透過手機GPS獲取你的位置資訊,同時會被保留一段時間。

*

位置快取

:當你使用過“附近的人”時,伺服器就會留下您的地理位置資訊一段時間,周圍的人可以再次搜到您。

9.3 “搖一搖”功能規則

當距離很近的兩個同時“搖一搖”時,不一定能搖到對方。因為微信的“搖一搖”沒有距離限制,而且是由伺服器隨機匹配。

10、電腦版微信的特殊規則

10.1 可以傳送的訊息型別

微信電腦端,可以傳送文字、預設表情、符號表情、動畫表情(

兔斯基

表情)、截圖、圖片訊息,並能同步手機上已收藏的表情併發送。

10.2 可能接收的訊息型別

可以接收文字、預設表情、emoji表情、動畫表情、圖片、檔案、語音、影片、公眾號訊息、名片型別訊息、小影片、地理位置訊息、轉賬訊息、合併轉發的聊天記錄訊息。

10.3 可以接收但不能檢視的的訊息型別

紅包訊息、AA收款訊息(收到此類訊息會提示請在手機上檢視)。

10.4 傳送檔案的大小限制

微信電腦端,上傳檔案大小最大為 100 MB,一次最多可以選擇10個檔案同時傳送。

* 補充規則:

如果傳送的是影片,則檔案大小不能超過 25 MB。

附錄:微信團隊分享技術資料彙總

《微信朋友圈千億訪問量背後的技術挑戰和實踐總結》

《微信團隊分享:微信移動端的全文檢索多音字問題解決方案》

《微信團隊分享:iOS版微信的高效能通用key-value元件技術實踐》

《微信團隊分享:iOS版微信是如何防止特殊字元導致的炸群、APP崩潰的?》

《微信團隊原創分享:iOS版微信的記憶體監控系統技術實踐》

《iOS後臺喚醒實戰:微信收款到賬語音提醒技術總結》

《騰訊技術分享:社交網路圖片的頻寬壓縮技術演進之路》

《微信團隊分享:影片影象的超解析度技術原理和應用場景》

《微信團隊分享:微信每日億次實時音影片聊天背後的技術解密》

《微信團隊分享:微信Android版小影片編碼填過的那些坑》

《微信手機端的本地資料全文檢索最佳化之路》

《企業微信客戶端中組織架構資料的同步更新方案最佳化實戰》

《微信團隊披露:微信介面卡死超級bug“15。。。。”的來龍去脈》

《月活8。89億的超級IM微信是如何進行Android端相容測試的》

《一篇文章get微信開源移動端資料庫元件WCDB的一切!》

《微信客戶端團隊負責人技術訪談:如何著手客戶端效能監控和最佳化》

《微信後臺基於時間序的海量資料冷熱分級架構設計實踐》

《微信團隊原創分享:Android版微信的臃腫之困與模組化實踐之路》

《微信後臺團隊:微信後臺非同步訊息佇列的最佳化升級實踐分享》

《微信團隊原創分享:微信客戶端SQLite資料庫損壞修復實踐》

《騰訊原創分享(一):如何大幅提升行動網路下手機QQ的圖片傳輸速度和成功率》

《騰訊原創分享(二):如何大幅壓縮行動網路下APP的流量消耗(下篇)》

《騰訊原創分享(三):如何大幅壓縮行動網路下APP的流量消耗(上篇)》

《微信Mars:微信內部正在使用的網路層封裝庫,即將開源》

《如約而至:微信自用的移動端IM網路層跨平臺元件庫Mars已正式開源》

《開源libco庫:單機千萬連線、支撐微信8億使用者的後臺框架基石 [原始碼下載]》

《微信新一代通訊安全解決方案:基於TLS1。3的MMTLS詳解》

《微信團隊原創分享:Android版微信後臺保活實戰分享(程序保活篇)》

《微信團隊原創分享:Android版微信後臺保活實戰分享(網路保活篇)》

《Android版微信從300KB到30MB的技術演進(PPT講稿) [附件下載]》

《微信團隊原創分享:Android版微信從300KB到30MB的技術演進》

《微信技術總監談架構:微信之道——大道至簡(演講全文)》

《微信技術總監談架構:微信之道——大道至簡(PPT講稿) [附件下載]》

《如何解讀《微信技術總監談架構:微信之道——大道至簡》》

《微信海量使用者背後的後臺系統儲存架構(影片+PPT) [附件下載]》

《微信非同步化改造實踐:8億月活、單機千萬連線背後的後臺解決方案》

《微信朋友圈海量技術之道PPT [附件下載]》

《微信對網路影響的技術試驗及分析(論文全文)》

《一份微信後臺技術架構的總結性筆記》

《架構之道:3個程式設計師成就微信朋友圈日均10億釋出量[有影片]》

《快速裂變:見證微信強大後臺架構從0到1的演進歷程(一)》

《快速裂變:見證微信強大後臺架構從0到1的演進歷程(二)》

《微信團隊原創分享:Android記憶體洩漏監控和最佳化技巧總結》

《全面總結iOS版微信升級iOS9遇到的各種“坑”》

《微信團隊原創資源混淆工具:讓你的APK立減1M》

《微信團隊原創Android資源混淆工具:AndResGuard [有原始碼]》

《Android版微信安裝包“減肥”實戰記錄》

《iOS版微信安裝包“減肥”實戰記錄》

《移動端IM實踐:iOS版微信介面卡頓監測方案》

《微信“紅包照片”背後的技術難題》

《移動端IM實踐:iOS版微信小影片功能技術方案實錄》

《移動端IM實踐:Android版微信如何大幅提升互動效能(一)》

《移動端IM實踐:Android版微信如何大幅提升互動效能(二)》

《移動端IM實踐:實現Android版微信的智慧心跳機制》

《移動端IM實踐:谷歌訊息推送服務(GCM)研究(來自微信)》

《移動端IM實踐:iOS版微信的多裝置字型適配方案探討》

《騰訊信鴿技術分享:百億級實時訊息推送的實戰經驗》

《IPv6技術詳解:基本概念、應用現狀、技術實踐(上篇)》

《IPv6技術詳解:基本概念、應用現狀、技術實踐(下篇)》

《微信多媒體團隊訪談:音影片開發的學習、微信的音影片技術和挑戰等》

《騰訊技術分享:微信小程式音影片技術背後的故事》

《微信多媒體團隊梁俊斌訪談:聊一聊我所瞭解的音影片技術》

《騰訊技術分享:微信小程式音影片與WebRTC互通的技術思路和實踐》

《手把手教你讀取Android版微信和手Q的聊天記錄(僅作技術研究學習)》

《微信技術分享:微信的海量IM聊天訊息序列號生成實踐(演算法原理篇)》

《微信技術分享:微信的海量IM聊天訊息序列號生成實踐(容災方案篇)》

《微信團隊分享:Kotlin漸被認可,Android版微信的技術嚐鮮之旅》

《社交軟體紅包技術解密(二):解密微信搖一搖紅包從0到1的技術演進》

《社交軟體紅包技術解密(三):微信搖一搖紅包雨背後的技術細節》

《社交軟體紅包技術解密(四):微信紅包系統是如何應對高併發的》

《社交軟體紅包技術解密(五):微信紅包系統是如何實現高可用性的》

《社交軟體紅包技術解密(六):微信紅包系統的儲存層架構演進實踐》

《QQ設計團隊分享:新版 QQ 8。0 語音訊息改版背後的功能設計思路》

《微信團隊分享:極致最佳化,iOS版微信編譯速度3倍提升的實踐總結》

《IM“掃一掃”功能很好做?看看微信“掃一掃識物”的完整技術實現》

《微信團隊分享:微信支付程式碼重構帶來的移動端軟體架構上的思考》

《IM開發寶典:史上最全,微信各種功能引數和邏輯規則資料彙總》

>> 更多同類文章 ……

(本文同步釋出於:

http://www。

52im。net/thread-3008-1-

1。html