摘要: Notification是智妙手機運用編程中異常經常使用的一種傳遞信息的機制,並且可以異常好的節儉資本,不消消費資本來一直地檢討信息狀況(Pooling),在IOS下運用分為兩種分歧的Notification品種,當地和長途。當地的Notification由IOS下NotificationManager同一治理,只須要將封裝好的當地Notification對象參加到體系Notification治理機制隊列中,體系會在指定的時光激起將當地Notification,運用只需設計利益理Notification的辦法就完成了全部Notification流程了。
Notification是智妙手機運用編程中異常經常使用的一種傳遞信息的機制,並且可以異常好的節儉資本,不消消費資本來一直地檢討信息狀況(Pooling),在IOS下運用分為兩種分歧的Notification品種,當地和長途。當地的Notification由iOS下NotificationManager同一治理,只須要將封裝好的當地Notification對象參加到體系Notification治理機制隊列中,體系會在指定的時光激起將當地Notification,運用只需設計利益理Notification的辦法就完成了全部Notification流程了。
當地Notification所應用的對象是UILocalNotification,UILocalNotification的屬性涵蓋了一切處置Notification須要的內容。UILocalNotification的屬性有fireDate、timeZone、repeatInterval、repeatCalendar、alertBody、 alertAction、hasAction、alertLaunchImage、applicationIconBadgeNumber、 soundName和userInfo。
UILocalNotification的調劑
個中fireDate、timeZone、repeatInterval和repeatCalendar是用於UILocalNotification的調劑。fireDate是UILocalNotification的激起切實其實切時光。timeZone是UILocalNotification激起時光能否依據時區轉變而轉變,假如設置為nil的話,那末UILocalNotification將在一段時刻後被激起,而不是某一個確實時光被激起。 repeatInterval是UILocalNotification被反復激起之間的時光差,不外時光差是完整依據日歷單元(NSCalendarUnit)的,例如每周激起的單元,NSWeekCalendarUnit,假如不設置的話,將不會反復激起。 repeatCalendar是UILocalNotification反復激起所應用的日歷單元須要參考的日歷,假如不設置的話,體系默許的日歷將被作為參考日歷。
UILocalNotification的提示內容
alertBody、alertAction、hasAction和alertLaunchImage是當運用不在運轉時,體系處置
1、增長一個當地推送
//設置20秒以後 NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20]; /* NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm:ss"]; NSDate *now = [formatter dateFromString:@"15:00:00"];//觸發告訴的時光 */ //chuagjian 一個當地推送 UILocalNotification *noti = [[[UILocalNotification alloc] init] autorelease]; if (noti) { //設置推送時光 noti.fireDate = date;//=now //設置時區 noti.timeZone = [NSTimeZone defaultTimeZone]; //設置反復距離 noti.repeatInterval = NSWeekCalendarUnit; //推送聲響 noti.soundName = UILocalNotificationDefaultSoundName; //內容 noti.alertBody = @"推送內容"; //顯示在icon上的白色圈中的數子 noti.applicationIconBadgeNumber = 1; //設置userinfo 便利在以後須要撤消的時刻應用 NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"]; noti.userInfo = infoDic; //添加推送到uiapplication UIApplication *app = [UIApplication sharedApplication]; [app scheduleLocalNotification:noti]; }
2、法式運轉時吸收到當地推送新聞
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"吸收到當地提示 in app" message:notification.alertBody delegate:nil cancelButtonTitle:@"肯定" otherButtonTitles:nil]; [alert show]; //這裡,你便可以經由過程notification的useinfo,干一些你想做的工作了 application.applicationIconBadgeNumber -= 1; }
3、撤消一個當地推送
UIApplication *app = [UIApplication sharedApplication]; //獲得當地推送數組 NSArray *localArr = [app scheduledLocalNotifications]; //聲明當地告訴對象 UILocalNotification *localNoti; if (localArr) { for (UILocalNotification *noti in localArr) { NSDictionary *dict = noti.userInfo; if (dict) { NSString *inKey = [dict objectForKey:@"key"]; if ([inKey isEqualToString:key]) { if (localNoti){ [localNoti release]; localNoti = nil; } localNoti = [noti retain]; break; } } } //斷定能否找到曾經存在的雷同key的推送 if (!localNoti) { //不存在 初始化 localNoti = [[UILocalNotification alloc] init]; } if (localNoti && !state) { //不推送 撤消推送 [app cancelLocalNotification:localNoti]; [localNoti release]; return; } }
4.兩種方法撤消注冊的當地告訴,一種是撤消指定的告訴,第二種是撤消一切的注冊告訴:
[[UIApplication sharedApplication] cancelLocalNotification:localNotification]; [[UIApplication sharedApplication] cancelAllLocalNotification];
5.iOS5的四種告訴類型
5.1. 橫幅(Banner)
橫幅告訴是在iOS5中湧現的新特征,是顯示在屏幕頂部的橫條,幾秒鐘後會主動消逝。一條橫幅告訴會顯示法式的小圖標(低分屏下顯示29×29的圖標,高分屏顯示58×58的圖標),法式的名字和告訴的內容。小圖標可以贊助用戶一眼就看清晰是哪個運用法式在提示他們。
5.2. 提示(Alert)
提示告訴不會主動消逝,須要用戶與之交互能力封閉。設計師須要設計告訴的詳細內容,有時還要action button 設計title。全部提示告訴的配景款式,包含外面的按鈕的款式都是弗成變的,所以設計師和開辟者就不要在這裡施展創意了。Android因為其開放性,我們是可使用本身設計的控件的,而iOS如許做能夠是為了堅持UI作風分歧性。
5.3. 標志(Badge)
標志告訴是顯示在法式圖標的右上角的白色卵形標志,外面顯示的數字表現須要用戶處置的告訴的數目。異樣地,標志的色彩和外形、年夜小也是弗成以更改的。App Store中有更新的運用法式的數目,Mail中收到的未讀郵件的數目都是用標志告訴用戶的。
5.4. 聲響(Sound)
聲響提醒也是iOS的一種告訴方法,支撐自界說,可以與後面三種告訴類型搭配應用。
6.當地告訴和推送告訴
iOS運用法式會應用當地告訴或推送告訴來提示用戶:
6.1. 當地告訴
運用法式的當地告訴是由用戶的iOS裝備生成並宣布的,不管這個運用法式能否運轉在前台。就像一個日歷運用,或許是一個to-do list運用,可以收回一條當地告訴提示用戶立時有一個會議要開端了。
6.2. 推送告訴
運用法式的推送告訴是如許宣布的:該運用的長途辦事器(Provider)先收回一條告訴給蘋果的推送告訴辦事(Apple Push Notification service, APNS),蘋果的告訴辦事器再把這個告訴推送給一切裝置了這個運用的iOS裝備。
假如要應用推送告訴,必需先在蘋果的推送告訴辦事裡注冊你要應用哪幾品種型的告訴,就好比上面的一段代碼就表現同時注冊了標志和聲響兩品種型的告訴:
- (void)applicationDidFinishLaunching:(UIApplication *)app {// other setup tasks here…. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound)];}
若何應用各類告訴
應用當地告訴的運用法式可使用橫幅、提示、標志、聲響,然則應用推送告訴的運用法式須要先注冊要應用的告訴類型。
在應用告訴的時刻須要留意以下幾點:
1. 包管標志的內容是最新的
2. 對統一事宜不要收回多個告訴
3. 告訴內容不消包括運用法式的稱號
關於標志型告訴,當一切的事項都處理後,標志會主動消逝。
在橫幅和提示中,和頂部的告訴中間裡,iOS體系會主動在新聞裡顯示運用法式的稱號,所以在設計告訴的內容時,就無需包括app的稱號了。
在設計告訴的內容時,還須要留意:
1. 存眷於信息的表達,而不是用戶的舉措。防止提醒用戶去點哪個按鈕或許是如何翻開app
2. 冗長,最好不跨越兩行。長信息難以疾速浏覽,並且必定會有轉動條
3. 應用句式年夜寫(sentence-style capitalization,第一個單詞的首字母年夜寫)和適合的標點符號,開頭普通應用句號
關於“提示”
一條提示能夠會包括一到兩個按鈕。關於有兩個按鈕的提示,須要把封閉提示的按鈕放在右邊,把action button放在左邊。
點右邊的按鈕會封閉提示,點左邊的按鈕會封閉這條提示並翻開運用。
假如只要一個按鈕,這個按鈕應當是一個肯定按鈕。
點擊這個肯定按鈕也只會封閉提示,而不會翻開運用。
關於提示告訴,在設計action button的title的時刻須要留意:
1. title能精確描寫翻開運用的舉措。好比點擊Play按鈕,就可以夠翻開這個游戲,用戶可以或許連忙玩
2. 應用題目式年夜寫(title-style capitalization,每一個單詞的首字母都年夜寫)
3. 足夠冗長
在鎖屏狀況的時刻收到新提示告訴,會把action button的title顯示到“slide to view”的信息裡,調換失落“view”這個詞,而且將一切字母都轉化為小寫。
關於“聲響”
關於聲響提醒,用戶沒有應用手機的時刻聲響可以吸引他們的留意力,這可以免用戶漏掉主要信息。
我們可使用體系內置的聲響,也能夠自界說聲響。假如應用自界說的聲響,應當包管它足夠冗長,並且是精心制造的。
關於“告訴欄”
只需不是鎖屏狀況,都可以從屏幕頂部向下滑翻開告訴中間。
假如是在游戲外面,好比生果忍者這類游戲,為了不手指不當心滑到屏幕外而翻開了告訴中間,iOS5進步了翻開告訴中間的難度:先從屏幕頂手下拉湧現有相似防滑紋的下拉條,湧現下拉條後再次向下拖拽,才可翻開告訴中間,不然幾秒鐘後下拉條會主動收起。此處帶防滑紋下拉條的設計可以贊助新用戶敏捷樹立下拉翻開告訴中間的心智模子。
OS5對下拉告訴欄裡的告訴停止了組織,統一個app的告訴依據時光前後次序組合在一路。刪除某個app的告訴新聞須要先點左邊的“X”按鈕,“X”按鈕變成“消除”,用戶再次點擊消除能力移除這個app下的一切告訴。兩步操作下降誤刪概率,並且其交互情勢也比罕見的彈出二次確認的模態窗口友愛很多。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐本站。
【iOS推送之當地告訴UILocalNotification】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!