本地通知之闹钟

  在现阶的APP中关于消息的处理需求越来越大,系统需要将一下消息以音频或者文字的形式提示用户,这里便用到推送,推送消息主要有本地和远程推送,今天我们先研究一下简单的本地通知,下面以闹钟为例子。

1、我们首先要注册通知

  UIApplication * application=[UIApplication sharedApplication];

    //如果当前应用程序没有注册本地通知,需要注册
    if([application currentUserNotificationSettings].types==UIUserNotificationTypeNone){

        //设置提示支持的提示方式
//        UIUserNotificationTypeBadge   提示图标
//        UIUserNotificationTypeSound   提示声音
//        UIUserNotificationTypeAlert   提示弹框
        UIUserNotificationSettings * setting=[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];
        [application registerUserNotificationSettings:setting];

}

    //删除之前的重复通知
    [application cancelAllLocalNotifications];

通知注册完成之后可以在设置里面进行查看,同时也可以删除。如图:

2、设置通知

#pragma mark - 添加本地通知
- (void) _addLocalNotification:(NSDate *) date{

    UILocalNotification * noti=[[UILocalNotification alloc] init];
    //设置开始时间
    noti.fireDate=date;

    //设置body
    [email protected]"该起床了";

    //设置action
    [email protected]"解锁";

    //设置闹铃
    [email protected]"4195.mp3";

#warning 注册完之后如果不删除,下次会继续存在,即使从模拟器卸载掉也会保留
    //注册通知
    [[UIApplication sharedApplication] scheduleLocalNotification:noti];

}

这样就会在设置的时间内闹钟响起来,如图:

3、这样闹钟的功能基本实现,但是还有一个问题,因为如果当前程序是打开的会导致闹钟不会响起来,那我们如何解决问题呢。此时我们需要借助播放器来解决

   @interface AppDelegate ()
{
    //定义播放器播放音乐
    AVAudioPlayer * player;
    //用来判断是不是从通知窗口打开
    BOOL isFromNotification;
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{

    //如果是从通知窗口进来的则不需要播放音频
    if (isFromNotification) {
        return;
    }

    //初始化音乐播放音乐
    NSURL * url=[[NSBundle mainBundle] URLForResource:@"4195.mp3" withExtension:nil];
    player=[[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    player.numberOfLoops=0;

    [player prepareToPlay];
    [player play];

}

这样便大功告成了。

  想要了解更多内容的小伙伴,可以点击查看源码,亲自运行测试。

  疑问咨询或技术交流,请加入官方QQ群: (452379712)

作者:杰瑞教育

出处:http://blog.csdn.net/jerehedu/

本文版权归烟台杰瑞教育科技有限公司和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-30 04:11:32

本地通知之闹钟的相关文章

闹钟功能实现+本地通知+音频播放

问题描述:通过picker设置时间,到了设定好的时间 闹钟响起,并弹出提示框,点击确定,停止播放音频.如果设置好了闹钟,没有停在该页面,而是返回了手机主屏幕或是手机锁屏,当到了闹钟设定的时间,会弹出消息通知.(如果设定的时间是已经过去的时间,页面不会有响应,直到设置正确的时间为止.) 效果图如下:            具体代码如下: NaoZhongViewController.m文件 #import "NaoZhongViewController.h" #import <AV

iOS开发中UILocalNotification本地通知实现简单的提醒功能

这段时间项目要求做一个类似的闹钟提醒功能,对通知不太熟悉的我,决定先用到xcode自带的本地通知试试,最终成功的实现了功能,特整理分享下. 它的表现特点: app关闭的时候也能接收和显示通知. app处于后台的时候能接收通知也能显示. app处于前台的时候能接收,但不能显示,但是会走应用程序delegate中的方法 具体的创建方法: ->创建一个本地通知对象UILocalNotification ->设置fireDate,AlertBody,AlertAction,soundName,appl

iOS(本地通知与远程通知)

iOS 推送通知有两种:本地推送.远程推送. 本地推送 :  在不需要联网的情况下,由APP发出推送,常用于某一时刻的通知,如闹钟.本地通送有局限性在于当APP处于后台或者退出时就无法发出通知. 远程推送:   APNs和第三方推送,第三方推送最终也需要APNs转发, 本地推送实现 注册通知: float sysVer = [[UIDevice currentDevice].systemVersion floatValue]; if (sysVer < 10) { //设置通知类型 弹框.脚标.

iOS创建本地通知和删除对应的通知,工作日通知

本文的代码主要是:创建本地通知,删除对应的本地通知,创建工作日闹钟 直接上代码: // // ViewController.m // LocalNSNotification // // Created by wusiping on 16/1/27. // Copyright © 2016年 wusiping. All rights reserved. // #import "ViewController.h" #define LOCAL_NOTIFY_SCHEDULE_ID @&quo

iOS开发——本地通知

本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知.创建一个本地通知通常分为以下几个步骤: 创建UILocalNotification. 设置处理通知的时间fireDate. 配置通知的内容:通知主体.通知声音.图标数字等. 配置通知传递的自定义数据参数userInfo(这一步可选). 调用通知,可以使用scheduleLocalNotification:按计划调度一个通知,也可以使用pr

iOS开发---本地通知(UILocalNotification)

iOS开发---本地通知(UILocalNotification) 标签: ios本地通知 2016-07-12 10:28 1437人阅读 评论(0) 收藏 举报  分类: iOS(25)  版权声明:本文为博主原创文章,转载请注明出处. iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知. 本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知.创建一

IOS 本地通知

在苹果的Mac OSX 和IOS开发的API中有三个不同的"通知",包括:广播通知,本地通知和推送通知. 本地通知只是应用所在设备上给用户通知,而推送通知是远程通知,他是由远程服务器推送过来的 本节主要是讲的本地通知,虽然本地通知并没有任何的网络通信,但是他在编程方面与后面要介绍的推送通知非常相似.我们的例子中有三个按钮,"计划通知开始"按钮开启计划通知,他在10秒钟后到达."停止所有计划通知"按钮式停止和取消已经开始的计划通知."立刻

iOS 消息推送及本地通知,原理解析

在此整理了一些前辈的思路,根据自己对问题的理解及相似方面的比较做了这篇笔记,本文并未详细讲解,只是根据自己提出问题进行一个解决,希望能对大家有些帮助. 1. deviceToken与UUID,UDID的区别 deviceToken : A token that identifies the device to APS. The token is an opaque data type because that is the form that the provider needs to subm

本地通知和推送通知

关于本地通知: 在使用通知之前必须注册通知类型,如果用户不允许应用程序发送通知,则以后就无法发送通知,除非用户手动到iOS设置中打开通知. 本地通知是有操作系统统一调度的,只有在应用退出到后台或者关闭才能收到通知.(注意:这一点对于后面的推送通知也是完全适用的. ) 通知的声音是由iOS系统播放的,格式必须是Linear PCM.MA4(IMA/ADPCM).µLaw.aLaw中的一种,并且播放时间必须在30s内,否则将被系统声音替换,同时自定义声音文件必须放到main boundle中. 本地