你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS10告訴框架UserNotification懂得與運用

iOS10告訴框架UserNotification懂得與運用

編輯:IOS開發綜合

1、引言

        關於告訴,不管與長途Push照樣當地告訴,以往的IOS體系暴漏給開辟者的接口都是非常無限的,開辟者只能對題目和內容停止簡略的界說,至於UI展現和用戶交互行動相干的部門,開辟者開辟起來都好不容易。至於當地告訴,IOS10之前采取的是UILocationNotification類,長途告訴有蘋果辦事器停止轉發,當地告訴和長途告訴其回調的處置都是經由過程AppDelegate中的幾個回調辦法來完成。IOS10體系中,告訴功效的加強是一年夜優化的地方,iOS10中將告訴功效整分解了一個框架UserNotification,其構造非常相似於iOS8中的UIWebView向WebKit框架整合的思緒。而且UserNotification比擬之前的告訴功效加倍壯大,重要表示在以下幾點:

1.告訴處置代碼可以從AppDelegate中剝離。

2.告訴的注冊,設置,處置加倍構造化,更容易於模塊化開辟。

3.UserNotification支撐自界說告訴音效和啟動圖。

4.UserNotification支撐向告訴內容中添加媒體附件,例如音頻,視頻。

5.UserNotification支撐開辟者界說多套告訴模板。

6.UserNotification支撐完整自界說的告訴界面。

7.UserNotification支撐自界說告訴中的用戶交互按鈕。

8.告訴的觸發加倍輕易治理。

從下面羅列的幾點便可以看出,iOS10中的UsreNotification真的是一個年夜的改良,溫故而知新,關於iOS之前版本當地告訴和長途告訴的相干內容請檢查以下博客:

當地推送:http://www.jb51.net/article/93602.htm。

長途推送:http://www.jb51.net/article/92953.htm。

2、UserNotification概覽

        進修一個新的框架或常識模塊時,微觀上懂得其系統,年夜體上控制其構造是非常需要的,這更有益於我們對這個框架或模塊的全體掌握與懂得。UserNotification框架中拆分界說了很多類、列舉和構造體,個中還界說了很多常量,類與類之間固然關系龐雜,但頭緒非常清楚,掌握住主線,層層剖析,邊很輕易懂得和運用UserNotification框架。

        下圖中羅列了UserNotification框架中一切焦點的類:

如圖中關系所示,UserNotification框架中的焦點類羅列以下:

UNNotificationCenter:告訴治理中間,單例,告訴的注冊,吸收告訴後的回調解理等,是UserNotification框架的焦點。

UNNotification:告訴對象,個中封裝了告訴要求。

UNNotificationSettings:告訴相干設置。

UNNotificationCategory:告訴模板。

UNNotificationAction:用於界說告訴模板中的用戶交互行動。

UNNotificationRequest:注冊告訴要求,個中界說了告訴的內容和觸發方法。

UNNotificationResponse:吸收到告訴後的回執。

UNNotificationContent:告訴的詳細內容。

UNNotificationTrigger:告訴的觸發器,由其子類詳細界說。

UNNotificationAttachment:告訴附件類,為告訴內容添加媒體附件。

UNNotificationSound:界說告訴音效。

UNPushNotificationTrigger:長途告訴的觸發器,UNNotificationTrigger子類。

UNTimeInervalNotificationTrigger:計時告訴的觸發器,UNNotificationTrigger子類。

UNCalendarNotificationTrigger:周期告訴的觸發器,UNNotificationTrigger子類。

UNLocationNotificationTrigger:地區告訴的觸發器,UNNotificationTrigger子類。

UNNotificationCenterDelegate:協定,個中辦法用於監聽告訴狀況。

3、停止告訴用戶權限請求與創立通俗的當地告訴

        要在iOS體系中應用告訴,必需獲得到用戶權限,UserNotification框架中請求告訴用戶權限須要經由過程UNNotificationCenter來完成,示例以下:

//停止用戶權限的請求
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionBadge|UNAuthorizationOptionSound|UNAuthorizationOptionAlert|UNAuthorizationOptionCarPlay completionHandler:^(BOOL granted, NSError * _Nullable error) {
  //在block中會傳入布爾值granted,表現用戶能否贊成
  if (granted) {
   //假如用戶權限請求勝利,設置告訴中間的署理
   [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  }
}];

請求用戶權限的辦法中須要傳入一個權限內容的參數,其列舉界說以下:

typedef NS_OPTIONS(NSUInteger, UNAuthorizationOptions) {
 //許可更新app上的告訴數字
 UNAuthorizationOptionBadge = (1 << 0),
 //許可告訴聲響
 UNAuthorizationOptionSound = (1 << 1),
 //許可告訴彈出正告
 UNAuthorizationOptionAlert = (1 << 2),
 //許可車載裝備吸收告訴
 UNAuthorizationOptionCarPlay = (1 << 3),
};

獲得到用戶權限後,應用UserNotification創立通俗的告訴,示例代碼以下:

 //告訴內容類
 UNMutableNotificationContent * content = [UNMutableNotificationContent new];
 //設置告訴要求發送時 app圖標上顯示的數字
 content.badge = @2;
 //設置告訴的內容
 content.body = @"這是iOS10的新告訴內容:通俗的iOS告訴";
 //默許的告訴提醒音
 content.sound = [UNNotificationSound defaultSound];
 //設置告訴的副題目
 content.subtitle = @"這裡是副題目";
 //設置告訴的題目
 content.title = @"這裡是告訴的題目";
 //設置從告訴激活app時的launchImage圖片
 content.launchImageName = @"lun";
 //設置5S以後履行
 UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
 UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"NotificationDefault" content:content trigger:trigger];
 //添加告訴要求
 [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
  
 }];

後果以下面圖示:

             

4、告訴音效類UNNotificationSound

        告訴可以停止自界說的音效設置,個中辦法以下:

//體系默許的音效
+ (instancetype)defaultSound;
//自界說的音頻音效
/*
留意,音頻文件必需在bundle中或許在Library/Sounds目次下
*/
+ (instancetype)soundNamed:(NSString *)name __WATCHOS_PROHIBITED;

5、告訴觸發器UNNotificationTrigger

        告訴觸發器可以懂得為界說告訴的發送時光,UNNotificationTrigger是觸發器的基類,詳細的觸發器由它的四個子類完成,現實上,開辟者在代碼中能夠會用到的觸發器只要三種,UNPushNotificationTrigger長途推送觸發器開辟者不須要創立應用,長途告訴有長途辦事器觸發,開辟者只須要創立與當地告訴有關的觸發器停止應用。

1.UNTimeIntervalNotificationTrigger

        UNTimeIntervalNotificationTrigger是計時觸發器,開辟者可以設置其在添加告訴要求後必定時光發送。

//創立觸發器 在timeInterval秒後觸發 可以設置能否輪回觸發
+ (instancetype)triggerWithTimeInterval:(NSTimeInterval)timeInterval repeats:(BOOL)repeats;
//獲得下次觸發的時光點
- (nullable NSDate *)nextTriggerDate;

2.UNCalendarNotificationTrigger

        UNCalendarNotificationTrigger是日歷觸發器,開辟者可以設置其在某個時光點觸發。

//創立觸發器 設置觸發時光 可以設置能否輪回觸發
+ (instancetype)triggerWithDateMatchingComponents:(NSDateComponents *)dateComponents repeats:(BOOL)repeats;
//下一次觸發的時光點
- (nullable NSDate *)nextTriggerDate;

3.UNLocationNotificationTrigger

        UNLocationNotificationTrigger是地區觸發器,開辟者可以設置當用戶進入某一區域時觸發。

//地區信息
@property (NS_NONATOMIC_IOSONLY, readonly, copy) CLRegion *region;
//創立觸發器
+ (instancetype)triggerWithRegion:(CLRegion *)region repeats:(BOOL)repeats __WATCHOS_PROHIBITED;

6、為告訴內容添加附件

        附件重要指的是媒體附件,例如圖片,音頻和視頻,為告訴內容添加附件須要應用UNNotificationAttachment類。示例代碼以下:

 //創立圖片附件
 UNNotificationAttachment * attach = [UNNotificationAttachment attachmentWithIdentifier:@"imageAttach" URL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"2" ofType:@"jpg"]] options:nil error:nil];
 UNMutableNotificationContent * content = [UNMutableNotificationContent new];
 //設置附件數組
 content.attachments = @[attach];
 content.badge = @1;
 content.body = @"這是iOS10的新告訴內容:通俗的iOS告訴";
 //默許的告訴提醒音
 content.sound = [UNNotificationSound defaultSound];
 content.subtitle = @"這裡是副題目";
 content.title = @"這裡是告訴的題目";
 //設置5S以後履行
 UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
 UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"NotificationDefaultImage" content:content trigger:trigger];
 [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
  
 }];

後果以下圖      

須要留意,UNNotificationContent的附件數組固然是一個數組,然則體系的告訴模板只能展現個中的第一個附件,設置多個附件也不會有額定的後果,然則假如開辟者停止告訴模板UI的自界說,則此數組便可以派上用處了。音頻附件界面以下:

須要留意,添加附件的格局和年夜小都有必定的請求,以下表格所示:

創立告訴內容附件UNNotificationAttachment實例的辦法中有一個options設置裝備擺設字典,這個字典中可以停止設置裝備擺設的鍵值對以下:

//設置裝備擺設附件的類型的鍵 須要設置為NSString類型的值,假如不設置 則默許從擴大名中揣摸
extern NSString * const UNNotificationAttachmentOptionsTypeHintKey __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
//設置裝備擺設能否隱蔽縮略圖的鍵 須要設置裝備擺設為NSNumber 0或許1
extern NSString * const UNNotificationAttachmentOptionsThumbnailHiddenKey __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
//設置裝備擺設應用一個尺度的矩形來對縮略圖停止裁剪,須要設置裝備擺設為CGRectCreateDictionaryRepresentation(CGRect)創立的矩形援用
extern NSString * const UNNotificationAttachmentOptionsThumbnailClippingRectKey __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
//應用視頻中的某一幀作為縮略圖 設置裝備擺設為NSNumber時光
extern NSString * const UNNotificationAttachmentOptionsThumbnailTimeKey __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);

7、界說告訴模板UNNotificationCategory

        聊天類軟件在iOS體系中,經常采取後台推送的方法推送新新聞,用戶可以在不進入運用法式的情形下,直接在左面答復告訴推送過去的信息,這類功效就是經由過程UNNotificationCategory模板與UNNotificationAction用戶運動來完成的。關於文本答復框,UserNotification框架中供給了UNTextInputNotificationAction類,其是UNNotificationAction的子類。示例代碼以下:

 //創立用戶運動
 /*
 options參數可選以下:
 //須要在解開鎖屏下應用
 UNNotificationActionOptionAuthenticationRequired
 //能否指導有損壞性
 UNNotificationActionOptionDestructive
 //能否許可運動在後台啟動app
 UNNotificationActionOptionForeground
 //無設置
 UNNotificationActionOptionNone
 */
 UNTextInputNotificationAction * action = [UNTextInputNotificationAction actionWithIdentifier:@"action" title:@"答復" options:UNNotificationActionOptionAuthenticationRequired textInputButtonTitle:@"運動" textInputPlaceholder:@"請輸出答復內容"];
 //創立告訴模板
 UNNotificationCategory * category = [UNNotificationCategory categoryWithIdentifier:@"myNotificationCategoryText" actions:@[action] intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
 UNMutableNotificationContent * content = [UNMutableNotificationContent new];
 content.badge = @1;
 content.body = @"這是iOS10的新告訴內容:通俗的iOS告訴";
 //默許的告訴提醒音
 content.sound = [UNNotificationSound defaultSound];
 content.subtitle = @"這裡是副題目";
 content.title = @"這裡是告訴的題目";
 //設置告訴內容對應的模板 須要留意 這裡的值要與對應模板id分歧
 content.categoryIdentifier = @"myNotificationCategoryText";
 //設置5S以後履行
 UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
  [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObjects:category, nil]];
 UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"NotificationDefaultText" content:content trigger:trigger];
 
 [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
  
 }];

須要留意,要應用模板,告訴內容UNNotificationContent的categoryIdentifier要與UNNotificationCategory的id分歧。後果以下:

        也能夠為告訴模板添加多個自界說的用戶交互按鈕,示例以下:

UNNotificationAction * action = [UNNotificationAction actionWithIdentifier:@"action" title:@"運動題目1" options:UNNotificationActionOptionNone];
 UNNotificationAction * action2 = [UNNotificationAction actionWithIdentifier:@"action" title:@"運動題目2" options:UNNotificationActionOptionNone];
 UNNotificationAction * action3 = [UNNotificationAction actionWithIdentifier:@"action" title:@"運動題目3" options:UNNotificationActionOptionNone];
 UNNotificationAction * action4 = [UNNotificationAction actionWithIdentifier:@"action" title:@"運動題目4" options:UNNotificationActionOptionNone];
  UNNotificationCategory * category = [UNNotificationCategory categoryWithIdentifier:@"myNotificationCategoryBtn" actions:@[action,action2,action3,action4] intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
 UNMutableNotificationContent * content = [UNMutableNotificationContent new];
 content.badge = @1;
 content.body = @"這是iOS10的新告訴內容:通俗的iOS告訴";
 //默許的告訴提醒音
 content.sound = [UNNotificationSound defaultSound];
 content.subtitle = @"這裡是副題目";
 content.title = @"這裡是告訴的題目";
 content.categoryIdentifier = @"myNotificationCategoryBtn";
 //設置5S以後履行
 UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
 UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"NotificationDefault" content:content trigger:trigger];
 [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObjects:category, nil]];
 [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
  
 }];

須要留意,體系模板最多支撐添加4個用戶交互按鈕,以下圖:

8、自界說告訴模板UI

        經由過程前邊的引見,我們發明經由過程UserNotification框架開辟者曾經可以完成很多歷來很難完成的後果。但是這都不是UserNotification框架最壯大的處所,UserNotification框架最壯大的處所在於其可以完整自界說告訴的UI界面。

        完整自界說告訴界面是經由過程iOS擴大來完成的,起首創立一個新的target,以下圖:

選擇Notification Content,以下:

創立完成後,會發明工程中多了一個Notification Content的擴大,個中自帶一個storyboard文件和一個NotificationViewController類,開辟者可以在storyboard文件或許直接在Controller類中停止自界說界面的編寫。

    須要留意,NotificationViewController主動遵照了UNNotificationContentExtension協定,這個協定專門用來處置自界說告訴UI的內容展現,個中辦法羅列以下:

//吸收到告訴時會被挪用
/*
開辟者可以從notification對象中拿到附件等外容停止UI刷新
*/
- (void)didReceiveNotification:(UNNotification *)notification;
//當用戶點擊了告訴中的用戶交互按鈕時會被挪用
/*
response對象中有告訴內容相干信息
在回調block塊completion中,開辟者可以傳入一個UNNotificationContentExtensionResponSEOption參數來告知體系若何處置此次用戶運動
UNNotificationContentExtensionResponSEOption列舉中可選值以下:
typedef NS_ENUM(NSUInteger, UNNotificationContentExtensionResponSEOption) {
  //不封閉以後告訴界面
  UNNotificationContentExtensionResponseOptionDoNotDismiss,
  //封閉以後告訴界面
  UNNotificationContentExtensionResponseOptionDismiss,
  //封閉以後告訴界面並將用戶運動傳遞給宿主app處置
  UNNotificationContentExtensionResponseOptionDismissAndForwardAction,
} __IOS_AVAILABLE(10_0) __TVOS_UNAVAILABLE __WATCHOS_UNAVAILABLE __OSX_UNAVAILABLE;
*/
- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(UNNotificationContentExtensionResponseOption option))completion;
/*
這個屬性作為get辦法停止完成 這個辦法用來前往一個告訴界面要顯示的媒體按鈕
typedef NS_ENUM(NSUInteger, UNNotificationContentExtensionMediaPlayPauseButtonType) {
  //不顯示媒體按鈕
  UNNotificationContentExtensionMediaPlayPauseButtonTypeNone,
  //默許的媒體按鈕 當點擊按鈕後 停止播放與暫停的切換 按鈕一直顯示
  UNNotificationContentExtensionMediaPlayPauseButtonTypeDefault,
  //Overlay作風 當點擊按鈕後,媒體播放,按鈕隱蔽 點擊媒體後,播放暫停,按鈕顯示。
  UNNotificationContentExtensionMediaPlayPauseButtonTypeOverlay,
} __IOS_AVAILABLE(10_0) __TVOS_UNAVAILABLE __WATCHOS_UNAVAILABLE __OSX_UNAVAILABLE;
*/
@property (nonatomic, readonly, assign) UNNotificationContentExtensionMediaPlayPauseButtonType mediaPlayPauseButtonType;
//前往媒體按鈕的地位
@property (nonatomic, readonly, assign) CGRect mediaPlayPauseButtonFrame;
//前往媒體按鈕的色彩
@property (nonatomic, readonly, copy) UIColor *mediaPlayPauseButtonTintColor;
//點擊播放按鈕的回調
- (void)mediaPlay;
//點擊暫停按鈕的回調
- (void)mediaPause;
//媒體開端播放的回調
- (void)mediaPlayingStarted __IOS_AVAILABLE(10_0) __TVOS_UNAVAILABLE __WATCHOS_UNAVAILABLE __OSX_UNAVAILABLE;
//媒體開端暫停的回調
- (void)mediaPlayingPaused __IOS_AVAILABLE(10_0) __TVOS_UNAVAILABLE __WATCHOS_UNAVAILABLE __OSX_UNAVAILABLE;

須要留意,自界說的告訴界面上固然可以放按鈕,可以聽任何UI控件,然則其不克不及停止用戶交互,獨一可以停止用戶交互的方法是經由過程協定中的媒體按鈕及其回調辦法。

        界說好了告訴UI模板,若要停止應用,還須要再Notification Content擴大中的info.plist文件的NSExtension字典的NSExtensionAttributes字典裡停止一些設置裝備擺設,正常情形下,開辟者須要停止設置裝備擺設的鍵有3個,分離以下:

UNNotificationExtensionCategory:設置模板的categoryId,用於與UNNotificationContent對應。

UNNotificationExtensionInitialContentSizeRatio:設置自界說告訴界面的高度與寬度的比,寬度為固定寬度,在分歧裝備上有差異,開辟者須要依據寬度盤算出高度停止設置,體系依據這個比值來盤算告訴界面的高度。

UNNotificationExtensionDefaultContentHidden:是有隱蔽體系默許的告訴界面。

設置裝備擺設info.plist文件以下:

用以下的代碼創立告訴:

UNNotificationAction * action = [UNNotificationAction actionWithIdentifier:@"action" title:@"運動題目1" options:UNNotificationActionOptionNone];
  //依據id拿到自界說UI的模板
  UNNotificationCategory * category = [UNNotificationCategory categoryWithIdentifier:@"myNotificationCategoryH" actions:@[action] intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
  UNMutableNotificationContent * content = [UNMutableNotificationContent new];
  content.badge = @1;
  content.body = @"這是iOS10的新告訴內容:通俗的iOS告訴";
  //默許的告訴提醒音
  content.sound = [UNNotificationSound defaultSound];
  content.subtitle = @"這裡是副題目";
  content.title = @"這裡是告訴的題目";
  content.categoryIdentifier = @"myNotificationCategoryH";
  //設置5S以後履行
  UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
  UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"NotificationDefaultCustomUIH" content:content trigger:trigger];
  [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObjects:category, nil]];
  [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
    
  }];

後果以下圖:

假如將UNNotificationExtensionDefaultContentHidden鍵值設置為0或許不設置,則不會隱蔽體系默許的UI,以下:

9、告訴回調的處置

        UserNotification框架關於告訴的回調解理,是經由過程UNUserNotificationCenterDelegate協定來完成的,這個協定中有兩個辦法,以下:

/*
這個辦法在運用在前台,而且將要彈出告訴時被挪用,後台狀況下彈告訴不會挪用這個辦法
這個辦法中的block塊completionHandler()可以傳入一個UNNotificationPresentationOptions類型的列舉
有個這個參數,開辟者可以設置在前台狀況下,仍然可以彈出告訴新聞,列舉以下:
typedef NS_OPTIONS(NSUInteger, UNNotificationPresentationOptions) {
  //只修正app圖標的新聞數
  UNNotificationPresentationOptionBadge  = (1 << 0),
  //只提醒告訴音效
  UNNotificationPresentationOptionSound  = (1 << 1),
  //只彈出告訴框
  UNNotificationPresentationOptionAlert  = (1 << 2),
} __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
//甚麼都不做
static const UNNotificationPresentationOptions UNNotificationPresentationOptionNone 
*/
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
/*
這個辦法當吸收到告訴後,用戶點擊告訴激活app時被挪用,不管前台照樣後台
*/
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0) __TVOS_PROHIBITED;

10、UserNotification框架中其他零碎常識

        後面所引見的內容根本涵蓋了UserNotification框架中一切的內容,在今後的運用開辟中,開辟者可以在告訴方面施展更年夜的想象力與發明力,給用戶加倍友愛的體驗。除前邊所引見過的焦點內容外,UserNotification框架中還有一些零碎的類、列舉等。

1.毛病碼描寫

typedef NS_ENUM(NSInteger, UNErrorCode) {
  //告訴不被許可
  UNErrorCodeNotificationsNotAllowed = 1,
  
  //附件有效url
  UNErrorCodeAttachmentInvalidURL = 100,
  //附件類型毛病
  UNErrorCodeAttachmentUnrecognizedType,
  //附件年夜小毛病
  UNErrorCodeAttachmentInvalidFileSize,
  //附件數據毛病
  UNErrorCodeAttachmentNotInDataStore,
  UNErrorCodeAttachmentMoveIntoDataStoreFailed,
  UNErrorCodeAttachmentCorrupt,
  
  //時光有效
  UNErrorCodeNotificationInvalidNoDate = 1400,
  //無內容
  UNErrorCodeNotificationInvalidNoContent,
} __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);

2.UNNotification類

@interface UNNotification : NSObject <NSCopying, NSSecureCoding>
//觸發的時光
@property (nonatomic, readonly, copy) NSDate *date;
//內置的告訴要求對象
@property (nonatomic, readonly, copy) UNNotificationRequest *request;

- (instancetype)init NS_UNAVAILABLE;

@end

3.UNNotificationSettings類

        UNNotificationSettings類重要用來獲得與告訴相干的信息。

@interface UNNotificationSettings : NSObject <NSCopying, NSSecureCoding>
//用戶權限狀況
@property (NS_NONATOMIC_IOSONLY, readonly) UNAuthorizationStatus authorizationStatus;
//音效設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting soundSetting __TVOS_PROHIBITED;
//圖標提示設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting badgeSetting __WATCHOS_PROHIBITED;
//提示框設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting alertSetting __TVOS_PROHIBITED;
//告訴中間設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting notificationCenterSetting __TVOS_PROHIBITED;
//鎖屏設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting lockScreenSetting __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
//車載裝備設置
@property (NS_NONATOMIC_IOSONLY, readonly) UNNotificationSetting carPlaySetting __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
//提示框作風
@property (NS_NONATOMIC_IOSONLY, readonly) UNAlertStyle alertStyle __TVOS_PROHIBITED __WATCHOS_PROHIBITED;

@end

UNNotificationSetting列舉以下:

typedef NS_ENUM(NSInteger, UNNotificationSetting) {
  //不支撐
  UNNotificationSettingNotSupported = 0,
  
  //弗成用
  UNNotificationSettingDisabled,
  
  //可用
  UNNotificationSettingEnabled,
} 

UNAuthorizationStatus列舉以下:

typedef NS_ENUM(NSInteger, UNAuthorizationStatus) {
  //為做選擇
  UNAuthorizationStatusNotDetermined = 0,
  
  // 用戶謝絕
  UNAuthorizationStatusDenied,
  
  // 用戶許可
  UNAuthorizationStatusAuthorized
}

UNAlertStyle列舉以下:

typedef NS_ENUM(NSInteger, UNAlertStyle) {
  //無
  UNAlertStyleNone = 0,
  //頂部Banner款式
  UNAlertStyleBanner,
  //正告框款式
  UNAlertStyleAlert,
}

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐本站。

【iOS10告訴框架UserNotification懂得與運用】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

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