当前位置: 首页 > 编程笔记 >

iOS中的通知机制

艾浩广
2023-03-14
本文向大家介绍iOS中的通知机制,包括了iOS中的通知机制的使用技巧和注意事项,需要的朋友参考一下

网上经常说iOS的通知机制是使用了观察者模式,里面有两个角色,其一是poster(发送者),另一个是observer(接受信息的订阅者)。但我认为重要的角色是通知中心,它是整个通知机制的核心,有poster发送者发送的消息必定要到达通知中心,再由通知中心根据这个消息被哪些observer订阅者订阅过,就把消息往那些订阅者去分发。整体可以与现在的电子邮件结构作类比的。

但要额外说明一下,iOS的通知虽然也叫Notification通知,但是与Android中的通知是不一样的,在Android中的通知是一种消息推送的形式,而在iOS中肯定也有消息推送,这就是推送机制那部分的内容。说会这个通知机制的其实就是原本在学习C#时的事件,只不过这里的事件是对于整个系统的全局事件,任何一方往系统的这个全局事件去注册绑定了方法,到事件被触发的时候就能够被执行。

整个通知的操作流程,我们只需要把poster和observer设置好就可以了

对于Poster的操作比较简单,他只需要往通知中心推通知就可以了,采用以下的代码

[[NSNotificationCenter defaultCenter] postNotificationName:@”PostOne” object:@”This is posterone”];

或者

[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@”PostOne” object:@”This is posterone”]];

NotificationWithName: object: 方法还有一个重载就是有userInfo: 参数,它是NSDictionary的字典类型,就是用于传递用户参数。

  对于Observer则相对没Poster那么简单,在C#中进行事件注册绑定的时候也发现,触发事件的只需要像调用方法那样子调用就可以了,但是注册那一方则需要为事件绑定方法,又要定义方法,而在iOS的通知机制中,需要注册,回调处理(就是事件中的方法定义),用完了还要去删除。

注册

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callBack1:) name:@”PostOne” object: nil]; 

这里的参数是跟postNotificationName: object:对应的。注册了哪个通知name参数就填上对对应的值

回调处理

-(void) callBack1(NSNotification*)notification
{
notification.name://通知的名称
notification.object;//发送通知时的object
notification.userInfo//发送通知时的userInfo
}

删除

在使用消息完毕(就是不再对接收到的消息作处理的)之后,需要进行删除操作

[[NSNotificationCenter defaultCenter]removeObserver: self];//删除所有注册过的通知
[[NSNotificationCenter defaultCenter]removeObserver:self name:@”PostOne“ object:nil];//删除名称为”PostOne“的通知

补充:

ios中观察者模式与通知机制,及KVO

在ios开发中,通知机制和KVO都是依靠观察者模式得以实现。通知机制与KVO的不同之处在于,前者是一个中心对象为所有观察者提供变更通知,后者是被观察对象直接向观察者发送通知。

以下关注观察者模式与通知机制实现:

1、观察者模式中Subject对象,又可称目标对象,是通知的发布者,又是被观察者。提供注册和取消注册的方法;Observer对象,又可称为观察者,是通知的订阅者。Observer类中,相识Subject,以达到能够接收通知。

2、ios中的通知机制,是Cocoa Touch框架为开发者开发的类,让开发者不必自己写观察者模式,用到它便能实现。对于我而言,通知机制的所有使用,都集中到一个类中。而导致我用通知机制去理解观察者模式时,迷糊于Subject和Observer,谁是通知的发送者,因为类中集结了观察者和发送者。

 类似资料:
  • 问题内容: 我正在尝试发送推送通知,我已在应用程序委托中进行了通知注册,并且apns设备令牌正在正确生成。我也已经在服务分机中编写了如下代码: 。并且json中的有效负载如下 我收到 标题 和 消息, 但是 图像 未显示。请指导如何在推送通知中获取图片 问题答案: 这行: 在userInfo字典中寻找作为对象子项的值。它正在寻找这个: 但是您的问题中的有效载荷是这样的: “数据”部分不存在,键也不

  • 智能通知功能可使您在 Polar 设备上获取有关来电、信息和通知的提醒。您将在您手机屏幕上的 Polar 设备上收到相同的通知。当您利用 A370 进行心率训练时,如果您的手机运行了 Polar Flow 应用程式,您仅能收到关于电话的通知。 确保 A370 具有最新固件版本和最新版本的 Polar Flow 应用程式。 要使用智能通知功能,您需要安装适合 iOS 的 Polar Flow 移动应

  • 我正在尝试向Xamarin添加推送通知。使用本教程的iOS应用程序https://docs.microsoft.com/en-us/azure/notification-hubs/xamarin-notification-hubs-ios-push-notification-apns-get-started 我已经按原样完成了所有步骤,以下是我迄今为止尝试的步骤:- AppDelegate。反恐精

  • 手机通知功能便于您通过手表收到来电、信息和应用程序通知提醒。您在手表上收到的通知与手机上收到的相同。手机通知适用于 iOS 和 Android 手机。 若要使用手机通知,您需要在手机上安装 Polar Flow 应用,并且还需要将其与手表配对。请参阅将移动设备与手表配对,了解相关说明。 将手机通知设置为开启 在手表上,进入 Settings(设置) > General settings(一般设置)

  • 手机通知功能便于您通过手表收到来电、信息和应用程序通知提醒。您在手表上收到的通知与手机上收到的相同。手机通知适用于 iOS 和 Android 手机。 若要使用手机通知,您需要在手机上安装 Polar Flow 应用,并且还需要将其与手表配对。请参阅将移动设备与手表配对,了解相关说明。 将手机通知设置为开启 在手表上,进入 Settings(设置) > General settings(一般设置)

  • 本文向大家介绍iOS开发系列--通知与消息机制详解,包括了iOS开发系列--通知与消息机制详解的使用技巧和注意事项,需要的朋友参考一下 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情。iOS中通知机制又叫消息机制,其包括两类:一类是本地通知;另一类是推送通知,也叫远程通知。两种通知在iOS中的表现一