IOS本地消息推送(UILocalNotification)

  IOS本地的Notification由iOS下NotificationManager統一管理,只須要將封裝好的本地Notification對象加入到系統Notification管理機制隊列中,系統會在指定的時間激發將本地Notification,應用只需設計好處理Notification的方法就完成了整個Notification流程了。數組

 IOS本地的Notification有UILocalNotification對象完成。它包括的主要屬性有:fireDate、timeZone、repeatInterval、repeatCalendar、alertBody、 alertAction、hasAction、alertLaunchImage、applicationIconBadgeNumber、 soundName和userInfo。app

   UILocalNotification的調度ui

  fireDate UILocalNotification的激發的確切時間。spa

 timeZone:肯定UILocalNotification激發時間是否根據時區改變而改變,若是設置爲nil的話,那麼UILocalNotification將在一段時候後被激發,而不是某一個確切時間被激發。設計

 repeatInterval:是UILocalNotification被重複激發之間的時間差,不過期間差是徹底根據日曆單位(NSCalendarUnit)的,例如每週激發的單位,NSWeekCalendarUnit,若是不設置的話,將不會重複激發。對象

 repeatCalendar:是UILocalNotification重複激發所使用的日曆單位須要參考的日曆,若是不設置的話,系統默認的日曆將被做爲參考日曆。隊列

soundName:設置UILocalNotification消息推送時的聲音,例如:UILocalNotificationDefaultSoundName,也可指定開發

UILocalNotification的提醒內容it

 alertBody、alertAction、hasAction、alertLaunchImageio

alertBody:推送內容。

applicationIconBadgeNumber:角標數字。

alertAction:待機界面的滑動動做提示

//設置userinfo 方便在以後須要撤銷的時候使用

 userinfo同時也是:綁定到通知上的其餘附加信息

NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];

 noti.userInfo = infoDic;

 

添加一個本地推送

//添加推送到uiapplication

UIApplication *app = [UIApplication sharedApplication];

[app scheduleLocalNotification:noti];

 

取消一個本地推送 

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;

}

}

設置提醒角標

[UIApplication sharedApplication].applicationIconBadgeNumber=0;

這個0能夠隨意設置。開發人員根據狀況去處理。

 

兩種方式取消註冊的本地通知,一種是取消指定的通知,第二種是取消全部的註冊通知:

[[UIApplication sharedApplication] cancelLocalNotification:localNotification];

[[UIApplication sharedApplication] cancelAllLocalNotification];

 

註冊消息通知:

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

          {

                    // iOS 8 Notifications

                    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

                    [application registerForRemoteNotifications];

          }

          else

          {

                    // iOS < 8 Notifications

                    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

          }

相關文章
相關標籤/搜索