一、簡介
分為本地推送和遠程推送2種。可以在應(yīng)用沒有打開甚至手機鎖屏情況下給用戶以提示。它們都需要注冊,注冊后系統(tǒng)會彈出提示框(如下圖)提示用戶是否同意,如果同意則正常使用;如果用戶不同意則下次打開程序也不會彈出該提示框,需要用戶到設(shè)置里面設(shè)置。一共有三種提示類型:
UIUserNotificationTypeBadge:應(yīng)用圖標右上角的信息提示
UIUserNotificationTypeSound:播放提示音
UIUserNotificationTypeAlert:提示框

二、本地推送
1 注冊與處理
代碼如下:
/// 一般在在啟動時注冊通知,程序被殺死,點擊通知后調(diào)用此程序- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { // iOS8 UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; [application registerUserNotificationSettings:setting]; } if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { // 這里添加處理代碼 } return YES;}/// 程序沒有被殺死(處于前臺或后臺),點擊通知后會調(diào)用此程序- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { // 這里添加處理代碼}可以看到,處理代碼有兩個方法,一個是
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
另一個是
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
如果程序沒有被殺死,即處于前臺或者后臺,那么調(diào)用前者;如果程序被殺死,則調(diào)用后者。
2 發(fā)送通知
代碼如下
- (IBAction)addLocalNotification { // 1.創(chuàng)建一個本地通知 UILocalNotification *localNote = [[UILocalNotification alloc] init]; // 1.1.設(shè)置通知發(fā)出的時間 localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // 1.2.設(shè)置通知內(nèi)容 localNote.alertBody = @"這是一個推送這是一個推送"; // 1.3.設(shè)置鎖屏時,字體下方顯示的一個文字 localNote.alertAction = @"趕緊!!!!!"; localNote.hasAction = YES; // 1.4.設(shè)置啟動圖片(通過通知打開的) localNote.alertLaunchImage = @"../Documents/IMG_0024.jpg"; // 1.5.設(shè)置通過到來的聲音 localNote.soundName = UILocalNotificationDefaultSoundName; // 1.6.設(shè)置應(yīng)用圖標左上角顯示的數(shù)字 localNote.applicationIconBadgeNumber = 999; // 1.7.設(shè)置一些額外的信息 localNote.userInfo = @{@"qq" : @"704711253", @"msg" : @"success"}; // 2.執(zhí)行通知 [[UIApplication sharedApplication] scheduleLocalNotification:localNote];}效果如下:

3 取消通知
// 取消所有本地通知
[application cancelAllLocalNotifications];
三、遠程推送
與Android上我們自己實現(xiàn)的推送服務(wù)不一樣,Apple對設(shè)備的控制非常嚴格,消息推送的流程必須要經(jīng)過APNs(Apple Push Notification service).
新聞熱點
疑難解答
圖片精選