`

iOS之Local Notification(本地通知)·

 
阅读更多
Local Notification的作用
Local Notification(本地通知) :是根据本机状态做出的通知行为,因此,凡是仅需依赖本机状态即可判断需要发出通知的行为都可以或者说应该使用Local Notification来处理。比方说:iBeacon中进入了某个Beacon region,或者说自定义的一些定时提醒等。

构建Local Notification
在iOS中,构建LocalNotification非常简单,只需要掌握好NSLocalNotification这个类就够用了,基本步骤如下:

1. 创建并初始化 UILocalNotification对象
2. 配置该对象的属性:

* 触发时间(fireDate,timeZone,repeatInterval,repeatCalendar),如果你想根据时间来触发。
* 通知行为(alertAction,hasAction),定义查看通知的操作名。
* 触发通知时的启动画面(alertLaunchImage)
* 通知的正文内容(alertBody),
* 通知的背景声(soundName)
* 通知消息数的展示(applicationIconBadgeNumber),就是强迫症们最讨厌的App图标上左上角的那个小数字
* 其它(userInfo),可以给通知绑定一些处理通知时需要的额外信息。

3.展示通知,展示通知有两个方式:

* - (void)scheduleLocalNotification:(UILocalNotification *)notification:根据触发时间的配置展示通知消息,
* - (void)presentLocalNotificationNow:(UILocalNotification *)notification:立即发送通知到本机

栗子:
- (void)showNotificationWithAction:(NSString *)action andContent:(NSString *)content
{
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.alertBody = content;
    notification.alertAction = action;
    notification.soundName = UILocalNotificationDefaultSoundName;
    [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}

- (void)scheduleNotificationWithItem:(ToDoItem *)item interval:(int)minutesBefore {
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *dateComps = [[NSDateComponents alloc] init];
    [dateComps setDay:item.day];
    [dateComps setMonth:item.month];
    [dateComps setYear:item.year];
    [dateComps setHour:item.hour];
    [dateComps setMinute:item.minute];
    NSDate *itemDate = [calendar dateFromComponents:dateComps];
 
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil)
        return;
    localNotif.fireDate = [itemDate dateByAddingTimeIntervalInterval:-(minutesBefore*60)];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
 
    localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ in %i minutes.", nil),
         item.eventName, minutesBefore];
    localNotif.alertAction = NSLocalizedString(@"View Details", nil);
 
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 1;
 
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:item.eventName forKey:ToDoItemKey];
    localNotif.userInfo = infoDict;
 
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}


处理Local Notification

在处理本地通知时,我们需要考虑三种情况:

1. App没有启动,

这种情况下,当点击通知时,会启动App,而在App中,开发人员可以通过实现*AppDelegate中的方法:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,然后从lauchOptions中获取App启动的原因,若是因为本地通知,则可以App启动时对App做对应的操作,比方说跳转到某个画面等等。栗子:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"Start App....");
    ....
    UILocalNotification *localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if ([self isWelcomeNotification:localNotification]) {
        NSLog(@"start with welcome notification");
        [self.mainViewController showOfficeIntroduction];
    }
    return YES;
}


2. App运行在后台
3. App运行在前台

上面的2种情况的处理基本一致, 不同点只有当运行再后台的时候,会有弹窗提示用户另外一个App有通知,对于本地通知单的处理都是通过*AppDelegate的方法:- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification来处理的。 栗子:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    if ([self isWelcomeNotification:notification]) {
       [self.mainViewController showOfficeIntroduction]; 
    }if ([self isCustomerDataNotification:notification]) {
        [self.mainViewController showCustomerDataIntroduction];
    }
}

3
0
分享到:
评论

相关推荐

    LocalNotification本地通知

    LocalNotification,也称为本地推送通知,是iOS、Android等移动操作系统中的一项重要功能,它允许应用在用户不直接与应用交互时(例如,应用在后台或完全关闭时)向用户发送提醒。本地通知通常用于模拟像微信这样的...

    ios5 Notification示例

    首先,我们要了解iOS中的Notification分为本地通知(Local Notification)和远程通知(Remote Notification,也称为推送通知)。在“ios5 Notification示例”中,我们主要关注的是本地通知,因为它主要涉及应用内部...

    LocalNotification本地推送

    在iOS应用开发中,本地推送(Local Notification)是一种重要的用户交互手段,它允许开发者在特定的时间或应用状态触发提醒,即使应用不在前台运行也能触达用户。本教程将深入讲解如何使用`UILocalNotification`来...

    Plugin.LocalNotification:本地通知插件提供了一种显示来自Xamarin Forms应用程序的本地通知的方法

    本地通知插件提供了一种显示来自Xamarin.Forms应用程序的本地通知的方法。 建立 可在NuGet上使用的Plugin.LocalNotification : : Plugin.LocalNotification 安装到特定于平台的项目(iOS / Android)和应用程序...

    iOS10添加本地推送(Local Notification)实例

    前言 iOS 10 中废弃了 ...本文主要查看了 iOS 10 的相关文档,整理出了在 iOS 10 下的本地推送通知,由于都是代码,就不多做讲解,直接看代码及注释,有问题留言讨论哦。 新的推送注册机制 注册通知( Appdele

    swift-iOS10本地通知封装

    在iOS开发中,本地通知(Local Notification)是应用在用户不活跃时与用户进行交互的重要方式,尤其在iOS10及以后的版本中,苹果引入了全新的UserNotifications框架,为本地通知提供了更强大的功能和更灵活的配置。...

    ios-简单的本地通知.zip

    在iOS开发中,本地通知(Local Notification)是一种重要的系统功能,它允许应用在特定时间或者在用户不直接与应用交互时向用户发送消息。这个"ios-简单的本地通知.zip"文件很可能包含了一个简单的示例,教开发者...

    处理iOS 本地通知(local notification) 兼容 iOS 9及以上系统版本。.zip

    操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...

    ios 闹钟的总结-------也就是本地通知。

    在iOS开发中,本地通知(Local Notification)是应用在用户不活跃时向用户发送消息的一种方式,它允许应用程序在特定时间或触发特定事件时提醒用户。本地通知与远程通知(Remote Notification)不同,后者通常涉及...

    Phonegap-LocalNotification-master

    `Phonegap-LocalNotification-master` 是一个针对 PhoneGap 应用程序的本地通知插件。PhoneGap(现更名为 Apache Cordova)是一个允许开发者使用 HTML、CSS 和 JavaScript 开发跨平台移动应用程序的框架。通过该插件...

    ios-本地通知.zip

    在iOS开发中,本地通知(Local Notification)是应用在用户不活跃时向用户发送消息的一种方式,无需通过网络连接即可工作。本地通知可以是时间触发的,比如定时提醒,或者与特定事件相关的,如到达地理位置时提醒。...

    iOS本地通知代码-UILocalNotification_Demo

    在iOS开发中,本地通知(UILocalNotification)是一种重要的特性,它允许应用在特定时间或者在用户不直接与应用交互时向用户发送消息。这个"iOS本地通知代码-UILocalNotification_Demo"压缩包文件应该包含一个示例...

    phonegap local-notifications插件应用实例含(android、ios、windows)

    在PhoneGap应用中,`cordova-plugin-local-notifications`是一个非常重要的插件,它使得开发者能够实现本地通知功能,这些通知可以在用户不直接与应用交互时触发,比如当应用在后台运行或者被关闭时。本实例将详细...

    ios本地和远程推送通知编程指南

    本地推送通知(Local Notification)是iOS应用开发中的一个关键功能,它允许应用程序在没有服务器介入的情况下,向用户发送提醒或警报。这种通知可以设置在特定的时间触发,例如用来提醒用户即将进行的会议或任务。...

    本地通知简单的Demo

    本地通知是iOS应用中一种重要的用户交互方式,它允许应用程序在特定时间或事件发生时向用户发送消息,即使应用没有在前台运行。本教程将通过一个简单的Demo来讲解如何实现本地通知,适合初学者入门。这个Demo适用于...

    localNotification:一个简单的cordova localnotification插件

    标题中的“localNotification”指的是Cordova插件LocalNotification,它是一个用于在移动设备上实现本地通知功能的工具。Cordova是一种流行的开源框架,允许开发者使用Web技术(如HTML、CSS和JavaScript)构建原生的...

    LocalNotification

    在iOS和Android应用开发中,"本地通知"(Local Notification)是一种重要的用户交互方式,它能够在应用程序不处于前台运行状态时向用户发送提醒。本地通知通常用于模拟类似微信的新消息提示,比如当应用接收到新的...

    iOS Notification反向传值

    Notification分为本地通知(Local Notification)和远程通知(Remote Notification,常用于推送通知),但在这种场景下,我们主要讨论的是本地通知。 反向传值的关键步骤如下: 1. **注册观察者**:在A界面中,...

Global site tag (gtag.js) - Google Analytics