ios10新特性-UserNotification

ios10新特性-UserNotification

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

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

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

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

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

5.UserNotification支持開發(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

下面就是我自己寫的小程序术徊,小試牛刀一下:

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

然后在AppDelegate.m中注冊(cè)通知(第一次寫的時(shí)候就是沒有注冊(cè)通知本刽,直接就寫了,所以導(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?來管理通知

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

?//監(jiān)聽回調(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ì)象,不能直接修改笋除,只能通過以下方法獲取

[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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市株憾,隨后出現(xiàn)的幾起案子蝙寨,更是在濱河造成了極大的恐慌晒衩,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墙歪,死亡現(xiàn)場(chǎng)離奇詭異听系,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虹菲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門靠胜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毕源,你說我怎么就攤上這事浪漠。” “怎么了霎褐?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵址愿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我冻璃,道長(zhǎng)响谓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任省艳,我火速辦了婚禮娘纷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跋炕。我一直安慰自己赖晶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布辐烂。 她就那樣靜靜地躺著遏插,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棉圈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天眷蜓,我揣著相機(jī)與錄音分瘾,去河邊找鬼。 笑死吁系,一個(gè)胖子當(dāng)著我的面吹牛德召,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汽纤,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼上岗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蕴坪?” 一聲冷哼從身側(cè)響起肴掷,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤敬锐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呆瞻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體台夺,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年痴脾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颤介。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赞赖,死狀恐怖滚朵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情前域,我是刑警寧澤辕近,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站话侄,受9級(jí)特大地震影響亏推,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜年堆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一吞杭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧变丧,春花似錦芽狗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至攻晒,卻和暖如春顾复,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鲁捏。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工芯砸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人给梅。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓假丧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親动羽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子包帚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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