ios10新特性-UserNotification

ios10新特性-UserNotification

引言:iOS的通知分本地通知和遠(yuǎn)程通知,iOS10之前采用的是UILocationNotification類(lèi),遠(yuǎn)程通知有蘋(píng)果服務(wù)器進(jìn)行轉(zhuǎn)發(fā),本地通知和遠(yuǎn)程通知其回調(diào)的處理都是通過(guò)AppDelegate中的幾個(gè)回調(diào)方法來(lái)完成。iOS10系統(tǒng)中,通知功能的增強(qiáng)是一大優(yōu)化之處,iOS10中將通知功能整合成了一個(gè)框架UserNotification,其結(jié)構(gòu)十分類(lèi)似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加強(qiáng)大,主要表現(xiàn)在如下幾點(diǎn):

1.通知處理代碼可以從AppDelegate中剝離。

2.通知的注冊(cè),設(shè)置,處理更加結(jié)構(gòu)化,更易于模塊化開(kāi)發(fā)。

3.UserNotification支持自定義通知音效和啟動(dòng)圖。

4.UserNotification支持向通知內(nèi)容中添加媒體附件,例如音頻,視頻。

5.UserNotification支持開(kāi)發(fā)者定義多套通知模板。

6.UserNotification支持完全自定義的通知界面。

7.UserNotification支持自定義通知中的用戶交互按鈕。

8.通知的觸發(fā)更加容易管理。

從上面列舉的幾點(diǎn)就可以看出,iOS10中的UsreNotification真的是一個(gè)大的改進(jìn),溫故而知新,關(guān)于iOS之前版本本地通知和遠(yuǎn)程通知的相關(guān)內(nèi)容請(qǐng)查看如下博客:

本地推送:http://my.oschina.net/u/2340880/blog/405491

遠(yuǎn)程推送:http://my.oschina.net/u/2340880/blog/413584

更多詳細(xì)內(nèi)容可以參考這篇博客:https://my.oschina.net/u/2340880/blog/747781

demo參考:http://www.open-open.com/lib/view/open1472632538972.html

下面就是我自己寫(xiě)的小程序,小試牛刀一下:

第一步必不可少的肯定是要導(dǎo)入我們的頭文件:<UserNotifications/UserNotifications.h>

然后在AppDelegate.m中注冊(cè)通知(第一次寫(xiě)的時(shí)候就是沒(méi)有注冊(cè)通知,直接就寫(xiě)了,所以導(dǎo)致通知總是不顯示)

#import?"AppDelegate.h"

#import?"ViewController.h"


#import?<UserNotifications/UserNotifications.h>


@interface?AppDelegate?()


@end


@implementation?AppDelegate



- (BOOL)application:(UIApplication?*)application didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions {


?self.window?= [[UIWindow?alloc]?initWithFrame:[UIScreen?mainScreen].bounds];




?ViewController?*vc = [[ViewController?alloc]?init];


?UINavigationController?*nav = [[UINavigationController?alloc]?initWithRootViewController:vc];

?self.window.rootViewController?= nav;


[self.window?makeKeyAndVisible];



?//注冊(cè)本地推送

?//?使用?UNUserNotificationCenter?來(lái)管理通知

?UNUserNotificationCenter?*center = [UNUserNotificationCenter?currentNotificationCenter];

?//監(jiān)聽(tīng)回調(diào)事件

center.delegate?=?self;


?//iOS 10?使用以下方法注冊(cè),才能得到授權(quán)

[center?requestAuthorizationWithOptions:(UNAuthorizationOptionAlert?+?UNAuthorizationOptionSound)

?completionHandler:^(BOOL?granted,?NSError?*?_Nullable?error) {

?// Enable or disable features based on authorization.

? ? ? ? ? ? ? ? ? ? ? ? ? }];


?//獲取當(dāng)前的通知設(shè)置,UNNotificationSettings?是只讀對(duì)象,不能直接修改,只能通過(guò)以下方法獲取

[center?getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings?*?_Nonnull?settings) {


? ? }];

//

//? ? [self addLocationNotification:5];


?return?YES;

}


#pragma mark - UNUserNotificationCenterDelegate?

- (void)userNotificationCenter:(UNUserNotificationCenter?*)center willPresentNotification:(UNNotification?*)notification withCompletionHandler:(void?(^)(UNNotificationPresentationOptions))completionHandler {

?//1.?處理通知


?//2.?處理完成后條用?completionHandler?,用于指示在前臺(tái)顯示通知的形式

completionHandler(UNNotificationPresentationOptionAlert);

}

2.然后在ViewController.m文件里發(fā)送通知

#import?"ViewController.h"

#import?<UserNotifications/UserNotifications.h>


@interface?ViewController?()

@property?(nonatomic,?strong)?NSString?*notitle;//通知標(biāo)題

@property?(nonatomic,?strong)?NSString?*content;//通知內(nèi)容

@property?(nonatomic,?strong)?NSURL?*lineUrl;//跳轉(zhuǎn)鏈接

@property?(nonatomic,?strong)?NSURL?*imageUrl;//附加的圖片

@property?(nonatomic,?strong)?NSData?*soundData;//聲音


@end


@implementation?ViewController


- (void)viewDidLoad {

[super?viewDidLoad];


?self.title?=?@"新通知測(cè)試";


?self.view.backgroundColor?= [UIColor?whiteColor];


[self?setUpUI];

}


- (void)setUpNotification {

?//初始化通知

?UNMutableNotificationContent?*noContent = [[UNMutableNotificationContent?alloc]?init];

noContent.title?=?_notitle;//標(biāo)題

noContent.subtitle?=?@"副標(biāo)題";//副標(biāo)題

noContent.body?=?_content;//正文

noContent.badge?=?@1;//


?UNNotificationSound?*sound = [UNNotificationSound?defaultSound];

noContent.sound?= sound;

noContent.categoryIdentifier?=?@"uid";


//5秒后推送通知

?UNTimeIntervalNotificationTrigger?*trigger1 = [UNTimeIntervalNotificationTrigger?triggerWithTimeInterval:5?repeats:NO];


?UNNotificationRequest?*request = [UNNotificationRequest?requestWithIdentifier:@"push"?content:noContent?trigger:trigger1];


?//通知

?UNUserNotificationCenter?*center = [UNUserNotificationCenter?currentNotificationCenter];

[center?addNotificationRequest:request?withCompletionHandler:^(NSError?*?_Nullable?error) {

?NSLog(@"%@? error",error);

? ? }];

}



- (void)setUpUI {

?_notitle?=?@"通知標(biāo)題:iOS10測(cè)試";

?_content?=?@"這是一條緊急通知";

?_lineUrl?= [NSURL?URLWithString:@"http://www.cnblogs.com/zrr-notes/"];


?UIButton?*btn = [UIButton?buttonWithType:UIButtonTypeCustom];

[btn?setTitle:@"發(fā)送通知"?forState:UIControlStateNormal];

[btn?setBackgroundColor:[UIColor?redColor]];

btn.frame?=?CGRectMake(100,?100,?100,?50);

[self.view?addSubview:btn];

[btn?addTarget:self?action:@selector(setUpNotification)?forControlEvents:UIControlEventTouchUpInside];


}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,463評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,009評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,778評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,218評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,436評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,795評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,993評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,229評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,659評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,917評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,687評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,990評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容