1、推送的實現(xiàn)流程和原理:
用戶打開app之后,會將唯一標識devicesToken(APNs與設(shè)備建立長鏈接之后下發(fā)的)發(fā)送給服務(wù)器,當有推送消息時,服務(wù)器將devicesToken和要推送的內(nèi)容發(fā)送給APNs,蘋果APNs會和設(shè)備進行長鏈接,將內(nèi)容推送給設(shè)備,設(shè)備根據(jù)標識,找到要推送的app,顯示推送內(nèi)容。
2、iOS7和iOS8推送不同的地方:
第一點:iOS8之后初始化遠程推送的接口改變,需要生成UIUserNotificationSetting,獲取用戶權(quán)限之后才能注冊遠程推送,而且可以引導用戶到開啟遠程推送的頁面,重新開啟推送權(quán)限。
第二點:發(fā)送消息內(nèi)容長度限制,iOS7是256字節(jié),iOS8是2kb,iOS9是4kb,可以看出蘋果在推送方面正在一步步做改進。
第三點:iOS8之后可以給推送添加action,下拉推送消息,可以選擇按鈕,然后進行不同的操作。
第四點:iOS8之后對voip推送的改進,為了不一直喚醒app增加耗電,蘋果給voip的推送單獨開了一個通道,和遠程推送并行的通道,進行voip推送,收到voip推送之后,開啟一個本地推送。
3、本地推送在一些app中也很重要,例如寫日記的場景,可以在app后臺運行特定時間后,給app發(fā)送一個本地推送,增加app的活躍度。第二個需要進行本地推送的時機是,app剛剛進入到后臺,這時候可以給用戶發(fā)送本地推送,iOS7之前可以后臺運行10分鐘,iOS8之后減少到了3分鐘,而且需要開啟后臺任務(wù)。
4、靜默推送,iOS7的時候有了靜默推送,是遠程推送的一種,靜默推送沒有聲音,相當于是一個后臺任務(wù),來喚醒app30s,局限性是,當用戶把app切換到后臺,并將app殺死,這時候就會收不到靜默推送。
靜默推送的運用場景,當有新的音樂需要推送的時候,就會發(fā)送一個靜默推送喚醒app,這時候就可以下載該音樂,然后才會給用戶發(fā)送一個遠程推送,用戶打開app,音樂已經(jīng)下載好了,就可以直接聽了。