iOS遠(yuǎn)程推送的機(jī)制及流程

遠(yuǎn)程推送幾乎是有用戶系統(tǒng)的App都要做的事情,功能好用且能在App不被打開的情況下和我們的用戶交互。
先來簡單介紹遠(yuǎn)程推送:
1、由蘋果服務(wù)器推送至手機(jī),手機(jī)再傳遞給App,從而彈出提示框。
2、App在運行和不在運行都可以收到遠(yuǎn)程推送。
3、舉例:蘋果提示系統(tǒng)有新的版本可供更新。

再來簡單介紹相似的本地通知:
1、由App內(nèi)部程序代碼發(fā)出。
2、只能在App運行期間彈出本地通知的提示框。
3、舉例:鬧鐘的提醒(時鐘在系統(tǒng)中不會被殺死),存儲空間不夠的提醒。

目前大部分App的做法都是:在運行時使用本地通知提醒用戶;不在運行時使用遠(yuǎn)程推送提醒用戶。當(dāng)然了,全部用遠(yuǎn)程推送來提醒用戶也是可以的(就是這么野蠻)。

下面是遠(yuǎn)程推送的流程圖,流程總共有4步:


image.png

現(xiàn)在來一步一步分解:
1、App將手機(jī)和App的唯一標(biāo)示符(token)發(fā)送給我們自家的服務(wù)器。如果手機(jī)已經(jīng)聯(lián)網(wǎng),那么蘋果服務(wù)器和手機(jī)會一直處于長鏈接狀態(tài),遠(yuǎn)程推送必須在此狀態(tài)下才能推送到。App在手機(jī)中會生成一個唯一標(biāo)識符,用于區(qū)別不同手機(jī)和App。蘋果服務(wù)器根據(jù)此才能精準(zhǔn)推送到對應(yīng)手機(jī)上的對應(yīng)App(比如你手機(jī)上的微信)。App在用戶登錄成功時需要將唯一標(biāo)識符發(fā)送給我們的服務(wù)器。

2、我們服務(wù)器向蘋果服務(wù)器發(fā)送要推送給用戶的消息(兩服務(wù)器是長鏈接)。我們服務(wù)器根據(jù)App發(fā)來的消息判斷對應(yīng)用戶是否在線,在線則告訴App發(fā)出本地通知提醒用戶。如果用戶不在線的話,我們服務(wù)器需要將唯一標(biāo)識符、證書信息、通知信息發(fā)送至蘋果服務(wù)器。通知信息內(nèi)容可以定制,包括:標(biāo)題、內(nèi)容、角標(biāo)、聲音等等(要警告語還是短信音就看你自己了)。

3、蘋果服務(wù)器會識別證書信息,正確則會根據(jù)唯一標(biāo)識符把消息推送到對應(yīng)的手機(jī)上面。接著,蘋果服務(wù)器會把推送結(jié)果返回給我們服務(wù)器。

4、手機(jī)彈出提示框(提示框樣式不可變,但是可以設(shè)置延長提醒時間,開發(fā)者可以將對應(yīng)的音樂變長來達(dá)到顯示更久的時間,最長是30秒。)點擊提示框便會進(jìn)入對應(yīng)的App。推送信息在App打開時可以拿到,我們可以根據(jù)這些信息來進(jìn)行一些操作,比如跳轉(zhuǎn)到對應(yīng)的頁面或者開放對應(yīng)的功能等。

流程就介紹完了,有必要來說一說我們的推送證書了。每一個App可以有多份推送證書。證書代表有推送的資格,這樣才能控制推送消息不被亂發(fā)。如果我們需要其它服務(wù)器推送消息至我們App,那么我們要將P12文件提供給它們,這些服務(wù)器需要將其配置上。推送證書和其它證書一樣,一年便會過期,過期之后需要重新配置。

介紹完畢,如果大神們發(fā)現(xiàn)有什么錯誤的地方,歡迎砸磚,專業(yè)鐵頭功二十年。
ps:1、iOS的遠(yuǎn)程推送可以被用戶關(guān)閉,如果被用戶提出不能接收到遠(yuǎn)程推送,他可能是在第一次打開App時選擇了拒絕接收通知。
2、安卓的推送大致一樣,換了個老大(手機(jī)廠家)而已。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容