一种移动端iOS登录态拦截校验的实现方法技术

技术编号:36422663 阅读:15 留言:0更新日期:2023-01-20 22:31
本发明专利技术提供了一种移动端iOS登录态拦截校验的实现方法,涉及互联网技术领域,包括以下的步骤:S1、创建按钮控件UIButton的分类Category文件,将该分类Category文件命名为interceptor,得到拦截器分类文件UIButton+interceptor;S2、通过所述的分类文件UIButton+interceptor,前往分类文件实现是否需要登录校验的布尔值属性isNeedLogin属性的声明和实现;S3、通过所述的分类文件UIButton+interceptor,前往分类文件实现类实现区间,实现方法的交换;S4、通过所述的分类文件UIButton+interceptor,前往分类文件实现类完成自定义方法sendCustomAction的在实现区间的定义和登录态校验;S5、完成拦截以及校验功能的实现,前往项目中进行具体使用。前往项目中进行具体使用。前往项目中进行具体使用。

【技术实现步骤摘要】
一种移动端iOS登录态拦截校验的实现方法


[0001]本专利技术涉及互联网
,具体的,本专利技术涉及一种移动端iOS登录态拦截校验的实现方法。

技术介绍

[0002]在开发移动端iOS平台的应用时,当App存在用户体系和登录功能时,并不是所有功能都能强制需要用户登录使用的,当部分功能不和用户挂钩时,苹果的审核规范是不允许强制用户先登录后使用的,如果出现不需要登录就能使用的场景但是在App中的实现却是需要用户登录才能使用,在苹果应用市场App Store的审核中会有应用审核被拒的风险,因此我们就需要针对这种需要登录和不需要登录的场景进行区别控制和实现。
[0003]现有的对于移动端iOS有用户登录体系的App,对绝大部分功能或者所有功能,强制用户登录使用,没有做到细分到每个功能,当确切需要登录才能使用的功能时才强制要求用户登录,不符合苹果应用市场App Store的审核的审核规范;而现有的对于移动端iOS的开发,针对部分功能必须需要登录才能使用时,需要在每个点击登录的地方去实现是否登录态的校验,实现起来比较繁杂,代码入侵性大,也不利于后续的维护。
[0004]因此需要一种更便捷的移动端iOS登录态拦截校验的实现方案。

技术实现思路

[0005]为了克服现有技术的不足,本专利技术提供了一种移动端iOS登录态拦截校验的实现方法,以解决上述的技术问题。
[0006]本专利技术解决其技术问题所采用的技术方法是:一种移动端iOS登录态拦截校验的实现方法,其改进之处在于:包括以下的步骤:S1、创建按钮控件UIButton的分类Category文件,将该分类Category文件命名为interceptor,得到拦截器分类文件UIButton+interceptor;S2、通过所述的分类文件UIButton+interceptor,前往分类文件实现是否需要登录校验的布尔值属性isNeedLogin属性的声明和实现;S3、通过所述的分类文件UIButton+interceptor,前往分类文件实现类实现区间,实现方法的交换;S4、通过所述的分类文件UIButton+interceptor,前往分类文件实现类完成自定义方法sendCustomAction的在实现区间的定义和登录态校验;S5、完成拦截以及校验功能的实现,前往项目中进行具体使用。
[0007]在上述方法中,所述步骤S1,包括以下的步骤:
[0008]S11、通过开发工具Xcode编辑器,右键选择新建文件操作New File新建文件,在弹出的文件类型选项中选择文件类型为Object

C File;
[0009]S12、在弹出的弹窗选项中编辑,选择文件类型File Type为分类Category,选择需要创建分类的类名类型Class为按钮控件类型UIButton,并将创建的分类Category文件File命名为interceptor,点击完成可得到iOS的按钮控件UIButton的分类文件UIButton+interceptor,用于实现登录态拦截校验的功能。
[0010]在上述方法中,所述步骤S2,包括以下的步骤:
[0011]S21、通过所述的分类文件UIButton+interceptor,前往分类文件的实现类UIButton+interceptor.m,通过导入库的关键字#import引入运行时库#import<objc/runtime.h>;
[0012]S22、前往分类文件的声明类UIButton+interceptor.h的声明区间@interface,声明是否需要登录校验的布尔值属性isNeedLogin,声明为@property(nonatomic,assign)BOOL isNeedLogin;
[0013]S23、前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,实现是否需要登录校验属性isNeedLogin的设值方法(void)setIsNeedLogin:(BOOL)isNeedLogin{},通过运行时runtime库的使用给定的键和关联策略为给定对象设置关联值方法objc_setAssociatedObject,通过传入本类self作为关联对象,同时将传入的值isNeedLogin进行关联更新,通过传入唯一的标识interceptor_isNeedLogin作为关联的键,用于后续取值,同时设置关联对象的引用类型为OBJC_ASSOCIATION_RETAIN_NONATOMIC;
[0014]S24、前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,实现是否需要登录校验属性isNeedLogin的取值方法(BOOL)isNeedLogin{},通过运行时runtime库的获取关联对象值方法objc_getAssociatedObject,通过传入本类self作为关联对象,传入关联的键参数值interceptor_isNeedLogin,用于关联和获取所述的是否需要检验登录态isNeedLogin设置的值。
[0015]在上述方法中,所述步骤S3,包括以下的步骤:
[0016]S31、通过所述的分类文件UIButton+interceptor,前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,重写加载方法+(void)load{},实现此方法,以在加载时执行方法的拦截交换;
[0017]S32、前往加载方法load实现区间,定义一个原始旧方法选择器oldSEL,即SEL oldSEL=@selector(sendAction:to:forEvent:),然后定义一个旧实例方法oldMethod,并通过运行时库的获取实例方法方法class_getInstanceMethod,通过将所述的得到的旧方法选择器oldSEL以及当前类self作为检查的类,获得旧实例方法oldMethod,即Method oldMethod=class_getInstanceMethod(self,oldSEL);
[0018]S33、定义一个自定义新方法选择器newSEL,即SEL newSEL=@selector(sendCustomAction:to:forEvent:),用于进行和旧实例方法oldMethod交换和处理登录拦截的业务处理;然后定义一个自定义新实例方法newMethod,并通过运行时库的获取实例方法方法class_getInstanceMethod,通过将所述的得到的自定义新方法选择器newSEL以及当前类self作为检查的类,获得旧实例方法newMethod,即Method newMethod=class_getInstanceMethod(self,newSEL);
[0019]S34、通过运行时动态类添加一个新的方法即class_addMe本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种移动端iOS登录态拦截校验的实现方法,其特征在于:包括以下的步骤:S1、创建按钮控件UIButton的分类Category文件,将该分类Category文件命名为interceptor,得到拦截器分类文件UIButton+interceptor;S2、通过所述的分类文件UIButton+interceptor,前往分类文件实现是否需要登录校验的布尔值属性isNeedLogin属性的声明和实现;S3、通过所述的分类文件UIButton+interceptor,前往分类文件实现类实现区间,实现方法的交换;S4、通过所述的分类文件UIButton+interceptor,前往分类文件实现类完成自定义方法sendCustomAction的在实现区间的定义和登录态校验;S5、完成拦截以及校验功能的实现,前往项目中进行具体使用。2.如权利要求1所述的一种移动端iOS登录态拦截校验的实现方法,其特征在于:所述步骤S1,包括以下的步骤:S11、通过开发工具Xcode编辑器,右键选择新建文件操作New File新建文件,在弹出的文件类型选项中选择文件类型为Object

C File;S12、在弹出的弹窗选项中编辑,选择文件类型File Type为分类Category,选择需要创建分类的类名类型Class为按钮控件类型UIButton,并将创建的分类Category文件File命名为interceptor,点击完成可得到iOS的按钮控件UIButton的分类文件UIButton+interceptor,用于实现登录态拦截校验的功能。3.如权利要求2所述的一种移动端iOS登录态拦截校验的实现方法,其特征在于:所述步骤S2,包括以下的步骤:S21、通过所述的分类文件UIButton+interceptor,前往分类文件的实现类UIButton+interceptor.m,通过导入库的关键字#import引入运行时库#import<objc/runtime.h>;S22、前往分类文件的声明类UIButton+interceptor.h的声明区间@interface,声明是否需要登录校验的布尔值属性isNeedLogin,声明为@property(nonatomic,assign)BOOL isNeedLogin;S23、前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,实现是否需要登录校验属性isNeedLogin的设值方法(void)setIsNeedLogin:(BOOL)isNeedLogin{},通过运行时runtime库的使用给定的键和关联策略为给定对象设置关联值方法objc_setAssociatedObject,通过传入本类self作为关联对象,同时将传入的值isNeedLogin进行关联更新,通过传入唯一的标识interceptor_isNeedLogin作为关联的键,用于后续取值,同时设置关联对象的引用类型为OBJC_ASSOCIATION_RETAIN_NONATOMIC;S24、前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,实现是否需要登录校验属性isNeedLogin的取值方法(BOOL)isNeedLogin{},通过运行时runtime库的获取关联对象值方法objc_getAssociatedObject,通过传入本类self作为关联对象,传入关联的键参数值interceptor_isNeedLogin,用于关联和获取所述的是否需要检验登录态isNeedLogin设置的值。4.如权利要求3所述的一种移动端iOS登录态拦截校验的实现方法,其特征在于:所述步骤S3,包括以下的步骤:
S31、通过所述的分类文件UIButton+interceptor,前往分类文件的实现类UIButton+interceptor.m的实现区间@implementation,重写加载方法+(void)load{},实现此方法,以在加载时执行方法的拦截交换;S32、前往加载方法load实现区间,定义一个原始旧方法选择器oldSEL,即SEL oldSEL=@selector(sendAction:to:forEvent:),然后定义一个旧实例方法oldMethod,并通过运行时库的获取实例方法方法class_getInstanceMethod,通过将所述的得到的旧方法选择器oldSEL以及当前类self作为检查的类,获得旧实例方法oldMethod,即Method oldMethod=class_getInstanceMethod(self,oldSEL);S33、定义一个自定义新方法选择器newSEL,即SEL newSEL=@selector(sendCustomAction:to:forEvent:),用于进行和旧实例方法oldMethod交换和处理登录拦截的业务处理;然后定义一个自定义新实例方法newMethod,并通过运行时库的获取实例方法方法class_getInstanceMethod,通过将所述的得到的自定义新方法选择器newSEL以及当前类self作为检查的类,获得旧实例方法newMethod,即Method newMethod=class_getInstanceMethod(self,newSEL);S34、通过运行时动态类添加一个新的方法即class_addMethod,获取到添加结果的布尔值didAddMethod;S35、当动态添加方法class_addMethod返回结果即didAddMethod为假值fals...

【专利技术属性】
技术研发人员:潘信璋
申请(专利权)人:银盛支付服务股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1