`

ios通知机制

    博客分类:
  • ios
阅读更多
  ios通知机制是ios消息传递机制的一部分,关于ios消息传递机制有篇不错的博文,http://www.cocoachina.com/applenews/devnews/2013/1216/7543.html
[/size]
   IOS中还有一类产生事件的功能,那就是通知。通过通知,可以在一定的条件下触发响应的事件。类似于Android中的广播机制(Broadcase Receiver),接收到通知(广播)后,便可执行指定的方法。

  通过NSNotificationCenter获取通知对象,注册并使用通知。

   
  在iOS下应用分为两种不同的Notification种类,本地和远程。
  1.本地UILocalNotificaiton的使用
 
  本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了。

  本地Notification所使用的对象是UILocalNotification,UILocalNotification的属性涵盖了所有处理Notification需要的内容。UILocalNotification的 属性有fireDate、timeZone、repeatInterval、repeatCalendar、alertBody、 alertAction、hasAction、alertLaunchImage、applicationIconBadgeNumber、 soundName和userInfo。


  Demo:
 
//发送通知

    UILocalNotification *notification=[[UILocalNotification alloc] init];   

    if (notification!=nil) { 

        NSDate *now=[NSDate new]; 

        notification.fireDate=[now dateByAddingTimeInterval:10];//10秒后通知

        notification.repeatInterval=0;//循环次数,kCFCalendarUnitWeekday一周一次

        notification.timeZone=[NSTimeZone defaultTimeZone];

        notification.applicationIconBadgeNumber=1; //应用的红色数字 

        notification.soundName= UILocalNotificationDefaultSoundName;//声音,可以换成alarm.soundName = @"myMusic.caf" 

        //去掉下面2行就不会弹出提示框

         notification.alertBody=@"通知内容";//提示信息 弹出提示框

         notification.alertAction = @"打开";  //提示框按钮 

        //notification.hasAction = NO; //是否显示额外的按钮,为no时alertAction消失



       // NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"];

        //notification.userInfo = infoDict; //添加额外的信息

        

        [[UIApplication sharedApplication] scheduleLocalNotification:notification];      

    }

    [notification release];


   取消通知
  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
    // Override point for customization after application launch.
    application.applicationIconBadgeNumber = 0;
    // Add the view controller's view to the window and display.
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    return YES;
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    //点击提示框的打开
    application.applicationIconBadgeNumber = 0;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    //当程序还在后天运行
    application.applicationIconBadgeNumber = 0;
}


  登记UILocalNotification

在设置完UILocalNotification对象之后,应用需要在系统Notification处理队列中登记已设置完的UILocalNotification对象。登记UILocalNotification * localNotification的方式为:

   [[UIApplication sharedApplication]  scheduleLocalNotification:localNotification];

在有些时候,应用可能需要直接激发一个Notification而不是等一段时间在激发,应用可以以下的方式直接触发已设好的Notification:

   [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

  处理UILocalNotification

在提醒框动作按钮被点击后,应用开始运行时,可以在-(BOOL)application:didFinishLaunchingWithOptions:这个Application delegate方法中处理。可以通过以下方式来加载为最近未处理的Notification:

   UILocalNotification * localNotif=[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

如果应用正在运行时,可以通过覆盖在Application Delegate中的方法-(void)application:didReceiveLocalNotification:来处理Notification。作为方法的第二个参数为UILocalNotification对象,只需处理对象携带的userInfo来处理响应的动作。
取消UILocalNotification

可以使用以下两个方式来取消一个已经登记的Notification,第一个方式可以直接取消一个指定的Notification,第二个方式将会把该应用已登记的Notification一起取消

   [[UIApplication sharedApplication] cancelLocalNotification:localNotification];

   [[UIApplication sharedApplication] cancelAllLocalNotification];


   2.NSNotificationCenter消息通信机制介绍
   ---是专门供程序中不同类间的消息通信而设置的

   注册通知:即要在什么地方接受消息

               [[NSNotificationCenter defaultCenter]  addObserver:self selector:@selector(mytest:) name:@" mytest" object:nil];

      参数介绍:

          addObserver: 观察者,即在什么地方接收通知;

        selector: 收到通知后调用何种方法;

        name: 通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。

   发送通知:
   调用观察者处的方法。

           [[NSNotificationCenter defaultCenter] postNotificationName:@"mytest" object:searchFriendArray];

          参数:

         postNotificationName:通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。

                 object:传递的参数

   注册方法的写法:

- (void) mytest:(NSNotification*) notification

{

   id obj = [notification object];//获取到传递的对象

}


 
附:注册键盘升启关闭消息

    //键盘升起 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    //键盘降下
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

  
   远程通知:http://www.cocoachina.com/newbie/tutorial/2012/0104/3827.html





























分享到:
评论

相关推荐

    iOS学习——通知机制-代码

    在iOS开发中,通知机制(Notification)是一种非常重要的组件,用于在应用程序的不同组件之间传递信息。这个机制允许对象发送消息给其他对象,而无需知道接收者的具体身份,从而实现了松耦合的设计。本文将深入探讨...

    swift-iOS缓存通知机制

    Swift-iOS缓存通知机制是iOS应用程序中一种重要的性能优化技术,它允许应用程序在数据缓存发生改变时接收到相应的通知,以便及时更新界面或执行其他相关操作。这个机制尤其适用于处理大量数据或者频繁访问的数据,如...

    iOS利用通知模式传值

    在这个主题下,我们将深入探讨iOS的通知机制及其在传值中的应用。 **通知中心(NotificationCenter)** iOS的通知中心是Foundation框架的一部分,它允许对象发布通知,其他对象可以注册接收这些通知,从而实现解耦...

    swift-模仿iPhone本地通知自定义写了一个本地通知动画

    在iOS应用开发中,Swift语言为我们提供了丰富的功能来创建用户友好的交互体验。...通过学习这个项目,开发者不仅可以提升自己的Swift编程技能,还能深入理解iOS通知机制,为自己的应用增添独特的交互元素。

    iOS通知消息

    总结来说,iOS的通知机制提供了丰富的功能,包括本地和远程通知,以及通过`userInfo`传递数据。正确地使用这些功能,可以极大地提升用户体验,同时使应用在后台也能与用户保持互动。在实际开发中,还需要考虑通知的...

    ios 推送通知

    在iOS平台上,推送通知是应用开发者与用户保持互动的重要手段,它允许应用程序在不实际运行时向...通过学习其中的SDK源码和开发文档,开发者不仅可以学会如何使用极光推送,还能进一步提升对APNs和推送通知机制的理解。

    PushMeBaby ios推送通知测试工具

    首先,我们来深入了解一下iOS的推送通知机制。苹果的推送通知服务(APNs,Apple Push Notification service)是实现这一功能的关键。当开发者想要向用户的iOS设备发送推送通知时,他们需要配置一个aps_developer_...

    iOS开发之通知NSNotificationDemo

    在这个“iOS开发之通知NSNotificationDemo”中,开发者创建了一个简单的示例来演示如何使用NSNotification。 首先,我们要理解NSNotification的基本结构。NSNotification有两个核心部分:NSNotification对象和...

    iOS中的通知机制

    iOS中的通知机制是一种基于观察者模式的通信方式,它允许应用程序的不同组件之间进行异步通信,而无需直接耦合。观察者模式的核心是发布者(poster)和订阅者(observer)之间的关系,其中发布者发布事件或消息,而...

    IOS委托机制详解及代码

    这样,通过委托机制,`PlayersViewController`就能通知`PlayerDetailViewController`显示新的球员详情,同时保持了两者之间的解耦。 总结来说,iOS中的委托机制提供了一种灵活的通信方式,使得对象可以相互协作,...

    iOS通知例程

    这个“iOS通知例程”涵盖了如何实现退出应用后仍能发送通知,以及用户重新进入应用时如何继续接收通知的流程。我们将深入探讨iOS的通知系统,包括本地通知和远程推送通知。 **一、iOS通知系统概述** iOS的通知系统...

    基于Java的 iOS 推送通知

    在iOS平台上,推送通知是一种非常...总的来说,基于Java的iOS推送通知涉及到了iOS的通知机制、JavaPNS库的使用以及与APNS服务器的交互。正确配置和使用这些组件,可以有效地实现在Java服务端向iOS设备发送推送通知。

    IOS push通知

    本文将深入探讨“iOS Push通知”的实现机制,包括苹果服务器的推送服务、代码实现以及相关环境配置。 首先,苹果提供的Push Notification Service (APNs) 是实现iOS设备上推送通知的核心。APNs是一个高效、可靠的...

    ios-通知实现手动语言切换.zip

    这个"ios-通知实现手动语言切换.zip"压缩包提供了一个解决方案,它通过封装语言切换类并利用通知机制来实现在运行时动态改变应用的语言环境。下面我们将详细探讨这个实现方式。 首先,我们关注的是“封装一个切换...

    iOS 10新的通知机制中添加图片的方法详解

    在iOS 10中,苹果引入了全新的通知机制,允许开发者在推送通知中添加丰富的媒体内容,如图片。以下是对这个新功能的详细解释: 首先,为了在通知中添加图片,你需要创建一个新的Target。在Xcode项目中,选择项目...

    ios-本地通知.zip

    本教程将深入探讨iOS中的本地通知机制、设置与管理。 一、本地通知的基本概念 1. 通知中心:用户可以在设备的通知中心查看所有收到的通知,包括本地通知和远程推送通知。 2. 通知类型:包括横幅、声音、标记以及...

    iOS Notification正向传值

    总结,iOS Notification正向传值是一种灵活且实用的通信机制,它能够帮助开发者在不建立强耦合的情况下,实现在不同对象之间的数据传递。正确地使用和理解Notification对于iOS应用的设计和维护至关重要。

    高仿推库iOS

    3. **Cocoa Touch**:iOS应用的用户界面构建于Cocoa Touch框架之上,它提供了UI元素如按钮、标签、滑块等,以及触摸事件处理机制。 4. **证书和配置文件**:为了使用APNs,开发者需要在Apple Developer Portal上...

    swift-GLNotificationBar是一个ios10风格的通知条可以用来处理推送式通知活动状态

    GLNotificationBar正是实现了这一功能,允许开发者在应用内部创建一个类似的可定制通知栏,无需依赖于系统的实际通知机制。 其次,GLNotificationBar提供了丰富的自定义选项。开发者可以通过设置不同的属性来调整...

Global site tag (gtag.js) - Google Analytics