本发明涉及计算机技术,尤其涉及一种登录控制处理方法及终端。
背景技术:
在移动通信领域,终端上所安装的一些应用程序(application,简称app)需要进行登录控制。
现有技术中,在app中每个需要进行登录控制的业务功能的入口处增加登录控制的代码。
但是,现有技术的方法中,登录控制代码与业务功能原有代码的耦合度高,导致业务功能的扩展复杂,难以实现。
技术实现要素:
本发明提供一种登录控制处理方法及终端,用于解决现有技术中登录控制代码与业务功能原有代码的耦合度高的问题。
本发明第一方面提供一种登录控制处理方法,包括:
确定需要进行登录控制的第一方法,所述第一方法包含在所述终端的业务代码中;
在终端的运行时环境中注册第一方法和第二方法对应的替换方法,其中,所述第二方法用于进行登录控制以及进行登录后的业务处理,所述第一方法和第二方法对应的替换方法用于替换所述第一方法和所述第二方法;
执行所述终端的所述业务代码。
进一步地,所述第二方法中包括登录控制代码以及调用登录后的业务处理的方法的代码。
进一步地,所述第一方法和所述第二方法对应的替换方法用于确定所述第一方法所在类,以及在所述第一方法所在类中未实现所述第一方法时在所述第一方法所在类中增加所述第二方法并且替换所述第一方法和所述第二方法。
进一步地,所述第一方法和所述第二方法对应的替换方法还用于在所述第一方法所在类已经实现所述第一方法时替换所述第一方法以及第二方法。
进一步地,所述确定需要进行登录控制的第一方法,包括:
向服务器发送获取方法请求,所述获取方法请求用于请求需要进行登录控制的至少一个第一方法;
接收所述服务器发送的响应信息,所述响应信息中包括需要进行登录控制的第一方法以及所述第一方法所在类;
根据所述响应信息确定所述第一方法。
进一步地,所述响应信息中的信息通过数组表示,所述数组中每个元素用于标识所述需要进行登录控制的第一方法以及所述第一方法所在类。
进一步地,所述在终端的运行时环境中注册第一方法和第二方法对应的替换方法,包括:
在包含所述第一方法的所述终端的业务代码执行之前,在所述终端的运行时环境中注册第一方法和第二方法对应的替换方法。
本发明第二方面提供一种终端,包括:
确定模块,用于确定需要进行登录控制的第一方法,所述第一方法包含在所述终端的业务代码中;
注册模块,用于在终端的运行时环境中注册第一方法和第二方法对应的替换方法,其中,所述第二方法用于进行登录控制以及进行登录后的业务处理,所述第一方法和第二方法对应的替换方法用于替换所述第一方法和所述第二方法;
执行模块,用于执行所述终端的所述业务代码。
进一步地,所述第二方法中包括登录控制代码以及调用登录后的业务处理的方法的代码。
进一步地,所述第一方法和所述第二方法对应的替换方法用于确定所述第一方法所在类,以及在所述第一方法所在类中未实现所述第一方法时在所述第一方法所在类中增加所述第二方法并且替换所述第一方法和所述第二方法。
进一步地,所述第一方法和所述第二方法对应的替换方法还用于在所述第一方法所在类已经实现所述第一方法时替换所述第一方法以及第二方法。
进一步地,所述确定模块包括:
发送单元,用于向服务器发送获取方法请求,所述获取方法请求用于请求需要进行登录控制的至少一个第一方法;
接收单元,用于接收所述服务器发送的响应信息,所述响应信息中包括需要进行登录控制的第一方法以及所述第一方法所在类;
确定单元,用于根据所述响应信息确定所述第一方法。
进一步地,所述响应信息中的信息通过数组表示,所述数组中每个元素用于标识所述需要进行登录控制的第一方法以及所述第一方法所在类。
进一步地,所述注册模块包括:
第一注册单元,用于在包含所述第一方法的所述终端的业务代码执行之前,在所述终端的运行时环境中注册第一方法和第二方法对应的替换方法。
本发明所提供的方法,通过在终端的运行时环境中将进行登录后业务处理的第一方法与用于进行登录控制以及登录后业务处理的第二方法进行互换,使得在执行到终端的业务代码中的第一方法时,实际执行的为第二方法,而第二方法中登录控制部分与登录后业务处理部分不存在耦合,因此既保证了登录控制代码与登录后的业务处理代码不存在耦合,又保证了登录控制以及登录后业务处理的正常执行,因此,实现了在运行时动态进行登录控制,并且有效地降低了登陆控制的更新对原有业务的影响。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的登录控制处理方法的系统架构图;
图2为本发明提供的登录控制处理方法实施例一的流程示意图;
图3为本发明提供的登录控制处理方法实施例二的流程示意图;
图4为本发明提供的登录控制处理方法实施例三的流程示意图;
图5为本发明提供的终端实施例一的模块结构图;
图6为本发明提供的终端实施例二的模块结构图;
图7为本发明提供的终端实施例三的模块结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中在需要进行登录控制的业务功能的入口处添加登录控制代码,使得登录控制代码与业务功能原有代码的耦合度高。以下为现有技术中进行登录控制的代码示例:
在上述示例代码中,[wbloginsdkislogin]是登陆控制的方法,该方法被添加在每一个需要进行登录控制的业务功能的入口处。显然,现有技术的方法耦合度过高,会导致业务功能扩展时的复杂度增大。
本发明基于上述问题,提出一种登录控制处理方法,通过在终端的运行时环境中注册用于替换原有需要进行登录控制的功能代码与新的不不存在耦合的代码的替换方法,使得在原有需要进行登录控制的功能代码时实际执行新的不存在耦合的代码,从而降低代码耦合度。
图1为本发明所提供的登录控制处理方法的系统架构图,如图1所示,该方法涉及终端以及服务器,其中,终端是指可以app的终端,例如手机、平板电脑、台式机等,服务器是指app对应的服务器,如果终端中安装了多个app,则其对应的服务器也可能有多个,每个app与其对应的服务器进行交互。例如,在本发明中,需要进行登录控制的app通过与服务器交互,可以获知哪些方法需要进行登录控制。
图2为本发明提供的登录控制处理方法实施例一的流程示意图,该方法的执行主体为前述的终端,如图2所示,该方法包括:
s201、确定需要进行登录控制的第一方法。
在对第一方法进行替换之前,终端首先需要确定app中有哪些方法是第一方法,即需要进行登录控制的方法。具体通过与服务器的交互来完成,将在下述实施例中进行详细介绍。
s202、在终端的运行时环境中注册第一方法和第二方法对应的替换方法。
s203、执行终端的上述业务代码。
其中,上述第二方法用于进行登录控制以及进行登录后的业务处理,上述第一方法和第二方法对应的替换方法用于替换上述第一方法和上述第二方法
上述第一方法包含在终端的业务代码中。
具体地,上述终端的业务代码是指完成某一业务功能的代码,例如某app的修改用户信息的功能对应的代码。第一方法是业务代码中在登录之后才能执行代码。第一方法包含在业务代码中是指在某项业务功能对应的代码中,包括一部分代码,这部分代码需要在登录之后才能执行,这部分代码即指第一方法。即,第一方法仅实现登录之后的业务处理即可,而不需要实现登录控制。
而上述第二方法用于进行登录控制以及进行登录后的业务处理,在实现登录后的业务处理时,可通过调用业务处理对应的方法来实现,具体地,可以调用第二方法本身,而无需在第二方法中直接实现业务处理的功能,因此,在第二方法中既能同时完成登录控制以及登录后的业务处理,同时又保证登录控制与登录后的业务处理代码不存在耦合。同时,第二方法不包含在终端的业务代码中。
在终端的运行时环境中注册第一方法和第二方法对应的替换方法,即在app对应的代码被编译打包并下载到终端上执行时,即执行第一方法和第二方法对应的替换方法,使得第一方法和第二方法的方法指针进行替换,进而,在步骤s202中,当执行终端的业务代码时,当执行到业务代码中所包含的第一方法时,由于第一方法已经被替换为第二方法,因此实际会执行第二方法的代码,即执行登录控制以及登录后的业务处理,从而完成登录控制以及登录后的业务处理,从而既保证了登录控制代码与登录后的业务处理代码不存在耦合,即,即时登陆控制的逻辑发生变动也不会对原有业务处理代码逻辑造成影响,同时,又保证了登录控制以及登录后的业务处理的正常执行。
本实施例中,通过在终端的运行时环境中将进行登录后业务处理的第一方法与用于进行登录控制以及登录后业务处理的第二方法进行互换,使得在执行到终端的业务代码中的第一方法时,实际执行的为第二方法,而第二方法中登录控制部分与登录后业务处理部分不存在耦合,因此既保证了登录控制代码与登录后的业务处理代码不存在耦合,又保证了登录控制以及登录后业务处理的正常执行,因此,实现了在运行时动态进行登录控制,并且有效地降低了登陆控制的更新对原有业务的影响。
在上述实施例的基础上,本实施例涉及第二方法的具体实现过程。即,上述第二方法中包括登录控制代码以及调用登录后的业务处理的方法的代码。
具体地,第二方法中调用登录后的业务处理的方法,可以是调用第二方法本身。由于在运行时环境中对第一方法和第二方法进行了替换,因此,当执行到业务代码中的第一方法时,实际执行的为第二方法,当执行到第二方法中调用第二方法本身的代码时,实际执行的为第一方法,即执行登录后的业务处理代码。
以下为第二方法的一个示例(ios平台):
在上述实施例的基础上,本实施例涉及第一方法和第二方法对应的替换方法的具体实现过程。
即,第一方法和第二方法对应的替换方法用于确定第一方法所在类,以及在第一方法所在类中未实现第一方法时在第一方法所在类中增加第一方法并且替换第一方法和第二方法。
另外,第一方法和第二方法对应的替换方法还用于在第一方法所在类已经实现第一方法时替换第一方法以及第二方法。
以下为第一方法和第二方法对应的替换方法的一个示例(ios平台):
在上述实施例的基础上,本实施例涉及确定第一方法的具体方法,即,图3为本发明提供的登录控制处理方法实施例二的流程示意图,如图3所示,上述步骤s201具体包括:
s301、向服务器发送获取方法请求,该获取方法请求用于请求需要进行登录控制的至少一个第一方法。
在进行方法替换的注册之前,终端首先向服务器发送请求消息,以请求获取需要进行登录控制的至少一个第一方法。
s302、接收服务器发送的响应信息,该响应信息中包括需要进行登录控制的第一方法以及第一方法所在类。
服务器端预先记录了app中需要进行登录控制的方法及其所在类的信息,当接收到终端的请求之后,服务器向终端发送这些信息。
s303、根据响应信息确定第一方法。
在一种可选的实施方式中,上述响应信息中的信息通过数组表示,该数组中每个元素用于标识需要进行登录控制的第一方法以及一方法所在类。
以下为响应信息中数组的一个示例:
[
{
“methodname”:“aname”,
“classname”:“aclassname”
},
{
“methodname”:“aname”,
“classname”:“aclassname”
},
]
在上述示例中,数组中每个元素中包括了方法名称以及方法所在类的名称。
需要说明的是,本实施例中,服务器可能返回多个需要进行登录控制的方法,即app中可能存在多个第一方法,在这种情况下,需要预先创建与第一方法个数相同的第二方法的实例,并针对每个第一方法分别执行上述步骤s202-s203,即逐个在运行时环境中进行第一方法及与该第一方法对应的第二方法实例的替换。
在上述实施例的基础上,本实施例涉及在终端的运行时环境中注册第一方法和第二方法对应的替换方法的具体实现过程,即,图4为本发明提供的登录控制处理方法实施例三的流程示意图,如图4所示,上述方法具体包括:
s401、确定需要进行登录控制的第一方法。
s402、在包含第一方法的终端的业务代码执行之前,在终端的运行时环境中注册第一方法和第二方法对应的替换方法。
s403、执行终端的业务代码。
即,在包含第一方法的业务代码执行之前,在终端的运行时环境中注册第一方法和第二方法对应的替换方法,执行该过程之后,当执行终端中包含第一方法的业务代码时,由于第一方法和第二方法预先已经被替换,因此,可以保证实际执行的为第二方法。
以下为在终端的运行时环境中注册第一方法和第二方法对应的替换方法的代码示例(ios平台):
//执行具体的方法替换
[objswizzlemethod:@selector(targetmethod)
withmethod:@selector(swizzle_islogin:)]
图5为本发明提供的终端实施例一的模块结构图,如图5所示,该终端包括:
确定模块501,用于确定需要进行登录控制的第一方法,所述第一方法包含在所述终端的业务代码中。
注册模块502,用于在终端的运行时环境中注册第一方法和第二方法对应的替换方法,其中,所述第二方法用于进行登录控制以及进行登录后的业务处理,所述第一方法和第二方法对应的替换方法用于替换所述第一方法和所述第二方法。
执行模块503,用于执行所述终端的所述业务代码。
该终端用于实现前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
另一实施例中,所述第二方法中包括登录控制代码以及调用登录后的业务处理的方法的代码。
另一实施例中,所述第一方法和所述第二方法对应的替换方法用于确定所述第一方法所在类,以及在所述第一方法所在类中未实现所述第一方法时在所述第一方法所在类中增加所述第二方法并且替换所述第一方法和所述第二方法。
另一实施奖中,所述第一方法和所述第二方法对应的替换方法还用于在所述第一方法所在类已经实现所述第一方法时替换所述第一方法以及第二方法。
图6为本发明提供的终端实施例二的模块结构图,如图6所示,确定模块501包括:
发送单元5011,用于向服务器发送获取方法请求,所述获取方法请求用于请求需要进行登录控制的至少一个第一方法。
接收单元5012,用于接收所述服务器发送的响应信息,所述响应信息中包括需要进行登录控制的第一方法以及所述第一方法所在类。
确定单元5013,用于根据所述响应信息确定所述第一方法。
另一实施例中,所述响应信息中的信息通过数组表示,所述数组中每个元素用于标识所述需要进行登录控制的第一方法以及所述第一方法所在类。
图7为本发明提供的终端实施例三的模块结构图,如图7所示,注册模块502包括:
第一注册单元5021,用于在包含所述第一方法的所述终端的业务代码执行之前,在所述终端的运行时环境中注册第一方法和第二方法对应的替换方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。