目前能实现,在应该关闭的情况下弹出提示框,声音,和上面的横幅。。。
在打开的情况下弹出提示框,,。
但是现在还没有实现,自定义在后台的时候显示的是提示框还是上面的横幅,,,只能用户自己在手机中设置是哪一种形式。。。。等以后我找到了再改博客。。。
用的时候很好用:一个方法就行;
NSDictionary *myDic = [NSDictionarydictionaryWithObject:@"apple"forKey:@"a"];
NSString *myString = @"my body";
[MyLocalNotificationcreatLocalNotification:2.0timeZone:[NSTimeZonesystemTimeZone] userInfor:myDic alertBody:myString];
-------------删除之前的通知的方法---------------------
NSArray *narry=[[UIApplication sharedApplication] scheduledLocalNotifications];
NSUInteger acount=[narry count];
if (acount>0)
{
// 遍历找到对应nfkey和notificationtag的通知
for (int i=0; i<acount; i++)
{
UILocalNotification *myUILocalNotification = [narry objectAtIndex:i];
NSDictionary *userInfo = myUILocalNotification.userInfo;
NSNumber *obj = [userInfo objectForKey:@"nfkey"];
int mytag=[obj intValue];
if (mytag==notificationtag)
{
// 删除本地通知
[[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];
break;
}
----------------------------上面的是删除之前通知的方法----------------------------------------
需要一个方法,,我把它写到一个类里面了。
@interface MyLocalNotification : NSObject
+(void)creatLocalNotification:(NSTimeInterval)timeInterval timeZone:(NSTimeZone*)zone userInfor:(NSDictionary*)userDic alertBody:(NSString*)body;
@end
#import "MyLocalNotification.h"
@implementation MyLocalNotification
+(void)creatLocalNotification:(NSTimeInterval)timeInterval timeZone:(NSTimeZone*)zone userInfor:(NSDictionary*)userDic alertBody:(NSString*)body
{
UILocalNotification *notification=[[UILocalNotificationalloc] init];//新建通知
notification.soundName= UILocalNotificationDefaultSoundName;//声音,可以换成alarm.soundName = @"myMusic.caf"
notification.fireDate=[[NSDate date] dateByAddingTimeInterval:timeInterval];//距现在多久后触发代理方法
notification.timeZone=zone;//设置时区
notification.userInfo=userDic;//在字典用存需要的信息
//去掉下面2行就不会弹出提示框
notification.alertBody=body;//提示信息弹出提示框
notification.alertAction = @"打开"; //提示框按钮
// notification.hasAction = NO; //是否显示额外的按钮,为no时alertAction消失
[[UIApplicationsharedApplication] scheduleLocalNotification:notification];//将新建的消息加到应用消息队列中
// NSArray*arrSchedule=[[UIApplication sharedApplication]scheduledLocalNotifications];//获得所有已注册但未到时提醒的本地消息
// 3.消息接受
// - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
// 这个方法是消息到时间后进此代理,在这里可以设置他弹框或者别的(你想做的操作)
// **注意如果在此程序在后台运行时将不会听你的话。可以在系统设置中进行消息通知设置是让他弹框还是横条提醒随你设置。此时已提醒的消息会显示在手机的消息通知栏中(只要你不手动将此消息取消则他会一直显示在消息通知栏中)
// 其中有一点很重要UIApplicationState state = application.applicationState
// 这个状态分为UIApplicationStateActive(活动在前台)UIApplicationStateBackground(程序进入后台)UIApplicationStateInactive(进入消息通知栏时点击某条消息)
// 4.取消消息
// - (void)cancelLocalNotification:(UILocalNotification *)notification;//取消一条消息
// - (void)cancelAllLocalNotifications;//取消所有已发出的消息(此时消息栏中不会有消息提醒)
}
@end
下面的这几个方法,必须在应用打开进去的情况下才能执行。
// 3.消息接受
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
//如果想让手机运行着这个项目的情况下,必须在下面写弹出框。并且是在打开。如果在后台,也不用。
[ViewControllerFactory showMessageAlert:notification.alertBody];
}
// 这个方法是消息到时间后进此代理,在这里可以设置他弹框或者别的(你想做的操作)
// **注意如果在此程序在后台运行时将不会听你的话。可以在系统设置中进行消息通知设置是让他弹框还是横条提醒随你设置。此时已提醒的消息会显示在手机的消息通知栏中(只要你不手动将此消息取消则他会一直显示在消息通知栏中)
// 其中有一点很重要UIApplicationState state = application.applicationState
// 这个状态分为UIApplicationStateActive(活动在前台)UIApplicationStateBackground(程序进入后台)UIApplicationStateInactive(进入消息通知栏时点击某条消息)
// 4.取消消息
- (void)cancelLocalNotification:(UILocalNotification *)notification{
}//取消一条消息
- (void)cancelAllLocalNotifications{
}//取消所有已发出的消息(此时消息栏中不会有消息提醒)
//下面是我刚看到的,别人写的挺好的。
UILocalNotification *notification=[[UILocalNotification alloc] init];
if (notification!=nil)
{
NSDate *now=[NSDate new];
//notification.fireDate=[now addTimeInterval:period];
notification.fireDate = [now dateByAddingTimeInterval:period];
NSLog(@"%d",period);
notification.timeZone=[NSTimeZone defaultTimeZone];
notification.soundName = @"ping.caf";
//notification.alertBody=@"TIME!";
notification.alertBody = [NSString stringWithFormat:@"@%时间到了!",nameStr];
NSDictionary* info = [NSDictionary dictionaryWithObject:uniqueCodeStr forKey:CODE];
notification.userInfo = info;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
设置的时间到了以后,会自动在桌面弹出一个提示框,点显示后,就可以启动软件。然后在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif)
{
NSLog(@"Recieved Notification %@",localNotif);
NSDictionary* infoDic = localNotif.userInfo;
NSLog(@"userInfo description=%@",[infoDic description]);
NSString* codeStr = [infoDic objectForKey:CODE];
}
}里,对lanchOptions进行处理,找到它里面的信息,就可以拿到设置时的需要处理的东西,就可以继续操作了。
如果此时你的客户端 软件仍在打开,则会调用
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif
{
}
一样的处理方法。
相关推荐
这个"iOS本地通知代码-UILocalNotification_Demo"压缩包文件应该包含一个示例项目,演示了如何在iOS应用中设置和使用本地通知。 本地通知的主要用途是提升用户体验,例如提醒用户有新的消息、事件或者需要完成的...
这篇文章将深入探讨iOS本地通知的基本概念、核心属性以及如何创建和配置本地通知。 首先,我们来看一下本地通知的主要优势。本地通知的出现避免了应用程序为了实时更新信息而不断轮询(Pooling),这种行为会消耗...
1. **本地通知**:与远程推送通知(通过Apple Push Notification Service, APNS)不同,本地通知是由应用本身在设备上创建和触发的,无需通过网络连接。它们在特定的时间、地点或事件发生时触发,如设定的闹钟或日程...
在iOS开发中,`UILocalNotification`是苹果提供的一个关键框架,用于实现应用程序在特定时间或事件发生时向用户发送本地通知。这个框架在iOS 8之后经历了一些变化,因此对于开发者来说,理解这些更新至关重要,以...
总的来说,`ZBLocalNotification`这个封装类简化了iOS本地推送的使用,让开发者能快速创建、修改和管理本地通知,同时考虑到了不同iOS版本的兼容性。在实际项目中,利用此类可以提高代码的可读性和可维护性,使得...
iOS本地和推送通知编程指南是一份由Apple公司编写的官方文档,旨在指导开发者如何在iOS平台上实现和处理本地通知与推送通知。本地通知是应用程序在不需要服务器端支持的情况下,仅在用户的设备上触发的通知;而推送...
但在iOS10中,苹果引入了UNUserNotificationCenter,这个新框架提供了对本地和远程通知的统一管理,包括请求权限、创建通知、调度通知等操作。例如,你可以通过`UNUserNotificationCenter.current()....
一个本地通知对象包含了以下主要属性: 1. **fireDate**: 这个属性定义了通知触发的时间,通常我们会设置为未来的一个日期和时间,以便在指定时刻提醒用户。 2. **alertBody**: 这是当通知出现时显示的主要文本...
调度本地通知,需要创建`UILocalNotification`对象,设置触发的时间、日期和相关信息,然后将通知调度给操作系统。对于推送通知,应用程序在启动时需要注册远程通知,并在收到通知时进行相应的处理。 ### 苹果推送...
在iOS平台上,本地通知(Local Notification)是一种强大的功能,它允许应用在特定时间或特定条件下向用户发送提醒,即使应用不在前台运行也能实现。在这个"本地通知小例子"中,我们将探讨如何在iOS应用中集成和使用...
首先,我们先要明白一个概念,这里的本地通知是UILocalNotification类,和系统的NSNotificationCenter通知中心是完全不同的概念。 一、我们可以通过本地通知做什么 通知,实际上是由IOS系统管理的一个功能,比如某些...
### iOS本地推送与远程推送详解 #### 一、概述 在iOS开发中,推送通知是一种非常重要的功能,它能够在应用程序不在前台运行时向用户发送消息提醒。根据推送方式的不同,可以将其分为本地推送和远程推送两种类型。...
总结,`UILocalNotification`是iOS中实现本地通知的关键工具,允许开发者在特定条件下向用户发送提醒,提升用户体验。理解其工作原理和配置方法对于构建功能完善的iOS应用至关重要。随着iOS系统的更新,如iOS 10引入...
iOS本地推送是一种无需服务器参与,应用程序在本地触发通知的功能,常用于提醒用户某些特定时间或事件的发生。在iOS中,我们使用`UILocalNotification`类来实现本地推送。以下是对标题和描述中涉及的知识点的详细...
总之,"Alarm-闹钟"是一个利用`UILocalNotification`实现的本地提醒应用,它展示了如何在iOS平台上创建和管理本地通知,以及如何结合用户界面提供实用的闹钟功能。通过深入理解和运用这些知识点,开发者可以构建出更...
首先,`UILocalNotification`是iOS SDK中的一个类,用于设置和管理本地通知。它包含诸如触发时间、重复频率、声音、显示的标题和消息等内容。要创建一个本地通知,你需要实例化一个`UILocalNotification`对象并设置...
在iOS 10中,Apple引入了全新的UserNotifications Framework,以替换之前的UILocalNotification,以提供更强大且灵活的通知服务。这个框架不仅包含了本地推送(Local Notifications),还支持远程推送(Remote ...
如果希望实现每天固定时间(例如每天下午4点)推送本地通知,我们可以这样设置`fireDate`和`repeatInterval`: ```swift let calendar = Calendar.current let components = DateComponents(year: 1970, month: 1, ...