一种应用程序界面上功能按钮的开关控制方法和系统与流程

文档序号:11544927阅读:368来源:国知局
一种应用程序界面上功能按钮的开关控制方法和系统与流程

本发明涉及应用程序界面技术领域,更具体地,涉及一种应用程序界面上功能按钮的开关控制方法和系统。



背景技术:

当开启一个应用程序时,首先展现的界面称之为主界面,主界面上具有一定数量的功能按钮,点击每个功能按钮都会出现对应的功能界面。

图1示出了某款直播软件的主界面示意图,图中“颜值”、“推荐”、“手游”、“娱乐”、“游戏”、“趣玩”等均为功能按钮,点击每个功能按钮都会出现对应所述功能按钮的功能界面,例如,当点击“颜值”功能按钮时,将会出现图2所示的“颜值”子界面,图2的右上角显示的“热门”和“附近”同样是功能按钮,如果进一步点击“热门”和“附近”,将会出现对应的功能界面。

现有技术中,每次开启应用时,前台会向后台服务器询问子界面中的功能按钮是否打开,例如,在开启上述直播软件时,前台会向后台服务器询问“附近”按钮是否打开,但事实上这不但影响应用的启动速度,因为启动的时候进行了网络请求操作,网络请求操作占用了系统的资源,从而减慢了应用的启动速度,而且由于后台服务器的数据随时可能发生变化,仅仅在开启应用时才判断子界面的功能按钮是否打开,将影响数据的更新。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的应用程序界面上功能按钮的开关控制方法和系统。

根据本发明的一个方面,提供一种应用程序界面上功能按钮的开关控制方法,包括:

s1、当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

s2、基于所述服务器返回的应答,开启或关闭所述功能按钮。

根据本发明的另一个方面,还提供一种应用程序界面上功能按钮的开关控制系统,包括:

发送请求数据单元,用于当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

开关控制单元,基于所述服务器返回的应答,开启或关闭所述功能按钮。

本申请提出一种应用程序界面上功能按钮的开关控制方法和系统,通过在跳转至功能按钮所在界面时向服务器发送是否开启该功能按钮的请求数据,有效避免了因为网络访问引起的应用程序启动速度慢的问题,同时能够提高开关状态更新检测的频率,提高状态更新的及时性。

附图说明

图1为现有技术中某应用程序的主界面视图;

图2为现有技术中某应用程序的子界面视图;

图3为根据本发明实施例的应用程序界面上功能按钮的开关控制方法示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

为了克服现有技术在应用程序启动时向后台服务器询问子界面中的功能按钮是否打开,导致的因进行网络请求操作影响应用程序启动速度以及更新请求频率过低的问题,本发明提供了一种应用程序界面上功能按钮的开关控制方法。

图3示出了本发明实施例的应用程序界面上功能按钮的开关控制方法,包括:

s1、当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

s2、基于所述服务器返回的应答,开启或关闭所述功能按钮。

因此,本发明首先将更新子界面中功能按钮的触发时间由软件启动时更新修改为跳转至所述子界面时才更新。这样做能够有效的避免因为网络访问引起的应用程序启动速度慢的问题,同时如果后台服务器对所述子界面上的功能按钮进行了更新,下次跳转至所述子界面时能够及时的进行状态获取并更新所述功能按钮,即一方面避免了现有技术中影响应用启动速度的问题,另一方面提高了状态更新接口方案的频率(进入子界面的次数显然要比打开应用程序的次数多),能够提高状态更新的及时性。能够相比于现有技术更及时的更新功能按钮开关的状态。

既然是针对是否开启某个特定功能按钮而发送的请求数据,那么显然,请求数据包含该功能按钮所在的界面信息,例如,以图1所示的软件为例,如果用户点击“颜值”功能按钮时,应用程序必然会跳转至“颜值”子界面,此时,应用程序向服务器发送的请求数据中就包含:是否打开“颜值”界面信息中的“附近”功能按钮,服务器就会知晓是针对“颜值”界面中的“附近”按钮,而不是针对“手游”界面的“附近”按钮(假设“手游”界面中也存在“附近”按钮)。

但是,如果请求数据仅仅包含该功能按钮所在的界面信息,那么黑客在知悉服务器提供的网址接口时,就可以伪造请求数据,随意地对功能按钮进行控制,因此,为了消除这种隐患,在一个实施例中,请求数据还包括:用户唯一标识码和用户token信息。

因此,在一个实施例中,在步骤s1之前,本发明还包括:

当用户登录应用程序时,应用程序将用户的账号和密码加密,并将加密后的用户的账号和密码发送至所述服务器。

服务器对所述加密后的用户的账号和密码进行解密,获得解密后的用户的账号和密码,服务器基于解密后的用户的账号和密码,生成并保存对应所述用户账号的用户唯一标识码和用户token信息。token信息在计算机身份认证中是令牌(临时)的意思,说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

所述服务器将所述用户唯一标识码和用户token信息返回至所述应用程序,应用程序将该用户唯一标识码和用户token信息保存在本地,进一步地,本发明中该用户唯一标识码和用户token信息在本地的保存时间是具有时效的,如果超过时效,应用程序将把该用户唯一标识码和用户token信息删除,并要求用户重新登录,这样能够进一步提高请求数据的安全性。

另外,请求数据发送用户唯一标识码和用户token信息,而不是直接发送用户的账号和密码,能够减少黑客窃听出用户账号和密码的几率,提高了用户侧的安全。

在一个实施例中,当服务器接收到包含用户唯一标识码和用户token信息的请求数据后,对请求数据包含的用户唯一标识码和用户token信息进行验证,如果服务器中保存的用户唯一标识码和用户token信息中包含有请求数据中的用户唯一标识码和用户token信息,那么就会进行向应用程序发送应答,否则,服务器不会返回任何数据。这样就能够有效的对服务器接口起到保护作用。

在一个实施例中,请求数据还包括发送该请求数据的请求时间,这样设置能够减少多次请求的间隔,避免因应用错误导致不断给服务器发送请求,从而服务器因为请求数量巨大导致异常的问题。例如,如果应用程序连续发送2次请求的时间小于5秒,服务器不会相应这两次请求。

在一个实施例中,服务器返回的应答包括:开启所述功能按钮的应答或关闭所述功能按钮的应答。显然,本发明中服务器返回的应答简单明了。

在一个实施例中,步骤s2中根据所述服务器返回的应答开启所述功能按钮,包括:

基于所述服务器返回的开启所述功能按钮的应答,检测当前时刻的功能按钮是否处于开启状态;

若当前时刻的功能按钮处于开启状态,不再调整所述功能按钮的可见性,可见性即功能按钮开启或关闭的状态,开启即为可见,关闭即为不可见;

若当前时刻的功能按钮处于关闭状态,开启所述功能按钮。

经过多重判断,如果需要打开,首先判断按钮是否已经开启,如果目前还没有打开,则打开该功能按钮的显示,如果目前已经打开,则不进行其他操作,通过这个判断,提高了应用程序的执行效率。

在一个实施例中,步骤s2中根据所述服务器返回的应答关闭所述功能按钮,包括:

基于所述服务器返回的关闭所述功能按钮的应答,检测当前时刻的功能按钮是否处于关闭状态;

若当前时刻的功能按钮处于关闭状态,不再调整所述功能按钮的可见性;

若当前时刻的功能按钮处于开启状态,关闭所述功能按钮。

经过多重判断,如果需要关闭,首先判断按钮是否已经关闭,如果目前还没有关闭,则关闭该功能按钮的显示,如果目前已经关闭,则不进行其他操作,通过这个判断,提高了应用程序的执行效率。

在一个实施例中,为了能够让后台服务器控制应用程序的附近功能的开关信息,我们自定义了一套协议,用于专门来控制前台附近按钮的开关消息。本协议总共包含2个部分,

其一是提交给服务器的请求数据,其二是服务器返回的数据。

服务器请求协议格式如下,协议字段相关说明见参考协议中的描述:

本协议在设计过程中在接口的请求中增加了这个属性字段,目前是颜值有附近功能,后续如果其他类目有附近功能需要增加的时候,本协议不需要进行更新和升级操作。提高了协议本身的兼容性。

本协议增加了uuid和token用户相关的描述信息,只有被服务器认证过的用户信息的请求才会给予访问,否则服务器不会返回任何数据。这样就能够有效的对接口起到保护作用。

time属性用于标记当前的请求时间,如果同一用户2次请求的时间小于5秒,服务器不会响应,同一用户只有2次请求的时间间隔大于5秒的时候服务器才能够给出响应信息。这个字段设计的主要目的是为了降低多次请求的间隔,避免因为应用错误导致不断给服务器发送请求,从而服务器因为请求数量巨大导致异常的问题。

协议的返回数据非常简单,如果是打开附近功能,那么isshownear字段的值是true,否则为false。返回数据简单明了。

在一个实施例中,通过服务器提供的网址接口信息,应用程序需要向服务器的地址https://capi.douyucdn.cn/api/v1/getnearswitchstatus来提交获取颜值开关的,在调用上述接口的时候我们需要调用应用中的getnearswitchstatus函数来进行接口的调用。getnearswitchstatus函数主要功能是获取附近按钮的开关信息。getnearswitchstatus函数的完整定义如下:

booleangetnearswitchstatus(stringtagid,stringuuid,stringtoken,longtime);

获取服务器的开挂信息的时候需要传递4个参数进去,这4个参数的含义如下所述:

tagid:所述的界面,目前表示颜值的,后续可以兼容其他栏目信息,该id主要用于区分栏目信息使用的。

uuid:用户唯一标示码,用于表示用户的身份信息

token:身份的校验信息,token可能失效,如果token失效的话需要重新请token信息。重新请求token信息的函数是refushtoken函数。

返回值返回的是一个boolan变量,如果返回的是true,表示服务器后台附近开关是打开的。如果返回的是false表明服务器后台的附近开关是关闭的。

通过封装将获取服务器请求等数据全部封装到自定义的getnearswitchstatus函数中,并且将服务器返回的结果进行返回。getnearswitchstatus函数内部封装了网络请求和网络解析等相关流程,并将最终结果返回,大大提高了集成度和该接口的复用性。后续如果有其他人需要知道服务器附近功能状态开关情况可以直接调用我们实现的getnearswitchstatus函数来进行获取。

在一个实施例中,通过getnearswitchstatus函数能够返回服务器的附近功能的开关状态。如果附近功能是打开的那么我们调用shownearbutton函数(自定义函数)来显示附近功能按钮。如果附近功能是关闭的,通过调用hidenearbutton函数(自定义函数)来隐藏附近功能。

其中,shownearbutton函数的功能:该函数主要功能是显示附近按钮。

hidenearbutton函数的功能:该函数主要功能是隐藏附近按钮。其中hidenearbutton的实现和shownearbutton类似,只是在逻辑判断的时候显示和隐藏的逻辑是反的。

shownearbutton(自定义函数)的函数实现如下所示:

1、首先通过系统提供的container.findviewbyid(r.id.near_button)函数来找到按钮控件,找到的按钮控件为buttonnearbtn,我们将找到的按钮控件标记为nearbtn。

a)其中container是系统的一个布局文件,这个container是在fragment中系统提供的。container可以理解为系统控件的承载容器。

b)通过findviewbyid函数,能够将界面上的控件和代码中的按钮对象button进行绑定,findviewbyid函数能将界面上的按钮和代码中的button对象进行绑定,绑定后的按钮对象我们标记为nearbtn。

c)通过对nearbtn引用,能够对界面上的按钮进行动态调整。

2、对nearbtn对象进行判断

a)判断条件1是if(nearbtn!=null&&nearbtn.isvisible()==true)。该判断语句是,nearbtn不为空并且nearbtn.isvisible()为真时(表示按钮可见),由于按钮本身就是可见的,此时不用再次设置按钮的可见性。

b)当条件1不满足的时候判断条件2是if(nearbtn!=null&&nearbtn.isvisible()==false)。该判断语句是nearbtn不为空并且nearbtn.isvisible()为假时(表示按钮不可见),此时就需要调用nearbtn中的setvisible(true)函数来将附近按钮显示出来。

c)当条件1不满足且条件2不满足的时候,也就是if(nearbtn==null)的时候,既nearbtn等于空的时候。此时如果对nearbtn进行操作就会引起空指针异常,所以将这种不正常的情况打印到日志信息中,方便后期进行查看。

hidenearbutton(自定义函数)的函数实现如下所示:

1、首先通过系统提供的container.findviewbyid(r.id.near_button)函数来找到按钮控件,找到的按钮控件为buttonnearbtn,将找到的按钮控件标记为nearbtn。

a)其中container是系统的一个布局文件,这个container是在fragment中系统提供的。container可以理解为系统控件的承载容器。

b)通过findviewbyid函数,能够将界面上的控件和代码中的按钮对象button进行绑定,findviewbyid函数能将界面上的按钮和代码中的button对象进行绑定,绑定后的按钮对象标记为nearbtn。

c)通过对nearbtn引用,能够对界面上的按钮进行动态调整。

当对nearbtn对象进行判断时:

a)判断条件1是if(nearbtn!=null&&nearbtn.isvisible()==true)。该判断语句是,nearbtn不为空并且nearbtn.isvisible()为真时(表示按钮可见),此时我们就需要调用nearbtn中的setvisible(false)函数来将附近按钮隐藏起来。

b)当条件1不满足的时候判断条件2是if(nearbtn!=null&&nearbtn.isvisible()==false)。该判断语句是nearbtn不为空并且nearbtn.isvisible()为假时(表示按钮不可见),由于按钮本身就是不可见的,此时我们不用再次设置按钮的可见性。

c)当条件1不满足且条件2不满足的时候,也就是if(nearbtn==null)的时候,既nearbtn等于空的时候。此时对nearbtn进行操作就会引起空指针异常,所以将这种不正常的情况打印到日志信息中,方便后期进行查看。

经过多重判断,如果需要显示首先判断按钮是否可见,如果不可见才调用setvisible(true)显示,如果可见就不用做其他操作了。通过这样简单的判断提高了程序的执行效率。

对nearbtn为null做了特定的处理,避免了程序执行异常情况的发生

通过函数的封装,以后简单的调用shownearbutton和hidenearbutton就能够快速的将按钮进行显示和隐藏掉了。

在一个实施例中,本发明还提供一种应用程序界面上功能按钮的开关控制系统,包括:

发送请求数据单元,用于当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

开关控制单元,基于所述服务器返回的应答,开启或关闭所述功能按钮。

在一个实施例中,开关控制系统还包括:

账号密码发送单元,用于当用户登录应用程序时,应用程序将用户的账号和密码加密发送至所述服务器;

用户信息接收单元,用于接收服务器返回的用户唯一标识码和用户token信息。

其中,服务器基于所述用户的账号和密码,生成并保存对应所述用户账号的用户唯一标识码和用户token信息,随后将所述用户唯一标识码和用户token信息返回至所述用户信息接收单元。

在一个实施例中,开关控制系统还包括:用户信息验证单元,设置在服务器中,用于对用户的用户唯一标识码和用户token信息进行验证,若验证通过,则向所述应用程序返回应答,反之,则不向所述应用程序返回应答。

在一个实施例中,用户信息验证单元将应用程序发送的用户唯一标识码和用户token信息与自身保存的用户唯一标识码和用户token信息进行匹配,若匹配成功,则判定为验证通过,反之,则判定为验证不通过。

在一个实施例中,本发明公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:

s1、当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

s2、基于所述服务器返回的应答,开启或关闭所述功能按钮。

在一个实施例中,本发明公开了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:

s1、当应用程序跳转至功能按钮所在界面时,向服务器发送是否开启所述功能按钮的请求数据;以及

s2、基于所述服务器返回的应答,开启或关闭所述功能按钮。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1