一、簡介
分為本地推送和遠程推送2種??梢栽趹脹]有打開甚至手機鎖屏情況下給用戶以提示。它們都需要注冊,注冊后系統會彈出提示框(如下圖)提示用戶是否同意,如果同意則正常使用;如果用戶不同意則下次打開程序也不會彈出該提示框,需要用戶到設置里面設置。一共有三種提示類型:
UIUserNotificationTypeBadge:應用圖標右上角的信息提示
UIUserNotificationTypeSound:播放提示音
UIUserNotificationTypeAlert:提示框
二、本地推送
1 注冊與處理
代碼如下:
/// 一般在在啟動時注冊通知,程序被殺死,點擊通知后調用此程序- (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;}/// 程序沒有被殺死(處于前臺或后臺),點擊通知后會調用此程序- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { // 這里添加處理代碼}
可以看到,處理代碼有兩個方法,一個是
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
另一個是
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
如果程序沒有被殺死,即處于前臺或者后臺,那么調用前者;如果程序被殺死,則調用后者。
2 發送通知
代碼如下
- (IBAction)addLocalNotification { // 1.創建一個本地通知 UILocalNotification *localNote = [[UILocalNotification alloc] init]; // 1.1.設置通知發出的時間 localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // 1.2.設置通知內容 localNote.alertBody = @"這是一個推送這是一個推送"; // 1.3.設置鎖屏時,字體下方顯示的一個文字 localNote.alertAction = @"趕緊!!!!!"; localNote.hasAction = YES; // 1.4.設置啟動圖片(通過通知打開的) localNote.alertLaunchImage = @"../Documents/IMG_0024.jpg"; // 1.5.設置通過到來的聲音 localNote.soundName = UILocalNotificationDefaultSoundName; // 1.6.設置應用圖標左上角顯示的數字 localNote.applicationIconBadgeNumber = 999; // 1.7.設置一些額外的信息 localNote.userInfo = @{@"qq" : @"704711253", @"msg" : @"success"}; // 2.執行通知 [[UIApplication sharedApplication] scheduleLocalNotification:localNote];}
效果如下:
3 取消通知
// 取消所有本地通知
[application cancelAllLocalNotifications];
三、遠程推送
與Android上我們自己實現的推送服務不一樣,Apple對設備的控制非常嚴格,消息推送的流程必須要經過APNs(Apple Push Notification service).
新聞熱點
疑難解答