iOS10 简单的本地通知

2017-05-23  本文已影响95人  __Seven

说好的写这个关于关于iOS 10 的简单本地通知,其实开始是我自己看文档看复杂了,其实就是一个很简单的逻辑,只是和iOS8之前的通知有了点变化,iOS8用的是这样的本地通知
直接上代码

       UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
    action1.identifier = @"action1_identifier";
    action1.title=@"Accept";
    action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
    
    UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按钮
    action2.identifier = @"action2_identifier";
    action2.title=@"Reject";
    action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
    action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
    action2.destructive = YES;
    
    UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
    categorys.identifier = @"category1";//这组动作的唯一标示
    [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
    
    UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert
                                                                                 categories:[NSSet setWithObject:categorys]];

在iOS10之后这样的推送通知更加的人性化,更方便的处理了:是这样的

   NSString * identife = @"TestRequest";
   UNUserNotificationCenter *notificationCenter   =[UNUserNotificationCenter currentNotificationCenter];
    notificationCenter.delegate = self;
   [notificationCenter requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted&&!error) {
        
            UNMutableNotificationContent * content = [[UNMutableNotificationContent alloc]init];
            content.badge = @2;
            content.title = @"seven的通知";
            content.subtitle = @"qgutech测试";
            content.body = @"通知来了";
            content.sound = [UNNotificationSound defaultSound];
            content.categoryIdentifier = @"testsend";
            UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:NO];
            UNNotificationRequest *notificationRequest = [UNNotificationRequest requestWithIdentifier:identife content:content trigger:trigger];
          [notificationCenter addNotificationRequest:notificationRequest
          withCompletionHandler:^(NSError * _Nullable error) {
            if (!error) {
                 NSLog(@"sussce");
            }
        }];
            
        }else{
            NSLog(@"fail");
        }
    }];

主要iOS10的通知要注意点的是这个类UNMutableNotificationContent,这是主要描述通知内容的,主要有这些属性:

   //角标
    NSNumber *badge;
   //标题
    NSString *title;
   //子标题
    NSString *subtitle;
  //内容体
    NSString *body;
   //声音
   UNNotificationSound *sound ;
   //线程标识
   NSString *threadIdentifier;
  //推送附件
   NSArray <UNNotificationAttachment *> *attachments;

而且这个iOS10 的推送可以自定义的推送内容,和展示。
还有就是启动这个通知的方式:
可以设置时间定时启动可以循环

   UN TimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:NO];

还可以设置是地理位置的发送

   UNLocationNotificationTrigger (本地通知)地理位置的一种通知,

当用户进入或离开一个地理区域来通知。

指定的日期

      UNCalendarNotificationTrigger(本地通知) 一定日期之后

最后只要加入这个通知就可以了

       UNNotificationRequest *notificationRequest = [UNNotificationRequest requestWithIdentifier:identife content:content trigger:trigger];
          [notificationCenter addNotificationRequest:notificationRequest
          withCompletionHandler:^(NSError * _Nullable error) {
            if (!error) {
                 NSLog(@"sussce");
            }
        }];
            
        }else{
            NSLog(@"fail");
        }
    }];

这就是这次的简单本地通知的记录。还请看到的多多指教。

上一篇 下一篇

猜你喜欢

热点阅读