技术领域
[0001] 本
发明涉及
数据处理领域,尤其涉及一种消息管理方法及终端。
背景技术
[0002] 目前,iOS
操作系统内各对象间的消息通讯都是采用系统自带的NSNotificationCenter(NNC)类进行管理,NNC类可在相互无关的类之间进行广播通信。例如,类A中实现消息发送,类B、类C、类D实现消息监听并接收NNC消息。但是,iOS操作系统自带的消息通讯机制存在以下
缺陷:
[0003] 1、NNC以广播中心的形式存在于iOS操作系统内,iOS操作系统内的所有类对象都能获取到NNC广播中心接收到的消息,并进行消息处理,不便于处理私有事件;
[0004] 2、NNC所有的消息都集中在广播中心进行集中处理,没有消息分组导致消息不能分组管理,所有消息都可侵入消息接收方,可维护性和容错性较低。
[0005] 随着通讯技术的发展,NNC已经无法满足iOS应用内复杂的通讯需求,因此需要一种新的应用内消息管理方法或系统可以将消息进行模
块化私有化管理,满足消息的私有化使用需求,并提高应用的封装性、容错性和可维护性。
发明内容
[0006] 本发明所要解决的技术问题是:如何提高iOS操作系统内消息通讯的隐私性。
[0007] 为了解决上述技术问题,本发明采用的技术方案为:
[0008] 本发明提供一种消息管理方法,包括:
[0009] 为iOS操作系统的NNC类扩展消息管理中心数组属性;
[0010] 为所述NNC类扩展消息管理方法;
[0011] 所述消息管理方法具体为:
[0012] S1、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中;
[0013] S2、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象;
[0014] S3、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象;
[0015] S4、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象;
[0016] S5、重复执行步骤S2至S4,直至所述消息管理中心对象数组被遍历;
[0017] S6、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0018] 本发明还提供一种消息管理终端,包括一个或多个处理器及
存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
[0019] 为iOS操作系统的NNC类扩展消息管理中心数组属性;
[0020] 为所述NNC类扩展消息管理方法;
[0021] 所述消息管理方法具体为:
[0022] S1、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中;
[0023] S2、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象;
[0024] S3、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象;
[0025] S4、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象;
[0026] S5、重复执行步骤S2至S4,直至所述消息管理中心对象数组被遍历;
[0027] S6、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0028] 本发明的有益效果在于:本发明通过扩展iOS操作系统中原生的NNC类(NSNotificationCenter类),使得NNC类可创建多个与不同消息接收对象进行通信的消息管理中心对象,从而实现在iOS操作系统内实现分组多播消息,提高了iOS操作系统内消息通讯的隐私性。
附图说明
[0029] 图1为本发明提供的一种消息管理方法的具体实施方式的流程
框图;
[0030] 图2为本发明提供的一种消息管理终端的具体实施方式的结构框图;
[0031] 标号说明:
[0032] 1、处理器;2、存储器。
具体实施方式
[0033] 为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0034] 请参照图1以及图2,
[0035] 如图1所示,本发明提供一种消息管理方法,包括:
[0036] 为iOS操作系统的NNC类扩展消息管理中心数组属性;
[0037] 为所述NNC类扩展消息管理方法;
[0038] 所述消息管理方法具体为:
[0039] S1、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中;
[0040] S2、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象;
[0041] S3、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象;
[0042] S4、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象;
[0043] S5、重复执行步骤S2至S4,直至所述消息管理中心对象数组被遍历;
[0044] S6、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0045] 进一步地,所述S6具体为:
[0046] 当一所述消息管理中心对象接收到第一消息时,
[0047] 获取与一所述消息管理中心对象对应的消息接收对象集合;所述消息接收对象集合中的每一元素包含消息接收对象地址和消息优先级;
[0048] 按照所述消息优先级从高到低的顺序依次触发所述接收对象集合中的元素执行与所述第一消息对应的业务逻辑。
[0049] 由上述描述可知,iOS操作系统中原生的NNC类对消息的处理顺序是根据各对象添加消息监听的顺序,不能对有优先级需求的消息进行管理。本发明实现了在iOS操作系统内可按优先级处理消息。例如:计算机类发送一个关闭系统的消息,假设有三个监听者分别是1应用程序类,2驱动程序类,3系统启动器类,消息监听注册顺序跟类对象的初始化有关可能是321的注册顺序但实际需要响应123的顺序。应用程序类设置为高优先级,驱动程序类设置为普通优先级,系统启动器类设置为低优先级,这时候消息的响应顺序就是123,过程是:应用程序类先响应关闭消息,待应用程序类执行完后驱动程序类再响应关闭消息,系统启动器最后响应关闭消息。
[0050] 进一步地,按照所述消息优先级从高到低的顺序依次触发所述接收对象集合中的元素执行与所述第一消息对应的业务逻辑,具体为:
[0051] 所述消息接收对象集合中的每一元素还包含消息标识;
[0052] 按照所述消息优先级从高到低的顺序依次从所述消息接收对象集合中获取一元素,得到当前元素;
[0053] 当所述当前元素对应的消息标识与所述第一消息的消息标识匹配时,根据所述当前元素的消息接收对象地址调用与所述第一消息对应的业务逻辑。
[0054] 进一步地,还包括:
[0055] 预设全局的数据字典;
[0056] 当创建一消息管理中心对象时,为新建的消息管理中心对象分配唯一标识符;添加所述唯一标识符至所述数据字典;添加与所述新建的消息管理中心对象绑定的消息接收对象至所述数据字典;
[0057] 消息发送方从所述数据字典中获取与预设的消息接收对象绑定的消息管理中心对象的唯一标识符,得到特定唯一标识符;
[0058] 消息发送方发送所述第一消息至与所述特定唯一标识符对应的消息管理中心对象。
[0059] 进一步地,还包括:
[0060] 利用iOS操作系统中Object-C语言的分类能
力为所述NNC类扩展所述消息管理中心数组属性和所述消息管理方法。
[0061] 由上述描述可知,本发明使用iOS操作系统的Object-C语言的分类能力(Category)向原生NNC类扩展消息管理中心数组属性和消息管理方法,在程序编译的时候向系统原生类注册扩展了新的属性和方法,从而实现在不需要
修改源代码的情况下使得iOS操作系统具有分组多播和按优先级处理的消息通讯管理功能。因此,本发明提出的消息管理方法具有较强的通用性和兼容性,可便捷地应用于现有的iOS操作系统中。
[0062] 如图2所示,本发明还提供一种消息管理终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
[0063] 为iOS操作系统的NNC类扩展消息管理中心数组属性;
[0064] 为所述NNC类扩展消息管理方法;
[0065] 所述消息管理方法具体为:
[0066] S1、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中;
[0067] S2、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象;
[0068] S3、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象;
[0069] S4、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象;
[0070] S5、重复执行步骤S2至S4,直至所述消息管理中心对象数组被遍历;
[0071] S6、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0072] 进一步地,所述S6具体为:
[0073] 当一所述消息管理中心对象接收到第一消息时,
[0074] 获取与一所述消息管理中心对象对应的消息接收对象集合;所述消息接收对象集合中的每一元素包含消息接收对象地址和消息优先级;
[0075] 按照所述消息优先级从高到低的顺序依次触发所述接收对象集合中的元素执行与所述第一消息对应的业务逻辑。
[0076] 进一步地,按照所述消息优先级从高到低的顺序依次触发所述接收对象集合中的元素执行与所述第一消息对应的业务逻辑,具体为:
[0077] 所述消息接收对象集合中的每一元素还包含消息标识;
[0078] 按照所述消息优先级从高到低的顺序依次从所述消息接收对象集合中获取一元素,得到当前元素;
[0079] 当所述当前元素对应的消息标识与所述第一消息的消息标识匹配时,根据所述当前元素的消息接收对象地址调用与所述第一消息对应的业务逻辑。
[0080] 进一步地,还包括:
[0081] 预设全局的数据字典;
[0082] 当创建一消息管理中心对象时,为新建的消息管理中心对象分配唯一标识符;添加所述唯一标识符至所述数据字典;添加与所述新建的消息管理中心对象绑定的消息接收对象至所述数据字典;
[0083] 消息发送方从所述数据字典中获取与预设的消息接收对象绑定的消息管理中心对象的唯一标识符,得到特定唯一标识符;
[0084] 消息发送方发送所述第一消息至与所述特定唯一标识符对应的消息管理中心对象。
[0085] 进一步地,还包括:
[0086] 利用iOS操作系统中Object-C语言的分类能力为所述NNC类扩展所述消息管理中心数组属性和所述消息管理方法。
[0088] 本实施例提供一种消息管理方法,包括:
[0089] 为iOS操作系统的NNC类扩展消息管理中心数组属性;为所述NNC类扩展消息管理方法。
[0090] 可选地,利用iOS操作系统中Object-C语言的分类能力为所述NNC类扩展所述消息管理中心数组属性和所述消息管理方法。
[0091] 所述消息管理方法具体为:
[0092] S1、预设全局的数据字典。
[0093] 其中,数据字典通过一个唯一标识符关联一个消息管理中心对象。当要回收一消息管理中心对象的内存时,在数据字典中找到传入的唯一标识符,并删除与传入的唯一标识符关联的消息管理中心对象和与传入的标识符有关的项。
[0094] S2、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中。
[0095] 其中,只有当存在一个以上消息接收对象监听一消息管理中心对象时,所述一消息管理中心对象存储在内存,当不存在任一消息接收对象监听所述一消息管理中心对象时,主动回收所述一消息管理中心对象的内存,并从消息管理中心数组中删除。
[0096] S3、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象。
[0097] S4、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象。
[0098] S5、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象。
[0099] S6、为所述第一消息管理中心对象分配唯一标识符。
[0100] S7、添加所述唯一标识符至所述数据字典;添加与所述第一消息管理中心对象绑定的消息接收对象至所述数据字典。
[0101] S8、重复执行步骤S2至S7,直至所述消息管理中心对象数组被遍历。
[0102] S9、消息发送方从所述数据字典中获取与预设的消息接收对象绑定的消息管理中心对象的唯一标识符,得到特定唯一标识符。
[0103] S10、消息发送方发送所述第一消息至与所述特定唯一标识符对应的消息管理中心对象。
[0104] S11、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0105] 其中,根据消息发送方传入的唯一标识符到数据字典中查找对应的消息管理中心对象,如果数据字典中不存在与所述唯一标识符对应的消息管理中心对象,那么,动态创建一个新的消息管理中心对象插入到数据字典中,并返回新创建的消息管理中心对象给消息发送方。
[0106] 可选地,所述S11具体为:
[0107] 当一所述消息管理中心对象接收到第一消息时,获取与一所述消息管理中心对象对应的消息接收对象集合;
[0108] 所述消息接收对象集合中的每一元素包含消息接收对象地址和消息优先级;
[0109] 所述消息接收对象集合中的每一元素还包含消息标识;
[0110] 按照所述消息优先级从高到低的顺序依次从所述消息接收对象集合中获取一元素,得到当前元素;
[0111] 当所述当前元素对应的消息标识与所述第一消息的消息标识匹配时,根据所述当前元素的消息接收对象地址调用与所述第一消息对应的业务逻辑。
[0112] 例如,iOS操作系统通过NNC类的消息管理方法创建了3个消息管理中心对象,分别为MC1和MC2。消息接收对象MR1、MR2、MR3和MR4注册自己为MC1的消息监听者,与MC1绑定。消息接收对象MR5和MR6注册自己为MC2的消息监听者,与MC2绑定。消息发送对象MS1发送具有消息标识为001的消息Message001给MC1,只有MR1、MR2、MR3和MR4可接收到Message001,而MR5和MR6是由MC2管理,无法获取到Message001,实现了分组多播,提高了消息通讯的隐私性。
[0113] 同时,MR1、MR2和MR3对应的消息标识包括了001,而MR4对应的消息标识不包括001,因此,实际上,只有MR1、MR2和MR3接收到消息Message001。由于MR1的优先级最高,MR3的优先级最低,因此,根据本实施例提供的消息管理方法,MR1最先接收到Message001,MR3在MR2之后接收到Message001。
[0114] 由上述描述可知,本实施例提供的消息管理方法可对消息私有化管理,屏蔽其它消息对象的侵入和其它模块的恶意接收,实现了数据通信中更高的封装性和安全性;能够对消息按优先级进行先后通讯管理,可方便控制开发流程中消息执行的先后顺序问题;能够对消息进行分组管理,在自己模块的消息通讯时不用考虑其他模块相同消息的冲突等问题,提高了消息的容错性和可维护性。
[0115] 本发明的实施例二为:
[0116] 本实施例提供一种消息管理终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
[0117] 为iOS操作系统的NNC类扩展消息管理中心数组属性;为所述NNC类扩展消息管理方法。
[0118] 可选地,利用iOS操作系统中Object-C语言的分类能力为所述NNC类扩展所述消息管理中心数组属性和所述消息管理方法。
[0119] 所述消息管理方法具体为:
[0120] S1、预设全局的数据字典。
[0121] 其中,数据字典通过一个唯一标识符关联一个消息管理中心对象。当要回收一消息管理中心对象的内存时,在数据字典中找到传入的唯一标识符,并删除与传入的唯一标识符关联的消息管理中心对象和与传入的标识符有关的项。
[0122] S2、创建一个以上消息管理中心对象,并将所述消息管理中心对象存储于所述消息管理中心数组中。
[0123] 其中,只有当存在一个以上消息接收对象监听一消息管理中心对象时,所述一消息管理中心对象存储在内存,当不存在任一消息接收对象监听所述一消息管理中心对象时,主动回收所述一消息管理中心对象的内存,并从消息管理中心数组中删除。
[0124] S3、从所述消息管理中心数组中获取一消息管理中心对象,得到第一消息管理中心对象。
[0125] S4、获取与所述第一消息管理中心对象对应的一个以上第一消息接收对象。
[0126] S5、绑定所述第一消息管理中心对象和一个以上所述第一消息接收对象。
[0127] S6、为所述第一消息管理中心对象分配唯一标识符。
[0128] S7、添加所述唯一标识符至所述数据字典;添加与所述第一消息管理中心对象绑定的消息接收对象至所述数据字典。
[0129] S8、重复执行步骤S2至S7,直至所述消息管理中心对象数组被遍历。
[0130] S9、消息发送方从所述数据字典中获取与预设的消息接收对象绑定的消息管理中心对象的唯一标识符,得到特定唯一标识符。
[0131] S10、消息发送方发送所述第一消息至与所述特定唯一标识符对应的消息管理中心对象。
[0132] S11、当一所述消息管理中心对象接收到第一消息时,与一所述消息管理中心对象绑定的一个以上消息接收对象执行与所述第一消息对应的业务逻辑。
[0133] 其中,根据消息发送方传入的唯一标识符到数据字典中查找对应的消息管理中心对象,如果数据字典中不存在与所述唯一标识符对应的消息管理中心对象,那么,动态创建一个新的消息管理中心对象插入到数据字典中,并返回新创建的消息管理中心对象给消息发送方。
[0134] 可选地,所述S11具体为:
[0135] 当一所述消息管理中心对象接收到第一消息时,获取与一所述消息管理中心对象对应的消息接收对象集合;
[0136] 所述消息接收对象集合中的每一元素包含消息接收对象地址和消息优先级;
[0137] 所述消息接收对象集合中的每一元素还包含消息标识;
[0138] 按照所述消息优先级从高到低的顺序依次从所述消息接收对象集合中获取一元素,得到当前元素;
[0139] 当所述当前元素对应的消息标识与所述第一消息的消息标识匹配时,根据所述当前元素的消息接收对象地址调用与所述第一消息对应的业务逻辑。
[0140] 综上所述,本发明提供的一种消息管理方法及终端,通过扩展iOS操作系统中原生的NNC类(NSNotificationCenter类),使得NNC类可创建多个与不同消息接收对象进行通信的消息管理中心对象,从而实现在iOS操作系统内实现分组多播消息,提高了iOS操作系统内消息通讯的隐私性。进一步地,可对消息私有化管理,屏蔽其它消息对象的侵入和其它模块的恶意接收,实现了数据通信中更高的封装性和安全性;能够对消息按优先级进行先后通讯管理,可方便控制开发流程中消息执行的先后顺序问题;能够对消息进行分组管理,在自己模块的消息通讯时不用考虑其他模块相同消息的冲突等问题,提高了消息的容错性和可维护性。
[0141] 以上所述仅为本发明的实施例,并非因此限制本发明的
专利范围,凡是利用本发明
说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。