博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
本地通知之闹钟
阅读量:6689 次
发布时间:2019-06-25

本文共 2099 字,大约阅读时间需要 6 分钟。

  在现阶的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    noti.alertBody=@"该起床了";        //设置action    noti.alertAction=@"解锁";        //设置闹铃    noti.soundName=@"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)

 

作者:
出处:
 
本文版权归和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

转载于:https://www.cnblogs.com/jerehedu/p/4736959.html

你可能感兴趣的文章
【技术贴】三星Note8 N5100实用教程,关闭相机快门声,增加浏览器退出按钮。...
查看>>
C# 调试程序时如何输入命令行参数
查看>>
如何成为强大的程序员?
查看>>
C#获取全部目录和文件
查看>>
跨站请求伪造CSRF
查看>>
关于同一用户不能同时登录问题的探讨(2/2)
查看>>
IE bug之location.href没有referer
查看>>
VB将MSHFlexGrid数据导出到Excel文件通用功能
查看>>
Opengl绘制我们的小屋(三)纹理绘制
查看>>
session 防止表单重复提交
查看>>
Windows Phone开发(1):概论
查看>>
如何修改博客样式
查看>>
C#语法之泛型
查看>>
ArcGIS API for Silverlight中加载Google地形图(瓦片图)
查看>>
如何生成excel文件作为图像识别结果
查看>>
Liferay-Activiti 功能介绍 (新版Liferay7基本特性)
查看>>
ORACLE删除当前用户下所有的表的方法
查看>>
html php 重定向 跳转 刷新
查看>>
Dom4j解析xml
查看>>
佛祖保佑,永无bug
查看>>