推送通知能夠在應用沒有啓動或者在後臺運行的時候給用戶一些提示。編程
iOS開發的API中有3種不一樣的「通知」,包括:廣播通知、本地通知和推送通知(遠程通知)。服務器
一、廣播通知:是觀察者模式中的通知機制,能夠實如今相同進程中實現一個對象對多個對象的通訊,它在異步調用返回結果給多個對象時使用很是普遍。網絡
二、本地通知:使用場景是應用在後臺運行時,把一些消息提示給用戶,一個很好的例子是基於定位服務的應用,這類應用在後臺運行,到它發現到達某個特定地點時,給用戶提示。app
【注】:本地通知和推送通知均可以給用戶一些通知信息,只不過本地通知只是應用所在設備上給用戶通知,而推送通知是遠程通知,它是由遠程服務器推送過來的。不管哪種通知,通知形式是同樣的,常見的有2種形式:橫幅通知和提醒通知。橫幅通知會在屏幕的上面出現一個小橫幅條,幾秒鐘後消失;提醒通知會在屏幕中央填出一個對話框,這種提醒方式的通知必定要慎用,用戶體驗很差,而橫幅通知不會打擾用戶。這兩種形式的通知能夠在系統設置中切換,也能夠關閉通知,還能夠設置通知的提示音。當應用程序正在運行時,通知也會如期而至,可是不會提示用戶,它會保留在通知中內心(即:用手向下拉動狀態欄,能夠看到通知,這個設計是在iOS 5以後的新功能),單擊後面的關閉按鈕能夠清除通知,單擊具體的通知項目能夠進入應用。還能夠經過程序爲應用接收到通知時,在其圖標上添加標記,標記是在圖標右上角現實的紅色數字,標記中的數字能夠經過程序設置,標記的數量通常表明有多少條未讀的通知,當用戶看完這些通知後,圖標上的標記會一塊兒變化,這些是要經過編程實現的。標記能夠被關閉,能夠在設置中關閉它。異步
雖然本地通知並無任何的網絡通訊,可是它在編程方面與推送通知很是類似。spa
本地通知示例:設計
@interface YXCViewController () - (IBAction)scheduleStart:(id)sender; - (IBAction)scheduleEnd:(id)sender; - (IBAction)nowStart:(id)sender; @end
// 點擊後,10s後發送通知 - (IBAction)scheduleStart:(id)sender { UILocalNotification *localNotification = [[UILocalNotification alloc] init]; // 設置通知10s後觸發 localNotification.fireDate = [[NSDate alloc] initWithTimeIntervalSinceNow:10]; // 通知消息 localNotification.alertBody = @"計劃通知,新年好"; // 設置通知標記數 localNotification.applicationIconBadgeNumber = 1; // 設置通知出現時聲音,UILocalNotificationDefaultSoundName是指系統默認的聲音 localNotification.soundName = UILocalNotificationDefaultSoundName; // 設置動做按鈕的標題 localNotification.alertAction = @"查看詳情"; // 計劃通知,scheduleLocalNotification方法發送計劃通知 [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; } - (IBAction)scheduleEnd:(id)sender { // 結束計劃通知 // 該方法能夠取消已經開始的計劃通知 [[UIApplication sharedApplication] cancelAllLocalNotifications]; } // 點擊後,當即發送通知 - (IBAction)nowStart:(id)sender { UILocalNotification *localNotification = [[UILocalNotification alloc] init]; // 設置通知10s後觸發 localNotification.fireDate = [[NSDate alloc] initWithTimeIntervalSinceNow:10]; // 通知消息 localNotification.alertBody = @"當即通知,新年好"; // 設置通知標記數 localNotification.applicationIconBadgeNumber = 1; // 設置通知出現時聲音,UILocalNotificationDefaultSoundName是指系統默認的聲音 localNotification.soundName = UILocalNotificationDefaultSoundName; // 設置動做按鈕的標題 localNotification.alertAction = @"查看詳情"; // 計劃通知,presentLocalNotificationNow方法當即發送通知 [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification]; }