iOS推送之本地通知UILocalNotification

2020-01-17 21:34:14王振洲

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中收到的未读邮件的数量都是用标记通知用户的。