導(dǎo)語:

成都創(chuàng)新互聯(lián)成立于2013年,我們提供高端網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、營銷型網(wǎng)站建設(shè)、小程序制作、微信公眾號開發(fā)、seo優(yōu)化服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為成都玻璃貼膜企業(yè)提供源源不斷的流量和訂單咨詢。
由于移動設(shè)備內(nèi)存、CPU、電量的局限性,iOS 不允許 APP 的進(jìn)程常駐后臺(事實(shí)上可以申請后臺運(yùn)行一段時(shí)間,最長約 10 分鐘),這樣當(dāng)用戶主動殺掉 APP,或者 APP 進(jìn)入后臺超過約定時(shí)長時(shí),就意味著該 APP 進(jìn)程的結(jié)束。這在很大程度上保障了前臺 APP 的流暢性,也延長了手機(jī)的使用時(shí)長,獲得了較好的用戶體驗(yàn)。但是這也意味著,服務(wù)器無法主動和用戶交互(如推送實(shí)時(shí)消息等)。為了解決這個(gè)限制,蘋果推出了 APNs,允許設(shè)備和服務(wù)器分別與蘋果的推送通知服務(wù)器保持長連接狀態(tài)。
iOS 的通知分為本地通知和遠(yuǎn)程通知。本地通知是由本地應(yīng)用觸發(fā)的,一般是基于時(shí)間的一種通知形式,如鬧鐘、待辦事件等的提醒。遠(yuǎn)程通知是由開發(fā)商通過自己的服務(wù)器推送的一種通知形式,而 APNs 就是遠(yuǎn)程通知功能的核心。
關(guān)于遠(yuǎn)程推送,記住以下兩點(diǎn)就夠了:
這里就很清楚了,其實(shí) APNs 的本質(zhì)就是 服務(wù)器和客戶端之間的中介 。當(dāng)服務(wù)器需要給客戶端推送消息時(shí),先將消息發(fā)送給蘋果服務(wù)器,再由蘋果服務(wù)器找到對應(yīng)設(shè)備推送下去。
那為什么還要走中介,不直接發(fā)送呢?因?yàn)檫@樣做一個(gè)設(shè)備(即所有 APP )只需要和蘋果的服務(wù)器建立一條長連接,而不需要每個(gè) APP 都和服務(wù)器建立一條長連接。
可能有些人還是不太明白 APNs 的意義,覺得也只是將多個(gè)長連接變成了統(tǒng)一的一個(gè)長連接而已,有必要那么做嗎?
很有必要!
我們來看下 Android 的推送現(xiàn)狀就明白了。
Android 事實(shí)上也有類似于 APNs 的一套用于推送的服務(wù),簡稱 GCM,即 Google Cloud Messaging。但由于 GCM 需要谷歌服務(wù)器的支持,在國內(nèi)由于「墻」的原因基本不能使用。這下就熱鬧了,國內(nèi)出現(xiàn)了一大堆第三方推送服務(wù)商,如華為推送、小米推送、極光推送等。APP 通過集成這些推送服務(wù)來實(shí)現(xiàn)推送功能,而這些推送服務(wù)為了保持自己的長連接不被殺死,采用了各種保活、喚醒手段,這也是 Android 手機(jī)使用不流暢的真兇。之前也有看到「 工信部要求國內(nèi)安卓統(tǒng)一消息推送標(biāo)準(zhǔn) 」的新聞,工信部都這么重視,可見統(tǒng)一推送的意義非凡。
想要了解具體區(qū)別,可以參考這篇文章 「 國內(nèi) 90%以上的 iOS 開發(fā)者,對 APNs 的認(rèn)識都是錯的 」。
不言而喻,當(dāng)然是盡早升級 HTTP/2 協(xié)議了。
參考:
(完)
很多應(yīng)用都會實(shí)現(xiàn)推送功能,我們可以集成第三方框架實(shí)現(xiàn)推送功能,
比如:JPush推送:
個(gè)推:
下面來說說收到推送消息的邏輯處理
一、收到推送消息有三種情況:
1、應(yīng)用未啟動(默認(rèn)顯示在通知欄,或者鎖屏?xí)r顯示在鎖屏頁面)
2、應(yīng)用在后臺掛起(默認(rèn)顯示在通知欄,或者鎖屏?xí)r顯示在鎖屏頁面)
3、應(yīng)用在前臺(默認(rèn)不顯示)
二、點(diǎn)擊推送消息有兩種情況:1、應(yīng)用未啟動 - 啟動這個(gè)時(shí)候如論是點(diǎn)擊推送消息打開應(yīng)用還是點(diǎn)擊icon打開應(yīng)用都會調(diào)用以下方法(具體的可以根據(jù) userInfo 進(jìn)行判斷):(只有重新打開APP和后臺殺死后在打開APP才會走下面的方法)
2、應(yīng)用在后臺 - 應(yīng)用在前臺應(yīng)用在后臺掛起時(shí)點(diǎn)擊推送消息和應(yīng)用在前臺時(shí)收到推送消息,都會調(diào)用以下方法:
ios 7 以上會調(diào)用下面這個(gè)方法
ios 10 會調(diào)用 下面的方法
應(yīng)用在后臺掛起時(shí)默認(rèn)是不調(diào)用該方法的,如果你需要接收到推送消息還沒點(diǎn)擊推送就調(diào)用該方法,可以讓服務(wù)器發(fā)給APNS時(shí)在aps 字典中加入:
aps = {
content-available = 1;
}
首先根據(jù)APP的狀態(tài)進(jìn)行判斷 這里當(dāng)APP在前臺顯示的時(shí)候根據(jù)需求我們沒有消息進(jìn)行處理
第一步:發(fā)送通知
第二步:添加觀察者
第三步:進(jìn)行頁面的跳轉(zhuǎn),這地方有一個(gè)重點(diǎn)是如何獲取的當(dāng)前頁面的然后才能夠?qū)崿F(xiàn)跳轉(zhuǎn)
在此給View寫了一個(gè)分類方法
第四步:實(shí)現(xiàn)跳轉(zhuǎn)到目的controller
最近弄了下推送,在測試時(shí)遇到了些問題,在此整理匯總了些推送測試相關(guān)的方案,并添加了一些補(bǔ)充信息。下方鏈接是相關(guān)文章,感謝各位作者的分享。
debug包和build切換為release直接在手機(jī)上跑生成的device token都是開發(fā)token。release打包后注冊生成的token是生產(chǎn)的。
向證書制作者要推送證書的 p12文件。 雙擊輸入密碼。在鑰匙串中找到如下。
證書有下方密鑰,沒有的話證書不可用。
將p12上傳的三方平臺并填寫密碼即可。測試推送在這些推送平臺填寫 設(shè)備token等信息即可。
給中臺p12文件和密碼,協(xié)商好消息格式、提供對應(yīng)環(huán)境的token,由中臺觸發(fā)即可。
注意證書分為三種。測試(sanbox)、生產(chǎn)、 測試和生產(chǎn)合并。
如果發(fā)送成功,核對 token、證書、中臺鏈接蘋果服務(wù)器息的地址。是否為統(tǒng)一環(huán)境。(蘋果的推送服務(wù)器也是區(qū)分測試和生產(chǎn)的,域名不同,下方腳本中可以看到)
在Xcode11.4之后,模擬器也支持推送測試
具體格式根據(jù)你們的產(chǎn)品要求,接入極光或者個(gè)推的可以在控制臺發(fā)一條推送打印出具體格式內(nèi)容查看,將文件保存后綴為apns,待會要用到
a、查看已啟動模擬器
會看到類似下面信息,如果沒有請先啟動模擬器
b、運(yùn)行項(xiàng)目在模擬器上后執(zhí)行相應(yīng)命令simctl push device [bundle identifier] (json file | -)
示例如下
將第一步創(chuàng)建的json文件內(nèi)容稍加修改,具體就是添加了"Simulator Target Bundle": "com.app.test"你項(xiàng)目的包名
然后直接拖動文件到模擬器上,出現(xiàn)綠色?后松手,這樣也可以進(jìn)行推送測試
參考蘋果官方文檔
Sending Push Notifications Using Command-Line Tools
u;/u
1、在終端新建 shell 文件,這里命名為 push-remote-notification
2、編輯 shell 腳本,這里需要 der 和 pem 證書,如果已經(jīng)有了 p12 證書,可以通過 openssl 進(jìn)行轉(zhuǎn)換
運(yùn)行 shell 腳本
真實(shí)腳本事例:
a、p12轉(zhuǎn)der需要先轉(zhuǎn)為pem格式,再從pem轉(zhuǎn)到der格式
openssl pkcs12 -in disPush.p12 -out disPush.pem -nodes
b、pem轉(zhuǎn)der
openssl x509 -outform der -in certificate.pem -out certificate.der
Smart push
git地址:
如果報(bào)錯
SSL端點(diǎn)域名不能被設(shè)置 -25300
Keychain中不能找到證書 -25300
說明鑰匙串中沒有密鑰,要新的p12文件并雙擊
不推薦,所以不例舉,網(wǎng)站風(fēng)險(xiǎn)無法判斷。
u;/u 證書轉(zhuǎn)換
u;/u 證書轉(zhuǎn)換
u;/u 證書轉(zhuǎn)換
u;/u
u;/u
u;/u 腳本
u;/u
u;/u 腳本
u;/u 模擬器
1.APNS的推送機(jī)制
首先我們看一下蘋果官方給出的對ios推送機(jī)制的解釋。如下圖
Provider就是我們自己程序的后臺服務(wù)器,APNS是Apple Push Notification Service的縮寫,也就是蘋果的推送服務(wù)器。
上圖可以分為三個(gè)階段:
APNS推送通知的詳細(xì)工作流程
下面這張圖是說明APNS推送通知的詳細(xì)工作流程:
根據(jù)圖片我們可以概括一下:
1. 什么是遠(yuǎn)程消息推送?
3. 實(shí)現(xiàn)消息推送的步驟
總結(jié)下大致流程
1.設(shè)備打開某個(gè)App后,會生成唯一的 一個(gè)token ,并把這個(gè)token上傳給我們自己的服務(wù)器,我們的服務(wù)器有了token,就可以向我們的app推送通知了,這個(gè)是前提。但是這個(gè)通知并不能直接推送給我們的設(shè)備,而是要推送給蘋果的服務(wù)器。
2.我們的服務(wù)器會將token和推送的內(nèi)容,一起推送給蘋果的服務(wù)器。
3.蘋果服務(wù)器會根據(jù)token定位到設(shè)備,將push推送給設(shè)備。
4.設(shè)備拿到這個(gè)push,就會知道是哪個(gè)app。然后就可以將這個(gè)通知推送到具體的app。
推送的實(shí)現(xiàn)方式:?
想要收到推送消息 ,就必須要有后臺服務(wù)器(下面的1、2)往 蘋果的APNs的服務(wù)器發(fā)請求。?
1、公司自己開發(fā)后臺服務(wù)器程序?
2、 采用第三方的后臺服務(wù)程序,比如:百度云推送、極光推送、友盟推送
分享標(biāo)題:ios開發(fā)遠(yuǎn)程推送,安卓遠(yuǎn)程iOS
網(wǎng)頁路徑:http://chinadenli.net/article24/dsgjcce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供python、網(wǎng)站導(dǎo)航、軟件開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)