1、引言
IM應用的初學者們,在補全了各種基礎技術知識後(如果您仍不具備這些知識,建議馬上閱讀《新手入門一篇就夠:從零開發移動端IM》),在動手編碼實踐時,很多時候糾結的並不是功能該如何實現,而是這個功能該實現成什麼樣(沒有經驗,我特瑪能找誰問問?)。
比如,最常見的糾結有以下這些:
1)離線聊天訊息該儲存多久?
2)好友請求應該儲存多久?
3)短影片訊息中的影片時長設為多大合適?
4)圖片、短影片、語音這些多媒體訊息中,未讀的檔案資料儲存多久?
5)群管理的邏輯該怎麼弄?參考微信?還是參考QQ?(關鍵是參考資料哪裡有?)
6)朋友圈限制最多發幾張照片合適?
。。。 。。。
嗯,這些問題,老闆認為並不是問題,因為可以“參考微信”啊!
然而,微信又不會親口說出來它的這些規則到底是多少?難不成要一個一個去試?那太扯了!
本文將根據微信官方目前已公開的資料,將它的一些常用功能引數和邏輯規則資料進行了彙總整理,希望能助力你的IM開發!
學習交流:
- 即時通訊/推送技術開發交流5群:215477170[推薦]
- 移動端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表情(比如愛心、氣球等),將會歸到#類中。
5.3 好友驗證規則
1)當開啟“加我為朋友時需要驗證”後,需你同意接受請求後,才能成為好友;
2)未開啟“加我為朋友時需要驗證”時,任何人都能新增你為好友(無需你確認)。
* 補充規則:
如果不想被他人新增好友時搜尋到,微信中可以設定關閉“微訊號/手機號/QQ號”等搜尋方式。
5.4 微信有4種新增好友方式
1)搜尋加好友:
輸入對方的微訊號/QQ號/手機號搜尋新增即可,但不支援搜尋暱稱。
* 補充規則:
如果對方將關閉了“透過QQ/手機號/微訊號搜尋到我”,則沒有辦法透過此種方法新增好友。
2)雷達加朋友:
當被新增者
物理距離
很近時,一起按住手機,就可以新增對方為朋友。
3)掃二維碼加朋友:
掃描對方的二維碼名片,就可以新增對方為朋友。
4)手機聯絡人:
繫結手機聯絡人的微信帳號,可以檢視到手機通訊錄聯絡人已開通了微信的朋友,並直接新增對方為微信好友。
5.5 好友人數上限
微信最多可以新增 5000 個好友。
5.6 通訊錄黑名單功能邏輯
將對方加入黑名單後,與對方的關係邏輯如下:
1)在自己的
會話列表
不再顯示與其聊天記錄,解除黑名單後會重新出現在會話列表中;
2)在對方的通訊錄好友列表中仍然會顯示;
3)將不再接收到對方的訊息;
4)對方無法給你發訊息,會提示“對方拒絕接收您的訊息”,自己可以給對方正常傳送訊息;
5)互相無法檢視更新後的頭像、個性簽名;
6)對方將無法檢視你的微信個人相簿和對照片進行評論;
7)互相看不到朋友圈更新,拉黑之前在朋友圈分享的照片也不在對方朋友圈展示。
5.7 當被對方刪除或“拉黑”後的聊天效果
當好友將你刪除或加入黑名單後,你給他發訊息時,微信將出現以下提示。
對方將我加入黑名單後,我發訊息時的微信提示:
對方把我刪除後,我發訊息時的微信提示:
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 朋友圈新動態提醒規則
如果關閉了朋友圈更新提醒,當好友有釋出新的朋友圈動態時,“發現”按鈕上將不會再出現紅點提示,否則將提示。
7.3 朋友圈檢視許可權規則
當你未作任何許可權設定的情況下:
1)你的所有朋友可以,檢視到你在朋友圈發表的所有動態;
2)陌生人可以檢視你最近的10條動態。
發新朋友圈時,可以設定迴避的人(即設定“誰可以/不可以看”):
1)公開:所有朋友可見;
2)私密:僅自己可見;
3)部分可見:可在通訊錄中選擇哪些好友可見;
4)不給誰看:可在
通訊錄
中選擇哪些好友不可見。
可以允許或禁止陌生人檢視:
可以允許或禁止陌生人(可能來自掃碼但未新增好友、附近的人、搖一搖、群聊時)看到10張最近發的照片。
可以設定朋友圈檢視時間範圍:
可選擇允許好友檢視朋友圈最近三天、最近半年或者全部的內容。
可以關閉朋友圈功能:
之前透過朋友圈發表的照片,可在個人相簿裡檢視。但好友仍可以看到。
7.4 朋友圈的評論可見規則
1)評論時,只會通知釋出者;
2)當評論時“@”某評論者,只會通知被回覆者;
3)評論者只能看到朋友的所有評論(當該條朋友圈的回覆者不是朋友時,是看不到他的回覆的)。
7.5 朋友圈隱私規則
1)陌生人檢視十張照片:
當禁止“允許陌生人檢視十張照片”時,陌生人將看不到你釋出的任何朋友圈動態。微信預設是允許。
2)不看他(她)的朋友圈(即遮蔽好友的朋友圈):
在您的朋友圈中不會顯示對方傳送的朋友圈訊息。
3)不讓他(她)看我的朋友圈(即內容不更新給好友):
對方檢視您的朋友圈顯示是空白的,不會顯示您傳送過的任何朋友圈訊息。
8、微信的聊天訊息規則
8.1 聊天記錄儲存規則
1)微信聊天記錄儲存在本地手機,一旦解除安裝微信,則聊天記錄永久消失;
2)微信不支援聊天記錄漫遊功能,一旦更新手機,新手機上無法看到之前手機上的聊天記錄。
點評:
這裡有份完整的微信本地資料庫樣本,可以用來研究和學習:《微信本地資料庫破解版(含iOS、Android),僅供學習研究 [附件下載]》。
8.2 離線訊息儲存規則
1)微信伺服器只儲存 72 小時內的離線普通訊息(從對方發訊息時間開始算起),過期會被服務端清理;
2)微信伺服器只儲存 72 小時內的多媒體資料(圖片、短影片、大檔案),即使你的手機已收到該條訊息,只要未點選檢視,即被視為未讀,伺服器會在此期限後清理掉多媒體資料。
8.3 “對方正在輸入”的顯示規則
給對方傳送訊息後,對方在 10 秒內回覆才可以看到該提示。
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
)