美文网首页
IOS 处理本地推送,设置一个闹钟功能

IOS 处理本地推送,设置一个闹钟功能

作者: 何康老鬼 | 来源:发表于2018-02-08 18:23 被阅读567次

最近有一个需求,需要做一个闹钟提示的功能,也就是点击按钮,设置一段时间后可以铃声提示用户时间到了。

1.刚开始是用的倒计时,也就是在按钮那个界面,得到Appdelegate的设置的代理方法,来进行倒计时,时间为0后,进行背景音乐的播放,当时这种方法已经写好了。但是需求需要的时间过长,几个小时,我们都知道苹果会在后台停留10分钟,以后就会被kill,所以这个方法行不通。只能用其他的方法。
2.用本地推送来做,代码如下:

//设置本地推送
UILocalNotification *notification = [[UILocalNotification alloc] init];
    // 设置触发通知的时间. //alertTime间隔时间
    NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];
    NSLog(@"fireDate=%@",fireDate);
    
    notification.fireDate = fireDate;
    // 时区
    notification.timeZone = [NSTimeZone defaultTimeZone];
    // 设置重复的间隔
    notification.repeatInterval = kCFCalendarUnitSecond;
    
    // 通知内容
    notification.alertBody =  @"⏰大茶埠喊您蹭茶啦";
    notification.applicationIconBadgeNumber = 1;
    // 通知被触发时播放的声音
    notification.soundName = @"三星优美闹钟铃声.caf";
    // 通知参数
    NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"大茶埠喊您蹭茶啦" forKey:@"key"];
    notification.userInfo = userDict;
    
    // ios8后,需要添加这个注册,才能得到授权
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationType type =  UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type
                                                                                 categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        // 通知重复提示的单位,可以是天、周、月
        notification.repeatInterval = 0;
    } else {
        // 通知重复提示的单位,可以是天、周、月
        notification.repeatInterval = 0;
    }
    
    // 执行通知注册
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
//设置取消本地推送
 // 获取所有本地通知数组
    NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;
    
    for (UILocalNotification *notification in localNotifications) {
        NSDictionary *userInfo = notification.userInfo;
        if (userInfo) {
            // 根据设置通知参数时指定的key来获取通知参数,这个key要和你设置的保持一致
            NSString *info = userInfo[key];
            
            // 如果找到需要取消的通知,则取消
            if (info != nil) {
                [[UIApplication sharedApplication] cancelLocalNotification:notification];
                break;
            }
        }
    }

相关文章

  • IOS 处理本地推送,设置一个闹钟功能

    最近有一个需求,需要做一个闹钟提示的功能,也就是点击按钮,设置一段时间后可以铃声提示用户时间到了。 1.刚开始是用...

  • 本地推送闹钟功能实现

    本地推送闹钟功能实现 在ios10下使用UserNotifications用本地推送实现闹钟功能,只是实现了简单的...

  • iOS 本地推送闹钟功能实现

    在AppDelegate中导入 import

  • 转的推送功能

    iOS的推送功能包括:远程推送以及本地推送,从iOS4到目前的iOS10,推送功能经历了多个版本的修改。现在做一个...

  • Unity在iOS的本地推送功能

    Babybus-u3d技术交流-Unity在iOS的本地推送功能 Unity内部封装了在iOS下的本地推送功能,可...

  • 推送

    一、推送 1.本地推送 (1)iOS8.0+ (2)设置附加行为选项 2.远程推送

  • iOS 添加本地推送

    iOS中的通知推送分为:本地和远程两种。本地推送主要用于日历闹钟等提醒类应用中 1、启动通知创建一个本地通知: 2...

  • iOS本地通知

    众所周知,iOS中的通知推送分为:本地和远程两种。本地推送主要用于日历闹钟等提醒类应用中,APNS远程推送以后专门...

  • Andriod 应用进行定时提醒任务设计

    前言 APP内设置提醒是大多数抢购、秒杀都会涉及到的一个功能应用,ios 应用可以获取系统权限进行本地推送,相对简...

  • iOS本地推送

    iOS本地推送 第一步:创建本地推送 // 创建一个本地推送 UILocalNotifica...

网友评论

      本文标题:IOS 处理本地推送,设置一个闹钟功能

      本文链接:https://www.haomeiwen.com/subject/taottftx.html