iOS8本地推送
- 在IOS8下沒有註冊,所以需要額外新增對IOS8的註冊方法
第一步:註冊本地通知
// 設定本地通知
+ (void)registerLocalNotification:(NSInteger)alertTime {
UILocalNotification *notification = [[UILocalNotification alloc] init];
// 設定觸發通知的時間
NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];
NSLog(@"fireDate=%@",fireDate);
notification.fireDate = fireDate;
// 時區
notification.timeZone = [NSTimeZone defaultTimeZone];
// 設定重複的間隔
notification.repeatInterval = kCFCalendarUnitSecond;
// 通知內容
notification.alertBody = @"該起床了...";
notification.applicationIconBadgeNumber = 1;
// 通知被觸發時播放的聲音
notification.soundName = UILocalNotificationDefaultSoundName;
// 通知引數
NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"開始學習iOS開發了" forKey:@"key"];
notification.userInfo = userDict;
// ios8後,需要新增這個註冊,才能得到授權
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type
categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
// 通知重複提示的單位,可以是天、周、月
notification.repeatInterval = NSCalendarUnitDay;
} else {
// 通知重複提示的單位,可以是天、周、月
notification.repeatInterval = NSDayCalendarUnit;
}
// 執行通知註冊
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
第二步:處理通知,這個是在appdelegate中的代理 方法回撥
// 本地通知回撥函式,當應用程式在前臺時呼叫
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
NSLog(@"noti:%@",notification);
// 這裡真實需要處理互動的地方
// 獲取通知所帶的資料
NSString *notMess = [notification.userInfo objectForKey:@"key"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"本地通知(前臺)"
message:notMess
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
// 更新顯示的徽章個數
NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
badge--;
badge = badge >= 0 ? badge : 0;
[UIApplication sharedApplication].applicationIconBadgeNumber = badge;
// 在不需要再推送時,可以取消推送
[HomeViewController cancelLocalNotificationWithKey:@"key"];
}
第三步:在需要的時候取消某個推送
// 取消某個本地推送通知
+ (void)cancelLocalNotificationWithKey:(NSString *)key {
// 獲取所有本地通知陣列
NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;
for (UILocalNotification *notification in localNotifications) {
NSDictionary *userInfo = notification.userInfo;
if (userInfo) {
// 根據設定通知引數時指定的key來獲取通知引數
NSString *info = userInfo[key];
// 如果找到需要取消的通知,則取消
if (info != nil) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
break;
}
}
}
}
示例圖:
相關文章
- iOS推送之本地推送iOS
- iOS 本地推送iOS
- iOS本地通知(推送)iOS
- iOS推送——本地推送與遠端推送詳解(一圖看懂)iOS
- ios推送:本地通知UILocalNotificationiOSUI
- 將本地nuget包推送到Nexus
- 將本地 Docker 映象推送到阿里雲Docker阿里
- gradle 推送jar檔案到本地倉庫GradleJAR
- Git 本地推送遠端失敗 non-fast-forwardGitASTForward
- Git回滾本地已提交未推送的程式碼Git
- 本地倉庫推送到遠端倉庫的git操作Git
- Maven推送本地jar包到遠端私有倉庫配置MavenJAR
- 將本地專案推送到遠端git新倉庫Git
- ios8系統定位問題iOS
- iOS8新特性-UIAlertControlleriOSUIController
- iOS8 之 PrefixHeader.pchiOSHeader
- iOS8相機授權判斷iOS
- git本地分支對映遠端分支並推送相應程式碼Git
- iOS8 自定義鈴聲 mp3iOS
- IOS8模糊毛玻璃的效果UIVisualEffectViewiOSUIView
- IOS學習 IOS8的UISearchBar對應iOSUI
- iOS8中UIAlertView和UIActionSheet河裡去了?iOSUIView
- WebGL 3D on iOS8 正式版Web3DiOS
- 在本地用命令列建立一個git倉庫,並推送到遠端命令列Git
- git本地分支與遠端分支名稱不相同,推送到遠端Git
- iOS:iOS8開發 深入理解autolayout(3)iOS
- iOS專案開發實戰——實現蘋果本地訊息通知推送服務iOS蘋果
- iOS8 Framework使用載入xib及圖片iOSFramework
- WebGL on iOS8 終於等到了這一天WebiOS
- iOS推送之遠端推送iOS
- Ios8之後, 定位的delegate不能觸發的問題iOS
- iOS 推送通知及推送擴充套件iOS套件
- Git 2.4 — 原子推送、推送釋出等Git
- HTTP 推送HTTP
- wx推送
- 終極指南:如何為iOS8應用製作預覽視訊iOS
- IOS 推送訊息 php做推送服務端iOSPHP服務端
- 遠端推送