iOS推送通知

2022-05-28 21:15:28 字數 2215 閱讀 8856

此通知非彼通知。

nsnotification是抽象的,看不見的,但是可以監聽,屬於觀察者模式的一種設計模式。

推送通知是可見的,能用肉眼看見的,是真正的和使用者打交道的通知。

推送通知分為兩種:

(1)本地推送通知

(2)遠端推送通知

不在前台有兩種情況:一種是程式退出到後台,另一種是程式被殺死。

不管是被殺死還是在後台,都可以接受推送通知。

推送通知的多種呈現效果:一種是從螢幕上方拉出來橫幅。一種是在螢幕中間彈出uielertview。(這種少見)。一種是推送通知的時候有音效。一種是在鎖屏狀態呈現。還有一種是呈現訊息數量。還有一種是通知中心。

推送通知的使用細節:

本地推送通知:

顧名思義,就是不需要聯網就能發出推送通知(不需要伺服器的支援)

如何發出本地推送通知:

1.建立本地推送通知物件

uilocalnotification *ln = [[uilocalnotification alloc] init];

2,設定本地推送通知的屬性

(1)推送通知的觸發時間

@property (nonatomic,copy) nsdate *firedate;

(2)推送通知的具體內容

@property (nonatomic,copy) nsstring *alertbody;

推送通知的觸發時間和具體內容屬性是必須要設定的。另外,還有一些其他額外的屬性,在此不再介紹。

注意,和ios7不同的是,ios 8開始,傳送通知,需要使用者授權允許。一般都是在程式一啟動就請求使用者允許,所以在didfinishlaunch方法裡進行請求,以請求使用者允許授權?

所以,需要進行系統版本判斷

鎖屏快捷鍵:command + l

點選通知跳轉到指定介面:

(1)如果應用程式是在前台,依然會收到本地通知,但是收到通知後不應該跳轉

(2)如果應用程式在後台,收到本地通知後執行跳轉**

(3)如果應用程式被殺死,收到本地通知後不會執行上面的**方法裡的**,所以要在didfinishlaunch:withoptions方法裡進行跳轉

如果正常啟動,launchoptions為null;其他方式啟動launchoptions不為空。

遠端推送通知:

不管程式處於什麼狀態,前台、後台、關閉,只要手機處於聯網狀態,應用程式都會收到遠端推送通知。

所有的蘋果裝置在聯網的狀態下都會與蘋果的伺服器建立乙個長連線。

短連線一般是http請求

長連線一般是通過建立socket會話

長連線可以保證伺服器主動把訊息推送給客戶端。

以前短連線的情況下,短連線是客戶端主動發起建立的連線(客戶端主動請求資料),伺服器是無法把訊息主動推送給客戶端的。

當然也可以通過輪詢的方式同步訊息,每隔一定時間客戶端就和伺服器建立一次短連線。

但是相比較長連線,頻繁的建立、釋放短連線會非常消耗伺服器的效能;並且會產生訊息同步不及時的情況。

長連線的另乙個功能:

時間校正(蘋果裝置不需要更新時間)。

版本更新(系統更新版本)。

查詢我的iphone(icloud伺服器會給客戶端傳送位置請求請求客戶端的位置)。

遠端推送的原理:

客戶端和伺服器通過長連線保持通訊,實現遠端推送。具體來講:客戶端通過定期給伺服器傳送心跳包來保持長連線。如果伺服器一定時間內或者連續幾次沒有收到客戶端的心跳包,那麼伺服器就會斷開和這個客戶端的長連線。斷開的原因是服務為和客戶端的關係是一對多的,繁忙的時候併發數非常大,乙個伺服器很有可能同時和百萬個客戶端保持著長連線,如此導致伺服器的壓力非常大,為了節省伺服器的效能和記憶體開銷,所以需要斷開不必要的長連線。

通過device token,device token是裝置的udid和應用程式的bundle identifier加密而來的。可以通過udid定位到某個具體的裝置,然後通過bundle identifier定位到某個具體的應用。實現遠端通知的精準推送。

如上圖:

前期:後期:

(5)李四給張三傳送qq訊息資料,該資料報括訊息體和雙方的qq號碼等。

(6)qq伺服器根據qq號碼等資訊去資料庫查詢該號碼對應的devicetoken。

(7)qq伺服器把查詢到的devicetoken和qq訊息資料一併推送給蘋果的apns伺服器。

(8)蘋果的apns伺服器通過查詢之前註冊過的devicetoken找到張三的裝置,進而再通過devicetoken把訊息資料推送給張三的裝置上的qq應用的張三的qq賬號。

iOS 推送通知

作為提供者為程式開發和部署推送通知,必須通過ios developer program portal獲得ssl證書。每個證書限用於乙個程式,使用程式的bundle id作為標識。證書有兩種用途的 一種是針對sandbox 用於開發和測試 另外一種針對發布產品。這兩種執行環境擁有為各自指定的ip位址並...

本地通知和推送通知 iOS開發

一 通知的型別 1.橫幅 banner 橫幅通知是在ios5中出現的新特性,是顯示在螢幕頂部的橫條,幾秒鐘後會自動消失。一條橫幅通知會顯示程式的小圖示 低分屏下顯示29 29的圖示,高分屏顯示58 58的圖示 程式的名字和通知的內容。小圖示可以幫助使用者一眼就看清楚是哪乙個應用程式在提醒他們。2.提...

iOS推送通知的實現步驟

作為提供者為程式開發和部署推送通知,必須通過ios developer program portal獲得ssl證書。每個證書限用於乙個程式,使用程式的bundle id作為標識。證書有兩種用途的 一種是針對sandbox 用於開發和測試 另外一種針對發布產品。這兩種執行環境擁有為各自指定的ip位址並...