CN108023808B - 应用程序中的消息分发方法及装置 - Google Patents
应用程序中的消息分发方法及装置 Download PDFInfo
- Publication number
- CN108023808B CN108023808B CN201711283553.2A CN201711283553A CN108023808B CN 108023808 B CN108023808 B CN 108023808B CN 201711283553 A CN201711283553 A CN 201711283553A CN 108023808 B CN108023808 B CN 108023808B
- Authority
- CN
- China
- Prior art keywords
- message
- identifier
- receiver
- realizing
- distribution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/06—Message adaptation to terminal or network requirements
- H04L51/066—Format adaptation, e.g. format conversion or compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种应用程序中的消息分发方法及装置。该方法包括:观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法,该消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法,其中,第一消息包含于已定义消息中,第一消息包括:第一消息的标识,若观察者中心确定第一消息的消息接收方中包括实现第一消息的方法,则控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法,解决了目前APP的代码混乱的问题和APP在运行过程中崩溃的问题。
Description
技术领域
本发明实施例涉及计算机编程技术,尤其涉及一种应用程序中的消息分发方法及装置。
背景技术
随着通信及计算机技术的发展,手机等终端设备的使用越来越广泛。终端设备的操作系统中提供了消息分发机制:应用程序中的某个类(以下称消息发送方)可以向应用程序中的另一个类(以下称消息接收方)发送消息,以实现消息接收方调用实现该消息的方法。举例来说,消息发送方可以是应用程序的登录界面,消息接收方可以是登录后的响应类,登录界面在接收到用户输入的确认登录信息后,可以向响应类发送登录消息,响应类在接收到登录消息后,可以调用实现登录消息的方法,以进行向用户显示响应界面、关闭登录界面或者弹出提示信息等操作。
目前,在针对运行在iOS上的应用程序(Application,APP)的开发过程中,开发人员需要在APP的源程序中编写消息发送方(可以为该APP中的任意一个类)定义消息的代码,代码中需要包括该消息的名称,还需要编写消息接收方(可以为该APP中的另外的类)注册消息的代码,代码中需要包括消息接收方能接收的消息的名称以及实现该消息的方法。在APP的运行过程中,在消息分发前,消息发送方可以在操作系统的消息中心中定义消息,消息接收方可以在消息中心中注册消息。在消息分发时,消息中心在确定消息发送方发送某个消息后,将该消息发送给在消息中心注册过的可以接收该消息的消息接收方,以使消息接收方在接收到该消息后,调用实现该消息的方法。
但是,上述过程中,在进行消息定义时,由于iOS为闭源系统,开发人员无法获知消息中心中已经定义的消息的名称,这导致:一方面,在APP开发的过程中,不同的开发人员会对相同的消息进行不同的命名,在APP的运行过程中,可能会造成消息在消息中心的重复定义,使得应用程序的代码比较混乱,可读性较低,不利于后期维护;另一方面,如果某个消息接收方注册消息时,只注册了消息的名称,而没有注册实现该消息的方法,则在该消息接收方接收到该消息后,由于缺少实现该消息的方法,会导致应用程序的崩溃。
发明内容
本发明提供一种应用程序中的消息分发方法及装置,以实现降低APP代码的复杂度及提高APP运行的稳定性。
第一方面,本发明实施例提供了一种应用程序中的消息分发方法,所述应用程序运行于操作系统为iOS的终端设备中;所述应用程序包括消息发送方、消息接收方以及观察者中心;所述观察者中心包括:第一成员属性、第二成员属性以及消息发送方法,所述第一成员属性用于存储已定义消息的标识、所述已定义消息的消息接收方的标识以及所述已定义消息的消息接收方中实现所述已定义消息的方法的标识之间的映射关系,所述第二成员属性用于存储所述已定义消息的标识;
所述消息分发方法包括:
所述观察者中心在确定所述消息发送方待发送第一消息时,调用所述消息发送方法;所述消息发送方法用于根据所述第一消息的标识以及所述映射关系,实例化所述第一成员属性中所述第一消息的消息接收方,并确定所述第一消息的消息接收方中是否包括实现所述第一消息的方法;其中,所述第一消息包含于所述已定义消息中,所述第一消息包括:所述第一消息的标识;
若所述观察者中心确定所述第一消息的消息接收方中包括实现所述第一消息的方法,则控制所述第一消息的消息接收方根据实现所述第一消息的方法的标识,调用实现所述第一消息的方法。
第二方面,本发明实施例还提供了一种应用程序中的消息分发装置,所述应用程序运行于操作系统为iOS的终端设备中;所述应用程序包括消息发送方、消息接收方以及观察者中心;所述观察者中心包括:第一成员属性、第二成员属性以及消息发送方法,所述第一成员属性用于存储已定义消息的标识、所述已定义消息的消息接收方的标识以及所述已定义消息的消息接收方中实现所述已定义消息的方法的标识之间的映射关系,所述第二成员属性用于存储所述已定义消息的标识;
所述消息分发装置包括:
第一调用模块,用于在确定所述消息发送方待发送第一消息时,调用所述消息发送方法;所述消息发送方法用于根据所述第一消息的标识以及所述映射关系,实例化所述第一成员属性中所述第一消息的消息接收方,并确定所述第一消息的消息接收方中是否包括实现所述第一消息的方法;其中,所述第一消息包含于所述已定义消息中,所述第一消息包括:所述第一消息的标识;
控制模块,用于当确定所述第一消息的消息接收方中包括实现所述第一消息的方法时,控制所述第一消息的消息接收方根据实现所述第一消息的方法的标识,调用实现所述第一消息的方法。
第三方面,本发明实施例还提供了一种终端设备,该终端设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的消息分发方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的消息分发方法。
本发明实施例提供的应用程序中的消息分发方法,通过观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法,该消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法,其中,第一消息包含于已定义消息中,第一消息包括:第一消息的标识,若观察者中心确定第一消息的消息接收方中包括实现第一消息的方法,则控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法,解决了目前APP的代码混乱的问题和APP在运行过程中崩溃的问题。其具有以下技术效果:一方面,通过在观察者中心的第二成员属性中存储已定义消息的标识,可以使开发人员在开发APP时,从观察者中心获取到该APP中已定义的所有消息的标识,进而,根据已定义的所有消息的标识进行新的消息定义,从而,避免了APP中出现同一种消息有不同的名称的现象,降低了代码的复杂度,便于后期进行代码维护;另一方面,在第一成员属性中存储已定义消息的消息接收方的标识,只要确定要发送的消息的标识,就能确定该消息的消息接收方的标识,相较于目前iOS的消息发送过程,本发明实施例的消息分发方法过程中占用的终端设备的硬件资源较少,分发效率较高;第三方面,只有在确定第一消息的消息接收方中包括实现第一消息的方法时,才控制消息接收方调用该实现第一消息的方法,从而,避免了在消息接收方中没有实现第一消息的方法时,调用方法而出现APP运行崩溃的情况,提高了APP运行的稳定性。因此,本发明实施例提供的应用程序中的消息分发方法,降低了APP的代码复杂度、提高了消息分发效率以及提高了APP运行的稳定性。
附图说明
图1是本发明实施例提供的应用程序中的消息分发方法实施例一的流程示意图;
图2是图1所示实施例中观察者中心包括的内容的示意图;
图3是本发明实施例提供的应用程序中的消息分发方法实施例二的流程示意图;
图4是图3所示实施例中观察者中心包括的内容的示意图;
图5是本发明实施例提供的应用程序中的消息分发方法实施例三的流程示意图;
图6是图5所示实施例中观察者中心包括的内容的示意图;
图7是本发明实施例提供的应用程序中的消息分发装置实施例一的结构示意图;
图8是本发明实施例提供的应用程序中的消息分发装置实施例二的结构示意图;
图9是本发明实施例提供的应用程序中的消息分发装置实施例三的结构示意图;
图10是本发明实施例提供的终端设备实施例的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在目前的针对运行于iOS上的APP的开发过程中,由于iOS提供的用于定义和注册消息的消息中心对于开发人员来说是封闭的,开发人员无法获取APP中已定义消息的名称。不同的开发人员在开发同一个APP时,可能会将同样的消息进行不同的命名,这导致APP的代码比较混乱,可读性较低。在后期维护APP时,例如,想修改某个消息中的参数时,由于该消息可能会有多个名称,在查找消息时,无法查找出全部消息,容易造成无法完全修改所有需要修改的消息,这可能会导致该APP在运行时出现崩溃等现象。另外,如果消息接收方只注册了某个消息的名称,但消息接收方中并没有实现该消息的方法,也可能会导致APP在运行时出现崩溃等现象。本发明实施例提供一种应用程序中的消息分发方法,旨在解决上述问题。
图1是本发明实施例提供的应用程序中的消息分发方法实施例一的流程示意图。本实施例可适用于消息分发的情况,该方法可以由终端设备来执行。本实施例中所涉及的应用程序为运行于操作系统为iOS的终端设备中的APP。该APP中包括消息发送方、消息接收方以及观察者中心。观察者中心包括:第一成员属性、第二成员属性以及消息发送方法。第一成员属性用于存储已定义消息的标识、已定义消息的消息接收方的标识以及已定义消息的消息接收方中实现已定义消息的方法的标识之间的映射关系,第二成员属性用于存储已定义消息的标识。
如图1所示,本实施例提供的应用程序中的消息分发方法包括如下步骤:
步骤101:观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法。该消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法。
其中,第一消息包含于已定义消息中。第一消息包括第一消息的标识。
具体地,本实施例中所涉及的终端设备可以是操作系统为iOS的手持设备、车载设备、可穿戴设备、计算设备,以及各种形式的用户设备(User Equipment;简称:UE),移动台(Mobile Station;简称:MS)及终端(terminal)等。示例性地,本实施例中的终端设备为手机。
本施例中所涉及的消息指的是在面向对象的程序设计中,一个类实例和另一个类实例之间传递的信息。一个APP可以包括多个类,其中,某些类可能是消息发送方,另一些类可能是消息接收方。在APP的运行过程中,APP中的消息发送方可以向消息接收方发送消息,以实现监听用户的状态,快速地做出响应。
本实施例中为了避免对消息的重复定义,在开发APP的过程中,在APP中设置了观察者中心(Observer Center)。本实施例与目前的应用程序中的消息分发方法的区别在于:目前的消息分发方法是基于iOS的消息中心,由于iOS系统的封闭性,消息中心中的内容对于APP的开发人员是不可见的,而本实施例中的观察者中心的内容,对于APP的开发人员是可见的。
图2是图1所示实施例中观察者中心包括的内容的示意图。如图2所示,本实施例中的观察者中心包括:第一成员属性(ObserverMap)、第二成员属性(dicProtocolMethod)以及消息发送方法(notifyObserver)。第一成员属性和第二成员属性均用于存储,消息发送方法用于实现实例化消息接收方,并判断消息接收方中是否包括实现消息的方法。
其中,第二成员属性用于存储该APP中已定义消息的标识。可选地,第二成员属性中还可以存储已定义消息的对象。第一成员属性用于存储映射关系。该映射关系为:已定义消息的标识、已定义消息的消息接收方的标识以及已定义消息的消息接收方中实现已定义消息的方法的标识之间的关系。已定义消息的标识可以是该消息的名称等可以唯一标识该消息的信息。已定义消息的标识可以是开发人员在开发APP的过程中已经确定好的。已定义消息的消息接收方的标识可以是消息接收方的名称,已定义消息的消息接收方中实现已定义消息的方法的标识可以是该方法的名称。
已定义消息可以是多个消息。每个已定义消息可以对应一个或者多个消息接收。则第一成员属性中的映射关系中可以包括多个子映射关系,每个子映射关系用于指示某个消息的标识、某个消息的消息接收方以及该接收方中实现该消息的方法的标识。已定义消息的消息接收方中可以包括多个方法,其中可能包括实现该已定义消息的方法。本实施例中,实现已定义消息的方法指的是消息接收方接收到已定义消息之后,确定进行何种操作的方法。这里所说的实现已定义消息的方法也可以被称为实现已定义消息的函数。
一种可能的实现方式中,第一成员属性中的存储方式为:以已定义消息中的每个消息的标识作为键,以消息的消息接收方的标识以及消息的消息接收方中实现消息的方法的标识作为键值,进行存储。即,采用key-value存储方式进行存储。这种存储方式便于根据消息的标识查找该消息对应的消息接收方以及消息接收方中实现该消息的方法,查找效率较高。
对于已定义消息中的每个消息来说,均对应一个接收方的标识的数组,以及,消息接收方中实现消息的方法的标识的数组。
第二成员属性中的存储方式可以为:以已定义消息中的每个消息的标识作为键,以消息的对象作为键值,进行存储。需要说明的是,每个消息的标识为开发人员确定的、暴露在外的标识。
在步骤101中,当消息发送方待发送第一消息时,可以向观察者中心发送指示信息。观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法。消息发送方法在被调用后,根据第一消息的标识以及第一成员属性中的映射关系,实例化观察者中心的第一成员属性中第一消息的消息接收方。本实施例中所涉及的实例化指的是根据第一成员属性中的第一消息的消息接收方的标识找到第一消息的消息接收方。
消息发送方法在实例化第一消息的消息接收方后,根据第一消息的标识以及映射关系确定第一消息的消息接收方中是否包括实现第一消息的方法。虽然第一成员属性的映射关系中,存储了第一消息的消息接收方中实现第一消息的方法的标识,但是,第一消息的消息接收方实际上可能并不包括这个标识对应的方法。因此,本实施例中可以通过消息发送方法判断第一消息的消息接收方中是否包括实现第一消息的方法。
可选地,消息发送方法可以根据第一消息的标识以及映射关系,确定第一消息的标识对应的消息接收方中实现第一消息的方法的标识,再确定第一消息的消息接收方中是否包括该标识对应的方法。如果包括,则确定第一消息的消息接收方中包括实现第一消息的方法;如果不包括,则确定第一消息的消息接收方中不包括实现第一消息的方法。
需要说明的是,当第一消息的消息接收方为多个时,消息发送方法中实例化第一消息的消息接收方和判断消息接收方中是否包括实现第一消息的方法,这两个步骤之间可以有以下时序关系:
一种实现方式中,消息发送方法将第一消息的所有消息接收方均实例化完成后,再确定第一消息的消息接收方中,是否包括实现第一消息的方法;另一种实现方式中,消息发送方法将第一消息的第一个消息接收方实例化后,在实例化第一消息的第二个消息接收方的同时,确定第一消息的第一个消息接收方中,是否包括实现第一消息的方法。
第一消息可以是第二成员属性中存储的已定义消息的标识中的任意消息的标识对应的消息。
本实施例中通过设置观察者中心,在观察者中心的第二成员属性中存储已定义消息的标识,可以使开发人员在开发APP时,从观察者中心获取到该APP中已定义的所有消息的标识,进而,根据已定义的所有消息的标识进行新的消息定义,从而,避免了APP中出现同一种消息有不同的名称的现象,降低了代码的复杂度,便于后期进行代码维护。
步骤102:若观察者中心确定第一消息的消息接收方中包括实现第一消息的方法,则控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法。
在观察者中心确定第一消息的消息接收方中包括实现第一消息的方法后,控制第一消息的接收方根据实现第一消息的方法的标识,调用实现第一消息的方法。当第一消息的多个消息接收方中均包括实现第一消息的方法后,则控制该多个消息接收方调用其实现第一消息的方法。控制的方式可以是向第一消息的消息接收方发送指示信息。第一消息的消息接收方在接收到指示信息后,调用实现第一消息的方法。
在控制消息接收方调用实现第一消息的方法后,即实现从消息发送方向消息接收方发送第一消息的目的。
可选地,在观察者中心确定第一消息的消息接收方中不包括实现第一消息的方法时,执行步骤103:停止操作,即,停止控制消息接收方调用方法的操作,以避免APP在运行过程中出现崩溃。
本实施例中,在消息发送方法实例化了第一消息的消息接收方后,还需要判断第一消息的消息接收方中是否包括实现第一消息的方法,只有在确定第一消息的接收方中包括实现第一消息的方法时,观察者中心才控制消息接收方调用实现第一消息的方法,避免了在消息接收方中没有实现第一消息的方法时,调用方法而出现APP运行崩溃的情况,提高了APP运行的稳定性。
本实施例提供的应用程序中的消息分发方法,通过观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法,该消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法,其中,第一消息包含于已定义消息中,第一消息包括:第一消息的标识,若观察者中心确定第一消息的消息接收方中包括实现第一消息的方法,则控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法,解决了目前APP的代码混乱的问题和APP在运行过程中崩溃的问题。其具有以下技术效果:一方面,通过在观察者中心的第二成员属性中存储已定义消息的标识,可以使开发人员在开发APP时,从观察者中心获取到该APP中已定义的所有消息的标识,进而,根据已定义的所有消息的标识进行新的消息定义,从而,避免了APP中出现同一种消息有不同的名称的现象,降低了代码的复杂度,便于后期进行代码维护;另一方面,在第一成员属性中存储已定义消息的消息接收方的标识,只要确定要发送的消息的标识,就能确定该消息的消息接收方的标识,相较于目前iOS的消息发送过程,本实施例的消息分发方法过程中占用的终端设备的硬件资源较少,分发效率较高;第三方面,只有在确定第一消息的消息接收方中包括实现第一消息的方法时,才控制消息接收方调用该实现第一消息的方法,从而,避免了在消息接收方中没有实现第一消息的方法时,调用方法而出现APP运行崩溃的情况,提高了APP运行的稳定性。因此,本实施例提供的应用程序中的消息分发方法,降低了APP的代码复杂度、提高了消息分发效率以及提高了APP运行的稳定性。
图3是本发明实施例提供的应用程序中的消息分发方法实施例二的流程示意图。本发明实施例在图2所示实施例的基础上,对消息分发之前的步骤作一详细说明。本实施例可适用于消息注册的情况。在本实施例中,观察者中心还包括:消息注册方法(addObserver)。如图3所示,本实施例提供的应用程序中的消息分发方法包括:
步骤301:观察者中心在确定第一消息待注册时,调用消息注册方法。消息注册方法用于从第二成员属性中确定是否已存在第一消息的标识,并在确定不存在第一消息的标识时,在第一成员属性中存储第一消息的标识、第一消息的消息接收方的标识以及第一消息的消息接收方实现第一消息的方法的标识之间的第一子映射关系,以及,在第二成员属性中存储第一消息的标识。
其中,第一子映射关系包含于映射关系中。
具体地,本实施例提供的消息注册方法可以在确定需要进行消息注册时,执行操作。本实施例所涉及的消息注册可以包括消息发送方定义消息和消息接收方注册消息。图4是图3所示实施例中观察者中心包括的内容的示意图。
消息注册过程可以是在APP初始启动时就进行的,也可以是在APP的运行过程中,当确定需要发送消息时,才进行的。在第一消息需要进行注册时,消息发送方会将第一消息的标识发送至观察者中心。观察者中心在获取到第一消息的标识后,调用消息注册方法。
当确定第二成员属性中不存在第一消息的标识时,需要在第一成员属性中和第二成员属性中添加第一消息的相关信息。具体地,消息注册方法在第一成员属性中存储第一子映射关系。第一子映射关系用于指示第一消息的标识、第一消息的消息接收方的标识以及第一消息的消息接收方实现第一消息的标识之间的对应关系。消息注册方法在第二成员属性中存储第一消息的标识。当确定第二成员属性中已存在第一消息的标识时,则停止消息注册过程。
一种实现方式中,第一消息的消息接收方的标识可以是第一消息的消息发送方在定义第一消息时确定的,在确定了第一消息的消息接收方的标识后,即可以确定第一消息的消息接收方中实现第一消息的方法,从而,消息注册方法将第一消息的标识、第一消息的消息接收方及第一消息的消息接收方中实现第一消息的方法的标识之间的对应关系在第一成员属性中进行存储。
另一种实现方式中,第一消息的消息接收方的标识以及第一消息的接收方中实现第一消息的方法的标识,可以是第一消息的消息接收方发送至观察者中心的,从而,消息注册方法将第一消息的标识、第一消息的消息接收方及第一消息的消息接收方中实现第一消息的方法的标识之间的对应关系在第一成员属性中进行存储。
步骤302:观察者中心在确定消息发送方待发送第一消息时,调用消息发送方法。该消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法。
步骤303:若观察者中心确定第一消息的消息接收方中包括实现第一消息的方法,则控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法。
步骤304:在观察者中心确定第一消息的消息接收方中不包括实现第一消息的方法时,停止操作。
步骤302与步骤101、步骤303与步骤102、步骤304与步骤103的实现过程和技术原理类似,此处不再赘述。
本实施例提供的应用程序中的消息分发方法,通过观察者中心在确定第一消息待注册时,调用消息注册方法,该消息注册方法用于从第二成员属性中确定是否已存在第一消息的标识,并在确定不存在第一消息的标识时,在第一成员属性中存储第一消息的标识、第一消息的消息接收方的标识以及第一消息的消息接收方实现第一消息的方法的标识之间的第一子映射关系,以及,在第二成员属性中存储第一消息的标识,当确定存在第一消息的标识时,停止消息注册过程,实现了在消息注册过程中,保证了第二成员属性中的已定义消息的标识是唯一的,降低了代码的复杂度,并且,当确定第一消息已经经过注册后,停止后续的注册操作,进一步提高了消息分发的效率。
图5是本发明实施例提供的应用程序中的消息分发方法实施例三的流程示意图。本发明实施例在图1或图3所示实施例的基础上,对消息分发之后的步骤作一详细说明。本实施例可适用于消息移除的情况。在本实施例中,观察者中心还包括:消息移除方法(removerObserver)。如图5所示,本实施例提供的应用程序中的消息分发方法包括(图5仅示出了进行消息移除的步骤):
步骤501:当观察者中心确定第二消息需要移除时,调用消息移除方法。消息移除方法用于从第一成员属性中删除第二消息的标识、第二消息的消息接收方的标识以及第二消息的消息接收方中实现第二消息的方法的标识之间的第二子映射关系。
其中,第二消息包括第二消息的标识,第二消息为已定义消息中的任一消息,第二子映射关系包含于映射关系中。
图6是图5所示实施例中观察者中心包括的内容的示意图。图6示出的观察者中心中包括了:第一成员属性、第二成员属性、消息发送方法、消息注册方法以及消息移除方法。
本实施例中的第二消息为第二成员属性中已定义消息中的任一个。本实施例中所涉及的“移除”指的是将第一成员属性中的第二消息的标识、第二消息的消息接收方的标识以及第二消息的消息接收方中实现第二消息的方法的标识之间的第二子映射关系删除,以节省观察者中心占用的存储资源。
在某些业务场景中,某一个消息可能只需要发送一次。在本实施例中,将该消息称为第二消息。在第一次成功发送第二消息后,就需要将该第二消息的标识、第二消息的消息接收方的标识以及第二消息的消息接收方中实现该第二消息的方法的标识从第一成员属性中删除。
本实施例提供的应用程序中的消息分发方法,通过当观察者中心确定第二消息需要移除时,调用消息移除方法,实现了在不需要再发送消息的场景中,从第一成员属性中删除该消息的相关信息,从而,节省存储资源。
图7是本发明实施例提供的应用程序中的消息分发装置实施例一的结构示意图。应用程序运行于操作系统为iOS的终端设备中。应用程序包括消息发送方、消息接收方以及观察者中心。观察者中心包括:第一成员属性、第二成员属性以及消息发送方法。第一成员属性用于存储已定义消息的标识、已定义消息的消息接收方的标识以及已定义消息的消息接收方中实现已定义消息的方法的标识之间的映射关系。第二成员属性用于存储已定义消息的标识。
如图7所示,本实施例提供的应用程序中的消息分发装置包括如下模块:第一调用模块71及控制模块72。
第一调用模块71,用于在确定消息发送方待发送第一消息时,调用消息发送方法。消息发送方法用于根据第一消息的标识以及映射关系,实例化第一成员属性中第一消息的消息接收方,并确定第一消息的消息接收方中是否包括实现第一消息的方法。
其中,第一消息包含于已定义消息中,第一消息包括:第一消息的标识。
控制模块72,用于当确定第一消息的消息接收方中包括实现第一消息的方法时,控制第一消息的消息接收方根据实现第一消息的方法的标识,调用实现第一消息的方法。
可选地,第一成员属性中的存储方式可以为:以已定义消息中的每个消息的标识作为键,以消息的消息接收方的标识以及消息的消息接收方中实现消息的方法的标识作为键值,进行存储。
可选地,本实施例提供的应用程序中的消息分发装置中的控制模块72还用于:若确定第一消息的消息接收方中不包括实现第一消息的方法,则停止操作。
本发明实施例所提供的应用程序中的消息分发装置可执行本发明图1和图2所示实施例所提供的消息分发方法,具备执行方法相应的功能模块和有益效果。
图8是本发明实施例提供的应用程序中的消息分发装置实施例二的结构示意图。本实施例中,观察者中心还包括消息注册方法。如图8所示,本实施例在图7所示实施例的基础上,应用程序中的消息分发装置还包括:第二调用模块81。
第二调用模块81,用于在确定第一消息待注册时,调用消息注册方法。消息注册方法用于从第二成员属性中确定是否已存在第一消息的标识,并在确定不存在第一消息的标识时,在第一成员属性中存储第一消息的标识、第一消息的消息接收方的标识以及第一消息的消息接收方实现第一消息的方法的标识之间的第一子映射关系,以及,在第二成员属性中存储第一消息的标识。
其中,第一子映射关系包含于映射关系中。
本发明实施例所提供的应用程序中的消息分发装置可执行本发明图3和图4所示实施例所提供的消息分发方法,具备执行方法相应的功能模块和有益效果。
图9是本发明实施例提供的应用程序中的消息分发装置实施例三的结构示意图。本实施例中,观察者中心还包括消息移除方法。如图9所示,本实施例在图7或图8所示实施例的基础上(图9以图8为基础,对本实施例的方案作一示例性说明),应用程序中的消息分发装置还包括:第三调用模块91。
第三调用模块91,用于当确定第二消息需要移除时,调用消息移除方法。消息移除方法用于从第一成员属性中删除第二消息的标识、第二消息的消息接收方的标识以及第二消息的消息接收方中实现第二消息的方法的标识之间的第二子映射关系。
其中,第二消息包括第二消息的标识,第二消息为已定义消息中的任一消息,第二子映射关系包含于映射关系中。
本发明实施例所提供的应用程序中的消息分发装置可执行本发明图5和图6所示实施例所提供的消息分发方法,具备执行方法相应的功能模块和有益效果。
图10是本发明实施例提供的终端设备实施例的结构示意图。如图10所示,该终端设备包括处理器92、存储器93、输入装置94和输出装置95。终端设备中处理器92的数量可以是一个或多个。图10中以一个处理器92为例;终端设备的处理器92、存储器93、输入装置94和输出装置95可以通过总线或其他方式连接,图10中以通过总线连接为例。
存储器93作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的应用程序中的消息分发方法对应的程序指令或模块(例如,应用程序中的消息分发装置中的第一调用模块71以及控制模块72)。处理器92通过运行存储在存储器93中的软件程序、指令以及模块,从而执行终端设备的各种功能应用以及数据处理,即实现上述的应用程序中的消息分发方法。
存储器93可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器93可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器93可进一步包括相对于处理器92远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置94可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置95可包括显示屏等显示设备。
本发明实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种图1、图3或图5所示实施中的应用程序中的消息分发方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的消息分发方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种应用程序中的消息分发方法,其特征在于,所述应用程序运行于操作系统为iOS的终端设备中;所述应用程序包括消息发送方、消息接收方以及观察者中心;所述观察者中心包括:第一成员属性、第二成员属性以及消息发送方法,所述第一成员属性用于存储已定义消息的标识、所述已定义消息的消息接收方的标识以及所述已定义消息的消息接收方中实现所述已定义消息的方法的标识之间的映射关系,所述第二成员属性用于存储所述已定义消息的标识;
所述消息分发方法包括:
所述观察者中心在确定所述消息发送方待发送第一消息时,调用所述消息发送方法;所述消息发送方法用于根据所述第一消息的标识以及所述映射关系,实例化所述第一成员属性中所述第一消息的消息接收方,并确定所述第一消息的消息接收方中是否包括实现所述第一消息的方法;其中,所述第一消息包含于所述已定义消息中,所述第一消息包括:所述第一消息的标识;
若所述观察者中心确定所述第一消息的消息接收方中包括实现所述第一消息的方法,则控制所述第一消息的消息接收方根据实现所述第一消息的方法的标识,调用实现所述第一消息的方法。
2.根据权利要求1所述的消息分发方法,其特征在于,所述观察者中心还包括消息注册方法;
在所述观察者中心在确定所述消息发送方待发送第一消息时,调用所述消息发送方法之前,所述消息分发方法还包括:
所述观察者中心在确定所述第一消息待注册时,调用所述消息注册方法;所述消息注册方法用于从所述第二成员属性中确定是否已存在所述第一消息的标识,并在确定不存在所述第一消息的标识时,在所述第一成员属性中存储所述第一消息的标识、所述第一消息的消息接收方的标识以及所述第一消息的消息接收方实现所述第一消息的方法的标识之间的第一子映射关系,以及,在所述第二成员属性中存储所述第一消息的标识;所述第一子映射关系包含于所述映射关系中。
3.根据权利要求1或2所述的消息分发方法,其特征在于,所述观察者中心还包括消息移除方法;
所述消息分发方法还包括:
当所述观察者中心确定第二消息需要移除时,调用所述消息移除方法;所述消息移除方法用于从所述第一成员属性中删除所述第二消息的标识、所述第二消息的消息接收方的标识以及所述第二消息的消息接收方中实现所述第二消息的方法的标识之间的第二子映射关系;其中,所述第二消息包括所述第二消息的标识,所述第二消息为所述已定义消息中的任一消息,所述第二子映射关系包含于所述映射关系中。
4.根据权利要求1或2所述的消息分发方法,其特征在于,所述消息分发方法还包括:
若所述观察者中心确定所述第一消息的消息接收方中不包括实现所述第一消息的方法,则停止操作。
5.根据权利要求1或2所述的消息分发方法,其特征在于,
所述第一成员属性中的存储方式为:以所述已定义消息中的每个消息的标识作为键,以所述消息的消息接收方的标识以及所述消息的消息接收方中实现所述消息的方法的标识作为键值,进行存储。
6.一种应用程序中的消息分发装置,其特征在于,所述应用程序运行于操作系统为iOS的终端设备中;所述应用程序包括消息发送方、消息接收方以及观察者中心;所述观察者中心包括:第一成员属性、第二成员属性以及消息发送方法,所述第一成员属性用于存储已定义消息的标识、所述已定义消息的消息接收方的标识以及所述已定义消息的消息接收方中实现所述已定义消息的方法的标识之间的映射关系,所述第二成员属性用于存储所述已定义消息的标识;
所述消息分发装置包括:
第一调用模块,用于在确定所述消息发送方待发送第一消息时,调用所述消息发送方法;所述消息发送方法用于根据所述第一消息的标识以及所述映射关系,实例化所述第一成员属性中所述第一消息的消息接收方,并确定所述第一消息的消息接收方中是否包括实现所述第一消息的方法;其中,所述第一消息包含于所述已定义消息中,所述第一消息包括:所述第一消息的标识;
控制模块,用于当确定所述第一消息的消息接收方中包括实现所述第一消息的方法时,控制所述第一消息的消息接收方根据实现所述第一消息的方法的标识,调用实现所述第一消息的方法。
7.根据权利要求6所述的消息分发装置,其特征在于,所述观察者中心还包括消息注册方法;
所述消息分发装置还包括:
第二调用模块,用于在确定所述第一消息待注册时,调用所述消息注册方法;所述消息注册方法用于从所述第二成员属性中确定是否已存在所述第一消息的标识,并在确定不存在所述第一消息的标识时,在所述第一成员属性中存储所述第一消息的标识、所述第一消息的消息接收方的标识以及所述第一消息的消息接收方实现所述第一消息的方法的标识之间的第一子映射关系,以及,在所述第二成员属性中存储所述第一消息的标识;所述第一子映射关系包含于所述映射关系中。
8.根据权利要求6或7所述的消息分发装置,其特征在于,所述观察者中心还包括消息移除方法;
所述消息分发装置还包括:
第三调用模块,用于当确定第二消息需要移除时,调用所述消息移除方法;所述消息移除方法用于从所述第一成员属性中删除所述第二消息的标识、所述第二消息的消息接收方的标识以及所述第二消息的消息接收方中实现所述第二消息的方法的标识之间的第二子映射关系;其中,所述第二消息包括所述第二消息的标识,所述第二消息为所述已定义消息中的任一消息,所述第二子映射关系包含于所述映射关系中。
9.一种终端设备,其特征在于,所述终端设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的应用程序中的消息分发方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的应用程序中的消息分发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711283553.2A CN108023808B (zh) | 2017-12-07 | 2017-12-07 | 应用程序中的消息分发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711283553.2A CN108023808B (zh) | 2017-12-07 | 2017-12-07 | 应用程序中的消息分发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108023808A CN108023808A (zh) | 2018-05-11 |
CN108023808B true CN108023808B (zh) | 2020-10-16 |
Family
ID=62078953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711283553.2A Active CN108023808B (zh) | 2017-12-07 | 2017-12-07 | 应用程序中的消息分发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108023808B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108810644B (zh) * | 2018-06-28 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN109005448B (zh) * | 2018-06-28 | 2021-06-15 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN108810645B (zh) * | 2018-06-28 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN108881991B (zh) * | 2018-06-28 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN108989184B (zh) * | 2018-07-03 | 2021-06-15 | 武汉斗鱼网络科技有限公司 | 弹幕消息处理方法、装置、设备和存储介质 |
CN109168079B (zh) * | 2018-08-01 | 2021-04-09 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN109005465B (zh) * | 2018-08-07 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN109246484B (zh) * | 2018-09-13 | 2021-04-23 | 武汉斗鱼网络科技有限公司 | 弹幕消息传输方法、装置、设备与存储介质 |
CN109309848B (zh) * | 2018-09-29 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 基于重试机制的弹幕分发方法、装置、设备及存储介质 |
CN109343983B (zh) * | 2018-09-30 | 2021-07-23 | 武汉斗鱼网络科技有限公司 | 功能模块间的信息交互方法、装置、设备及存储介质 |
CN109684114A (zh) * | 2019-01-02 | 2019-04-26 | 深圳乐信软件技术有限公司 | 基于iOS系统的消息分发方法、装置、终端和介质 |
CN111694674B (zh) * | 2019-03-13 | 2023-08-08 | 北京字节跳动网络技术有限公司 | 消息分发处理方法、装置、设备及存储介质 |
CN112988125B (zh) * | 2019-12-02 | 2023-09-12 | 广州铭诚计算机科技有限公司 | 一种数据桥接方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681830A (zh) * | 2011-03-17 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 一种比较程序文本的方法和设备 |
CN104063285A (zh) * | 2014-01-13 | 2014-09-24 | 惠州华阳通用电子有限公司 | 一种基于车载软件平台进程内模块间的消息广播通信方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086931B2 (en) * | 2002-11-20 | 2015-07-21 | Purenative Software Corporation | System for translating diverse programming languages |
-
2017
- 2017-12-07 CN CN201711283553.2A patent/CN108023808B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681830A (zh) * | 2011-03-17 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 一种比较程序文本的方法和设备 |
CN104063285A (zh) * | 2014-01-13 | 2014-09-24 | 惠州华阳通用电子有限公司 | 一种基于车载软件平台进程内模块间的消息广播通信方法 |
Non-Patent Citations (1)
Title |
---|
"基于Android和iOS的购彩平台的设计与实现";林济云;《中国优秀硕士学位论文全文数据库(电子期刊)》;20130515;I138-1580 * |
Also Published As
Publication number | Publication date |
---|---|
CN108023808A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108023808B (zh) | 应用程序中的消息分发方法及装置 | |
US20170206123A1 (en) | Application containers with updatable application programming interface layers | |
CN108182131B (zh) | 监控应用运行状态的方法、装置、存储介质及电子设备 | |
US7877091B2 (en) | Method and system for executing a container managed application on a processing device | |
CN107818023B (zh) | 基于线程的消息处理方法、智能设备及存储介质 | |
EP3779690A1 (en) | Processor core scheduling method and apparatus, terminal, and storage medium | |
WO2018063163A1 (en) | Selective simulation of virtualized hardware inputs | |
CN109343983B (zh) | 功能模块间的信息交互方法、装置、设备及存储介质 | |
CN112653670A (zh) | 业务逻辑漏洞检测方法、装置、存储介质以及终端 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN110324722B (zh) | 直播间中数据的获取方法、装置、设备和存储介质 | |
CN111338710A (zh) | 应用程序控制方法、装置、电子设备及存储介质 | |
CN108052401B (zh) | 系统属性监听方法、终端设备及计算机可读存储介质 | |
CN113791867B (zh) | 调整kvm虚拟机服务进程优先级的方法及应用 | |
CN109388388B (zh) | 功能模块间的信息交互方法、装置、设备及存储介质 | |
CN108810633B (zh) | 弹幕消息传输方法、装置、设备及存储介质 | |
CN114281555A (zh) | 应用状态同步方法、装置、电子设备和存储介质 | |
CN113127775B (zh) | 一种页面加载方法、装置、设备和存储介质 | |
CN115550498B (zh) | 投屏方法、装置、设备和存储介质 | |
CN112636978A (zh) | 安全事件处理方法、装置、设备及计算机可读存储介质 | |
CN115242972B (zh) | 一种应用调用摄像头的方法和装置、电子设备及存储介质 | |
CN109144520B (zh) | Android中不同对象间的信息交互方法、装置、设备和存储介质 | |
CN108989244B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
EP3843361A1 (en) | Resource configuration method and apparatus, and storage medium | |
CN113286349B (zh) | 个人热点连接方法、装置、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |