iMessage 是怎麼做到顯示「已讀」功能的?


你點開後或桌面版獲得焦點後軟體發送一個信息給蘋果伺服器,這原理一點也不難想吧。。。。


問題為何修改了?不是問普通簡訊能不能做到「已讀」提示嗎?
imessage和簡訊不一樣的,你把它想像成qq好了,走的是互聯網,tcp/ip協議,要提示已讀,閱讀方給發送方發個消息即可,這個消息是互聯網傳輸的,很靈活,關鍵是走互聯網發消息不要錢啊
簡訊不同,不走互聯網的,沒有那麼靈活,如果最初的簡訊協議沒有確定閱讀回執的規範,後續想增加很困難,因為以前的手機不兼容

其實,imessage和簡訊做閱讀回執的區別如下
1)imessage走互聯網,免費;簡訊收費
2)imessage本質是個移動終端上的app,蘋果說了算,他想加什麼功能都可以,影響不大;簡訊不同,全球那麼多手機用的是一套協議,不可以隨意增加功能,不僅是老式手機不兼容,運營商要支持新功能的投入也是天文數字
3)隱私問題,imessage有點類似qq,本質還是熟人間的社交工具;簡訊不同,我可以給任意手機號送簡訊,你還拒絕不了,這種情況下,我是不願意讓陌生人知道我讀了沒有或者我什麼時候讀的

下面是原始的回答
--------------------------------------------------
是想要一個閱讀回執吧?無論是傳統的簡訊還是imessage,肯定需要接收方手機來給出來的

具體到簡訊的閱讀回執,其實運營商只知道簡訊是否送達,並且中國移動有這個服務,開通此服務以後,簡訊送達中國移動會給你發一個簡訊通知

但是簡訊有無閱讀,運營商是不知道的,除非接收方發送回執,目前運營商沒有開通此類服務,其實要做閱讀回執很簡單,你閱讀以後,手機自動發送一個回執,但只能是走簡訊的方式發送回執,會產生費用

比如你收到一個簡訊,你閱讀以後,你得告訴運營商,通過什麼手段呢?你給運營商發一條簡訊唄,這條簡訊要收費,你能願意?


移動都支持十幾年了


在信息設置發送已讀回執之後,只要打開點開簡訊,應該就會給蘋果伺服器發送已讀回執,然後傳遞到對方手機。要注意的是,如果打開跟對方聊天界面,如果對方發送新消息,此時,手機屏幕沒有點擊,或者mac端iMessage沒有顯示在最前,或者顯示在最前,但是沒有任何觸發,此時是沒有已讀回執傳送的。一旦點擊或者開始輸入會立馬傳送已讀回執。


其實這功能挺不好的,不像微信,看到了還可以騙別人說看到晚了


補充樓上 @張彥 一點。
首先運營商簡訊沒有做已讀回執,應該不是由於回執傳遞方式的問題。如果運營商有已讀回執這個東西,傳遞它應該和傳遞送達回執並無差別。

覺得這個的主要原因應該是在於 已讀這個狀態的改變,運營商沒有辦法及時獲得。

然後iMessage的本質其實就是一個im軟體,雖然我好像沒看到我的iMessage里有readed的標識,只有看到delivered。如果要標示已讀完全是可以做到的,因為在iMessage在這個平台傳遞信息的過程中,信息的狀態都是可控可獲取的,定一個回執的協議就好了。

btw 我覺得知道已讀狀態有點侵犯隱私,還是知道deliver了就好了。


為什麼我發imassage,對方已經顯示已讀了,過會兒就會又變成已送達…然後過會兒又變成已讀…這是對方設定了嗎?還是怎麼回事?


蘋果往信息里添加一對量子糾纏粒子,對方一讀就坍縮了,你手機里那個就知道了


真心覺得簡訊的送達回執和iMessage 的送達和已讀有用。跟女朋友地球兩端,晚上她睡覺會讓她開飛行模式,然後給她發個信息。接下來自己只要看到她收到了簡訊就說明醒了,就進去隨叫隨到的等待召喚狀態。


推薦閱讀:

用HTML5開發App真的好嘛?
個人開發者的應用被同步推、PP 助手、快用蘋果助手、91 助手、iTools 之類的市場盜版了該怎麼辦?
用 OmniGraffle 來做應用 Mockup 模型的體驗如何,效率高嗎?
想迅速了解iOS上App開發的基礎知識,最快方法是什麼?找For Dummies系列書籍嗎?
iOS 不支持 Flash 的真實原因是什麼?

TAG:iOS開發 | 簡訊 | iMessage |