在新版本的通知框架中,苹果采用网络请求的风格,我们发送一个通知请求,然后将这个请求提交给UNUserNotificationCenter进行处理,然后我们会在 delegate 中接收到这个通知请求对应的 response,另外我们也可以在应用的 extension 中对 request 进行处理。
1、下面是发送通知的实现代码段,此处实现的是一个延时发送的通知类型,有兴趣的可以自行实现余下的两种类型UNCalendarNotificationTrigger和UNLocationNotificationTrigger
-(void)btnClicked
{
//收起键盘
[self.timeField resignFirstResponder];
//判断文本框的值是否有效
NSInteger timeValue = [self.timeField.text integerValue];
if(timeValue > 0)
{
self.label2.text = @"";
//创建通知
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc]init];
content.title = @"iOS 10通知";
content.body = @"这是一个iOS 10的消息通知...";
//创建一个触发事件
UNNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:timeValue repeats:NO];
//设置通知的唯一标识
NSString *requestIdentifer = @"timeIntervalNotification";
//创建通知的请求
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:requestIdentifer content:content trigger:trigger];
[[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
if (!error) {
self.label2.text = error.localizedDescription;
}
else
{
self.label2.text = @"发送成功...";
}
}];
}
else
{
self.label2.text = @"输入的时间无效";
}
}
2、远程推送的payload内容
{
"aps":{
"alert":{
"title":"iOS 10通知",
"body":"这是一个iOS 10的消息通知..."
}
}
}
3、下面是实现后的效果图,从效果图可以看到,不管应用是在前台还是后台,均可收到通知提示