Oc 本地推送
来源:互联网 发布:linux视频服务器搭建 编辑:程序博客网 时间:2024/06/05 05:57
为加强应用程序与用户的黏度,可以不管应用在前台还是后台运行,对用户进行提醒,提醒用户即将要做的事情
作为iOS开发者,如何在iOS应用中实现该功能?iOS提供了哪几种推送方式?
iOS使用NSNotificationCenter实现观察者模式,允许应用的不同对象之间以松耦合的方式进行通信
1.iOS提供了本地通知,可以定时向用户发送提示消息
2.iOS使用远程通知,可以将服务器数据发送给iOS客户端
10.4.1实例-本地通知
我们将用一个demo来实现一个简单的本地通知
首先设置UIApplication的全局变量和初始化
@interface ViewController (){ UIApplication *app;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. app = [UIApplication sharedApplication];}
然后在switch 按钮方法里写
- (IBAction)turn:(UISwitch *)sender{ if (sender.on) { if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) { [[UIApplication sharedApplication]registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]]; } UILocalNotification *notification = [[UILocalNotification alloc]init]; notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; notification.timeZone = [NSTimeZone defaultTimeZone]; notification.repeatInterval = kCFCalendarUnitDay; notification.soundName = @".mp3"; notification.alertTitle = @"镇魂街"; notification.alertBody = @"好几天没登陆了"; notification.applicationIconBadgeNumber = 1; NSDictionary *info = @{@"lz":@"key"}; notification.userInfo = info; [app scheduleLocalNotification:notification]; } else { NSArray *localArray = [app scheduledLocalNotifications]; if (localArray) { for (UILocalNotification *noti in localArray) { NSDictionary *dict = noti.userInfo; if (dict) { // 如果找到要取消的通知 NSString *inKey = [dict objectForKey:@"lz"]; if ([inKey isEqualToString:@"lz"]) { // 取消调度该通知 [app cancelLocalNotification:noti]; // ② } } } } }}
第一个判断是判断switch 在打开时和关闭时
在switch打开时的第二个判断是因为版本的问题是否能回应registerUserNotificationSettings方法
// 创建一个本地通知
UILocalNotification *notification = [[UILocalNotification alloc]init];
// 设置通知的触发时间
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
// 设置通知的时区
notification.timeZone = [NSTimeZone defaultTimeZone];
// 设置通知的重复发送的事件间隔
notification.repeatInterval = kCFCalendarUnitMinute;
// 设置通知的声音
notification.soundName = @”.mp3”;
//通知标题
notification.alertTitle=@”镇魂街”;
notification.alertBody = @”好几天没登陆了”;
// 设置显示在应用程序上红色徽标中的数字
notification.applicationIconBadgeNumber = 1;
// 设置userinfo,用于携带额外的附加信息。
NSDictionary *info = @{@”lz”: @”key”};
notification.userInfo = info;
// 调度通知
[app scheduleLocalNotification:notification];
else 里
// 获取所有处于调度中本地通知数组
NSArray *localArray = [app scheduledLocalNotifications];
用遍历方法遍历通知数组
我们还要在AppDelegate里写
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{ application.applicationIconBadgeNumber = 0; [[[UIAlertView alloc] initWithTitle:@"收到通知" message:notification.alertBody delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] show];}- (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. application.applicationIconBadgeNumber = 0;}
- Oc 本地推送
- iOS-OC-本地推送和取消本地推送服务
- [oc实战练习三]本地推送练习
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 本地推送
- 从HPC到AI,看联想的进阶之路
- string与十六进制byte互转
- Dockerfile生成镜像并实现应用自启
- FEB开发指南
- 面试必备:ArrayMap源码解析
- Oc 本地推送
- Kylin初涉
- QTP11的安装
- 编写一个程序,要求接收一个数字,程序会将这个数字以二进制方式打印,例如:数字10 , 以1010的方式打印出来
- 侧滑
- MVP注册用户
- SSL2785 2017年10月23日提高组T1 询问 (二分+并查集)
- 13.线程安全与锁优化
- C语言中%d %.2d %2d %02d的区别