1. 程式人生 > >iOS --工作之餘小總結之聊天推送(APNS)原理

iOS --工作之餘小總結之聊天推送(APNS)原理

最近有人問我關於推送的原理,正好有時間就做一下整理。
公司需要,最近用環信和BMOB伺服器寫了一個簡單的聊天Demo,其中在離線接收聊天資訊的時候,用到了蘋果的推送功能,藉此機會,我簡單說一下推送的原理。
有使用者A和使用者B兩個使用者之間通訊,其實並不是兩個使用者之間相互通訊,而是通過伺服器(這個Demo用環信伺服器)進行通訊,A
與B和伺服器進行長連結,A將傳送的內容發給B,伺服器看到B線上,就將內容傳送給B。只是都線上的情況,下面我說說離線時的情況。
首先,如果B離線了,不使用推送APNS,那B就真的收不到訊息了。當我們使用推送的時候,在A和B剛執行的時候,就會向蘋果的伺服器請求,返回來一個ToKen,作為某一個使用者的唯一標識(有幾個使用者就會返回回來不一樣的標識ToKen),而我們iOS程式設計師要做的就是將一個個的Token,給到環信的伺服器,當A發訊息到環信伺服器想給B,環信伺服器檢測不到B線上(B此時下線了),那麼環信伺服器就會將B的ToKen給到蘋果的伺服器,蘋果伺服器通過Token去喚醒(提示)B有訊息,讓B上線。
以上就是推送的過程,簡單的說,推送就是蘋果的伺服器去喚醒不線上的使用者有訊息,讓其上線。
此外,我們用到的鐳射推送,也是這個原理,某伺服器將Token給到蘋果伺服器的過程是伺服器人員的工作,而iOS要負責的就是將從蘋果請求回的Token給到某伺服器。
聊天Demo我會之後上傳到個人GitHub上。目前只有簡略版,需要可以私信我。