iOS10 添加本地推送(Local Notification)

2024-01-12 17:38

本文主要是介绍iOS10 添加本地推送(Local Notification),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


转: http://blog.csdn.net/lincsdnnet/article/details/52970747


iOS10 添加本地推送(Local Notification)

新的推送注册机制

[objc] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <UserNotifications/UserNotifications.h>  
  2. #import "AppDelegate.h"  
  3. @interface AppDelegate ()<UNUserNotificationCenterDelegate>  
  4.   
  5. @end  
  6.   
  7. @implementation AppDelegate  
  8.   
  9. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  10.     // 使用 UNUserNotificationCenter 来管理通知  
  11.     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];  
  12.     //监听回调事件  
  13.     center.delegate = self;  
  14.       
  15.     //iOS 10 使用以下方法注册,才能得到授权  
  16.     [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)  
  17.                           completionHandler:^(BOOL granted, NSError * _Nullable error) {  
  18.                               // Enable or disable features based on authorization.  
  19.                           }];  
  20.       
  21.     //获取当前的通知设置,UNNotificationSettings 是只读对象,不能直接修改,只能通过以下方法获取  
  22.     [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {  
  23.           
  24.     }];  
  25.     return YES;  
  26. }  
  27.   
  28. #pragma mark - UNUserNotificationCenterDelegate  
  29. //在展示通知前进行处理,即有机会在展示通知前再修改通知内容。  
  30. -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{  
  31.     //1. 处理通知  
  32.       
  33.     //2. 处理完成后条用 completionHandler ,用于指示在前台显示通知的形式  
  34.     completionHandler(UNNotificationPresentationOptionAlert);  
  35. }  
  36. @end  

推送本地通知

[objc] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //使用 UNNotification 本地通知  
  2. +(void)registerNotification:(NSInteger )alerTime{  
  3.       
  4.     // 使用 UNUserNotificationCenter 来管理通知  
  5.     UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];  
  6.       
  7.     //需创建一个包含待通知内容的 UNMutableNotificationContent 对象,注意不是 UNNotificationContent ,此对象为不可变对象。  
  8.     UNMutableNotificationContent* content = [[UNMutableNotificationContent alloc] init];  
  9.     content.title = [NSString localizedUserNotificationStringForKey:@"Hello!" arguments:nil];  
  10.     content.body = [NSString localizedUserNotificationStringForKey:@"Hello_message_body"  
  11.  arguments:nil];  
  12.     content.sound = [UNNotificationSound defaultSound];  
  13.       
  14.     // 在 alertTime 后推送本地推送  
  15.     UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger  
  16.  triggerWithTimeInterval:alerTime repeats:NO];  
  17.   
  18.     UNNotificationRequest* request = [UNNotificationRequest requestWithIdentifier:@"FiveSecond"  
  19.  content:content trigger:trigger];  
  20.       
  21.     //添加推送成功后的处理!  
  22.     [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {  
  23.         UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"本地通知" message:@"成功添加推送" preferredStyle:UIAlertControllerStyleAlert];  
  24.         UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];  
  25.         [alert addAction:cancelAction];  
  26.         [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YES completion:nil];  
  27.     }];  
  28. }  

iOS 10 以前本地推送通知:

[objc] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. + (void)registerLocalNotificationInOldWay:(NSInteger)alertTime {  
  2.     // ios8后,需要添加这个注册,才能得到授权  
  3.     // if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {  
  4.     // UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;  
  5.     // UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type  
  6.     // categories:nil];  
  7.     // [[UIApplication sharedApplication] registerUserNotificationSettings:settings];  
  8.     // // 通知重复提示的单位,可以是天、周、月  
  9.     // }  
  10.       
  11.     UILocalNotification *notification = [[UILocalNotification alloc] init];  
  12.     // 设置触发通知的时间  
  13.     NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];  
  14.     NSLog(@"fireDate=%@",fireDate);  
  15.       
  16.     notification.fireDate = fireDate;  
  17.     // 时区  
  18.     notification.timeZone = [NSTimeZone defaultTimeZone];  
  19.     // 设置重复的间隔  
  20.     notification.repeatInterval = kCFCalendarUnitSecond;  
  21.       
  22.     // 通知内容  
  23.     notification.alertBody =  @"该起床了...";  
  24.     notification.applicationIconBadgeNumber = 1;  
  25.     // 通知被触发时播放的声音  
  26.     notification.soundName = UILocalNotificationDefaultSoundName;  
  27.     // 通知参数  
  28.     NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"开始学习iOS开发了" forKey:@"key"];  
  29.     notification.userInfo = userDict;  
  30.       
  31.     // ios8后,需要添加这个注册,才能得到授权  
  32.     if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {  
  33.         UIUserNotificationType type =  UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;  
  34.         UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type  
  35.                                                                                  categories:nil];  
  36.         [[UIApplication sharedApplication] registerUserNotificationSettings:settings];  
  37.         // 通知重复提示的单位,可以是天、周、月  
  38.         notification.repeatInterval = NSCalendarUnitDay;  
  39.     } else {  
  40.         // 通知重复提示的单位,可以是天、周、月  
  41.         notification.repeatInterval = NSDayCalendarUnit;  
  42.     }  
  43.       
  44.     // 执行通知注册  
  45.     [[UIApplication sharedApplication] scheduleLocalNotification:notification];  
  46. }  


效果图






这篇关于iOS10 添加本地推送(Local Notification)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/598646

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

本地如何快速启动静态服务器

本地快速启动静态服务器 有许多第三方库可以帮助你快速启动一个静态服务器,甚至无需编写代码。通过命令行运行这些库后,它们会自动启动一个服务器并打开指定端口,展示当前目录下的文件内容: 电脑得提前安装NodeJS 1、http-server http-server 是一个轻量级的命令行工具,允许你快速启动一个静态文件服务器。 安装 npm install -g http-server

Android 友盟消息推送集成遇到的问题

友盟消息推送遇到的问题 集成友盟消息推送,步骤根据提供的技术文档接入便可。可是当你集成到项目中去的时候,可能并不是一帆风顺就搞定,因为你项目里面是可能集成了其他的sdk(比如支付宝,微信,七鱼等等三方的sdk)。那么这个时候,再加上友盟的消息推送sdk集成可能就会出现问题。 问题清单 友盟消息推送sdk和支付宝sdk冲突问题 后台配置了消息推送,也显示发送成功,但是手机没有收到消息通知

【20240907问题记录(未解决)】Conda环境问题:SSH与本地环境变量不一致

Conda 允许用户在同一系统上创建多个独立的Python环境。然而,最近遇到了一个奇怪的问题:通过SSH连接到远程Ubuntu机器时,Conda环境变量的行为与本地机器不一致。以下是具体遇到的问题: 1. 问题描述 在本地Ubuntu机器上,我的conda的python版本是3.6,而pip版本可以通过命令 pip --version 查看,显示为: pip 21.3.1 from /ho

我成功在本地打开了Cesium啦!

1首先下载Node.js,我是跟着这篇下载的,https://zhuanlan.zhihu.com/p/77594251,不过这后面的我没弄对Cesium环境配置也没影响。 另外:我看其他推文说,在终端写node -v和npm-v查node和npm的版本可以检测node和npm是否下载成功。 2然后我在CesiumB站官号看的教学视频,跟着下载Cesium源代码。 Cesium基础入门1-零

html 本地存储(localStorage and sessionStorage)

刚刚学习anjularJS和html的项目开发,其中在ui库中使用一种步骤类型的样式,其实就是form表单的ng-if判断显示,样式好用但也伴随着很多的问题,其中一个bug就是刷新会回到第一步,回到第一步的原因是刷新时会从新加载js代码,因为状态没变,所以就会出现无论刷新的哪一步,都会回到第一步,解决该问题的方法就是本地存储。 百度发现有两种存储方式,一个是sessionStorage,还有个

k8s 存储(PV、PVC、SC、本地存储、NFS)

存储持久化相关三个概念: PersistentVolume (PV) 是对具体存储资源的描述,比如NFS、Ceph、GlusterFS等,通过PV可以访问到具体的存储资源;PersistentVolumeClaim (PVC) Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定

Redis应用之Feed流关注推送

我的博客大纲 我的后端学习大纲 -------------------------------------------------------------------------------------------------------------------------------------------------# 3.好友关注: 3.1.关注和取关: a.接口说明:

git如何灵活切换本地账号对应远程github的两个账号

git如何灵活切换本地账号对应远程github的两个账号 问题: 有时候我们会同时维护两个github的账号里面的仓库内容,这时候本地git需要频繁的切换ssh,以方便灵活的与两个账号的仓库可以通信。这篇日记将阐述我是怎么解决这个问题的。1. 第一个账户 生成本地SSH2. 注意 我们要设置第二个账户的 本地 SSH 时3. 两个账号来回切换 问题: 有时候我们会同时维护两个git