你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 輕松弄定iOS當地新聞推送

輕松弄定iOS當地新聞推送

編輯:IOS開發綜合

起首,我們先要明確一個概念,這裡的當地告訴是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當地新聞推送】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved