起首,我們先要明確一個概念,這裡的當地告訴是UILocalNotification類,和體系的NSNotificationCenter告訴中間是完整分歧的概念。
1、我們可以經由過程當地告訴做甚麼
告訴,現實上是由IOS體系治理的一個功效,好比某些後台運用做了某項運動須要我們處置、曾經加入的運用在某個時光提示我們喚起等等,假如注冊了告訴,體系都邑在告訴觸發時給我們發送新聞。由此,我們可以經由過程體系給我們的APP添加告訴用戶的功效,而且運用異常普遍。例如,鬧品種運用,有按時簽到類似功效的運用。上面,我們就來引見若何注冊而且設置一個當地告訴。
2、懂得UILocalNotification類
望文生義,這個類就是我們須要應用的當地告訴類,先來看它的幾個屬性:
設置體系發送告訴的時光(假如是曩昔的時光或許0,則會連忙提議告訴)
@property(nonatomic,copy) NSDate *fireDate;
設置時光的時區
@property(nonatomic,copy) NSTimeZone *timeZone;
設置周期性告訴
@property(nonatomic) NSCalendarUnit repeatInterval;
NSCalendarUnit對象是列舉,設定告訴的周期
typedef NS_OPTIONS(NSUInteger, NSCalendarUnit) { NSCalendarUnitEra = kCFCalendarUnitEra, NSCalendarUnitYear = kCFCalendarUnitYear, NSCalendarUnitMonth = kCFCalendarUnitMonth, NSCalendarUnitDay = kCFCalendarUnitDay, NSCalendarUnitHour = kCFCalendarUnitHour, NSCalendarUnitMinute = kCFCalendarUnitMinute, NSCalendarUnitSecond = kCFCalendarUnitSecond, NSCalendarUnitWeekday = kCFCalendarUnitWeekday, NSCalendarUnitWeekdayOrdinal = kCFCalendarUnitWeekdayOrdinal, }
設置周期性告訴參照的日歷表
@property(nonatomic,copy) NSCalendar *repeatCalendar;
上面這兩個函數是IOS8的新功效,在用戶出來或許分開某一區域時發送告訴
@property(nonatomic,copy) CLRegion *region;
設置區域檢測告訴能否反復(假如為YES,則沒次出來出來都邑發送,不然只發送一次)
@property(nonatomic,assign) BOOL regionTriggersOnce;
設置告訴的主體內容
@property(nonatomic,copy) NSString *alertBody;
能否隱蔽滑動啟動按鈕
@property(nonatomic) BOOL hasAction;
設置滑動翻開的提醒文字
@property(nonatomic,copy) NSString *alertAction;
設置點擊告訴後啟動的啟動圖片
@property(nonatomic,copy) NSString *alertLaunchImage;
上面這個辦法是IOS8的新辦法,是iwatch的接口,告訴的短題目
@property(nonatomic,copy) NSString *alertTitle;
收到告訴時,播放的體系音
@property(nonatomic,copy) NSString *soundName;
設置運用法式Icon頭標數字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
用戶字典,可用於傳遞告訴新聞參數
@property(nonatomic,copy) NSDictionary *userInfo;
留意:這個字符串是體系默許的提醒音
NSString *const UILocalNotificationDefaultSoundName;
3、當地告訴的設計流程
起首,想讓我們的APP完成當地告訴功效,必需獲得用戶的受權,在Appdelegate中完成以下代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. //假如曾經獲得受權,就直接添加當地告訴,不然請求訊問受權 if ([[UIApplication sharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) { [self addLocalNotification]; }else{ [[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; } return YES; }
當用戶點擊許可或許不許可後,會履行以下署理辦法,我們把處置邏輯在個中完成
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{ if (notificationSettings.types!=UIUserNotificationTypeNone) { [self addLocalNotification]; } }
添加當地告訴的辦法:
-(void)addLocalNotification{ //界說當地告訴對象 UILocalNotification *notification=[[UILocalNotification alloc]init]; //設置挪用時光 notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:0];//立刻觸發 //設置告訴屬性 notification.alertBody=@"HELLO,我是當地告訴哦!"; //告訴主體 notification.applicationIconBadgeNumber=1;//運用法式圖標右上角顯示的新聞數 notification.alertAction=@"翻開運用"; //待機界面的滑動舉措提醒 notification.soundName=UILocalNotificationDefaultSoundName;//收到告訴時播放的聲響,默許新聞聲響 //挪用告訴 [[UIApplication sharedApplication] scheduleLocalNotification:notification]; }
完成了下面三個步調,當地告訴的收回和接收根本都已完成,還有一些細節我們須要斟酌:
運用進入前台後,將Icon上的頭標消除:
-(void)applicationWillEnterForeground:(UIApplication *)application{ [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前台撤消運用新聞圖標 }
當不再須要這個告訴時,消除它
[[UIApplication sharedApplication] cancelAllLocalNotifications];
4、獲得告訴中的用戶參數字典
在下面,我們提到了一個參數
@property(nonatomic,copy) NSDictionary *userInfo;
我們可以在注冊告訴時將這個參數設置,然後在收到告訴時應用get辦法獲得,然則這裡有兩種情形:
1、假如我們的APP在前台或許後台進入前台時
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
這個辦法是APP在前台或許後台收到告訴進入前台時挪用的辦法
2、假如我們的APP在封閉狀況
假如是這類情形,我們只能從上面函數的launchOptions中取到我們想要的參數
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
代碼示例以下:
//吸收告訴參數 UILocalNotification *notification=[launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey]; NSDictionary *userInfo= notification.userInfo;
本文已被整頓到了《iOS推送教程》,迎接年夜家進修浏覽。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐本站。
【輕松弄定iOS當地新聞推送】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!