号码认证服务PNVS

    一键登录流程

    号码认证SDK对外提供的头文件SAuthLoginSDKLib,使用时需要先调用初始化SDK接口,然后再调用一键登录接口,流程:

    • 需要先保证SDK已经初始化,调用过方法startSDKWithAppKey、secretKey、userInfo。
    • 调用接口authLoginWithParameters:completion:进行一键登录。
    • 判断手机开启流量的SIM对应的运营商,调用运营商SDK进行登录操作,弹出授权页面并点击授权登录。
    • 完成一键登录,通过回调并在resultString结果中拿到返回的状态和数据。

    注意:

    1、可不调用预登录接口,直接调用一键登录接口

    2、为优化用户体验,减少一键登录时间,可提 前调用预登录接口

    接口说明

    初始化SDK

    保证在使用一键登录、号码认证功能前已经执行了初始化操作。

    /**
     * SDK初始化接口
     @param appKey     初始化SDK需要的参数,需要提前申请
     @param secretKey     初始化SDK需要的参数,需要提前申请
     @param userInfo     初始化SDK需要的参数,用户的自定义参数
     */
    + (void)startSDKWithAppKey:(NSString *)appKey secretKey:(NSString *)secretKey userInfo:(NSDictionary *)userInfo;

    参数说明

    参数 类型 说明
    appKey NSString
    secretKey NSString
    userInfo NSDictionary 自定义参数

    预登录

    预登录接口进行运营商判断、网络状态判断,通过运营商能力获取后续进行一键登录的accessToken进行缓存,帮助后续一键登录流程减少等待时间。

    通过设置参数 carrierType 进行运营商类型指定,默认SALoginCarrierTypeDefault为由SDK自主判断,指定类型时只按照此类型进行预登录、一键登录,类型不匹配则会返回固定错误码。

    接口默认超时时间为8秒,传入大于0的 timeout ,可对接口超时时间进行限制。

    typedef NS_ENUM(NSUInteger, SALoginCarrierType) { SALoginCarrierTypeDefault = 0, SALoginCarrierTypeChinaMobile = 1, // 中国移动 SALoginCarrierTypeChinaUnicom = 2, // 中国联通 SALoginCarrierTypeChinaTelecom = 3, //中国电信
    };
    /**
    预登录接口
    @param carrierType 指定登录运营商 @param timeout 接口响应超时时间 @param completion 回调结果
    */
    + (void)preAuthLoginWithCarrierType:(SALoginCarrierType)carrierType
                                timeout:(NSTimeInterval)timeout
    completion:(void(^)(NSString *resultString))completion;

    参数说明

    参数 类型 说明
    carrierType SALoginCarrierType 指定一键登录类型
    timeout NSTimeInterval 接口超时时间
    completion void(^)(NSString *resultString) 返回结果,JSON String

    返回数据格式

    {
    "0": 0, // 主状态,0为成功 
    "1": 0, // 子状态,0为成功
    "2": "3", // 运营商
    "3": ""
    }

    一键登录

    调用一键登录接口,会弹出授权⻚面,展示运营商信息和自定义的App相关信息,用户授权点击“登录”按钮后进行一键登录服务交互,结束后通过completion进行回调。

    一键登录时传入 SAuthUICustomModel 对象进行登录界面的UI自定义配置,详细参考界面配置。

    登录接口
    @param customModel 自定义UI配置Model @param timeout 接口响应超时时间 @param jsonString 登录透传参数 @param completion 回调结果
    */
    + (void)authLoginWithCustomModel:(SAuthUICustomModel *)customModel
                             timeout:(NSTimeInterval)timeout
    parameters:(NSString *)jsonString completion:(void(^)(NSString *resultString))completion;

    参数说明

    参数 类型 说明
    customModel SAuthUICustomModel 自定义界面配置
    timeout NSTimeInterval 接口超时时间
    completion void(^)(NSString resultString) 返回结果,JSON String

    返回数据格式举例:

    {
    "0": 0,
    "1": 0,
    "2": "3",
    "3": "{\"data\":{...返回的数据内容...}"
    }

    关闭授权页面

    一键登录结束会收到回调completion,需在收到回调时关闭授权⻚面。在未接收到回调前进行界面关闭操作,会影响到下次登录流程。

    /**
    关闭授权登录⻚
    @param completion 关闭完成后回调
    */
    + (void)closeLoginViewControllerWithCompletion:(void (^)(void))completion;

    参数说明

    参数 类型 说明
    completion void(^)(NSString *resultString) 关闭⻚面后执行的代码

    授权页面设置

    image.png

    通过设置SAuthUICustomModel类型的CustomModel,来改变弹出授权⻚面的内容和结构。授权⻚面 可以更改UI控件的样式和布局。

    展现样式

    包含全屏、底部弹出Sheet、中间弹出Alert三种方式。同时,针对全屏模式,可分为右侧弹出带导航 栏,和底部弹出Present无导航栏两种效果。

    UI组件

    • 状态栏:可设置为默认和LightContent样式
    • 导航栏:可设置背景图片,标题样式,返回按钮等,只支持右侧弹出时设置
    • Logo图片:可替换图片,设置图片frame,隐藏图片
    • 电话号码:可设置文字样式,Y偏移,不可隐藏
    • 登录按钮:可设置背景图片,文字样式等,不可隐藏
    • 隐私协议:可设置协议内容,文字颜色,勾选状态等,不可隐藏
    • Slogon:可设置是否隐藏,不可更改
    • 自定义view:可添加各种自定义view组件

    SAuthUICustomModel 属性

    通过设置CustomModel参数,可以实现在授权⻚面上增加自定义试图,调整现有UI组件位置和属性。 当前VC:使用一键登录功能必传

    /** 授权⻚面弹出的 */
    @property (nonatomic,weak) UIViewController *currentVC;

    展现形式

    /** 授权⻚展现形式,默认为全屏 */
    @property (nonatomic, assign) SAuthLoginShowStype authViewShowStyle;
    /** Sheet形式弹出生效,弹出sheet高度 */
    @property (nonatomic, strong) NSNumber *sheetHeight;
    /** alert形式弹出时生效,圆⻆半径 */
    @property (nonatomic, assign) CGFloat alertCornerRadius;
    /** alert形式弹出时生效,宽相对屏幕比例,默认是0.8 */ @property (nonatomic,assign) CGFloat alertWidthScale; /** alert形式弹出时生效,高相对屏幕比例,默认0.6 */ @property (nonatomic,assign) CGFloat alertHeightScale;
    /** 针对全屏时设置弹出方向 */
    @property (nonatomic, assign) SAPresentationDirection presentType;

    状态栏:

     /** 状态栏样式,内部通过preferredStatusBarStyle实现 */
    @property (nonatomic,assign) UIStatusBarStyle statusBarStyle;

    导航栏:

    只有全屏模式,右侧弹出时生效

    /** 导航栏是否隐藏,右侧全屏出现时支持设置,默认不隐藏 */ @property (nonatomic, assign) BOOL navIsHidden;
    /** 导航栏主题色 */
    @property (nonatomic, strong) UIColor *navColor;
    /** 导航栏标题,内容、字体、大小、颜色 */
    @property (nonatomic, copy) NSAttributedString *navTitle;
    /** 导航栏返回按钮图片 */
    @property (nonatomic, strong) UIImage *navBackImage;

    背景图片:

     /** 登录⻚整体背景图片 */
    @property (nonatomic,strong) UIImage *authPageBackgroundImage;

    logo图片

    /** 设置logo图片 */
    @property (nonatomic, strong) UIImage *logoImage;
    /** logo是否隐藏 */
    @property (nonatomic, assign) BOOL logoIsHidden;
    /** 设置logo展示的frame */
    @property (nonatomic, copy) SAUIComponentFrameBlock logoImageFrameBlock;

    号码

     /** 手机号码文本的样式,设置文本内容不生效 */
    @property (nonatomic, strong) NSAttributedString *phoneNumberText;
    /** 设置手机号码Y偏移,超出显示区域不生效 */
    @property (nonatomic, copy) NSNumber *phoneNumberOffY;

    登录按钮

    /** 登录按钮文本和样式 */
    
    @property (nonatomic, strong) NSAttributedString *loginBtnText;
    /** 登录按钮背景图片,@[激活状态的图片,失效状态的图片,高亮状态的图片]*/
    @property (nonatomic, strong) NSArray *loginBtnImgs;
    /** 设置登录按钮展示的frame,超出显示区域不生效 */
    @property (nonatomic, copy) SAUIComponentFrameBlock 
    loginBtnFrameBlock;

    隐私条款

    /** 隐私条款复选框背景图片,@[选中状态图片,未选中状态图片] */ @property (nonatomic, strong) NSArray *checkboxImgs;
    /** 隐私条款复选框边⻓ */
    @property (nonatomic, strong) NSNumber *checkboxSize;
    /** 隐私条款复选框默认状态 默认:NO */
    @property (nonatomic, assign) BOOL privacyState;
    /** 隐私条款文字对⻬方式 默认:左对⻬*/
    @property (nonatomic, assign) NSTextAlignment appPrivacyAlignment;
    /** 隐私条款名称两侧是否开启书名号 默认:不开启 */ @property (nonatomic, assign) BOOL privacySymbol;
    /** 隐私条款字体 */
    @property (nonatomic, strong) UIFont *privacyFont;
    /** 协议1,[协议名称,协议Url],注:两个协议名称不能相同 */
    @property (nonatomic, copy) NSArray<NSString *> *privacyFirst;
    /** 协议2,[协议名称,协议Url],注:两个协议名称不能相同 */
    @property (nonatomic, copy) NSArray<NSString *> *privacySecond;
    /** 协议3,[协议名称,协议Url],注:三个协议名称不能相同 */
    @property (nonatomic, copy) NSArray<NSString *> *privacyThird;
    /** 隐私条款内容颜色数组,@[非点击文案颜色,点击文案颜色] */
    @property (nonatomic, copy) NSArray<UIColor *> *privacyColors;
    /** 隐私条款整体frame,包含前面复选框,注意height会根据文字自动计算,不会根据设置处理 */ @property (nonatomic, copy) SAUIComponentFrameBlock privacyFrameBlock;

    slogan

    /** slogon是否隐藏 */
    @property (nonatomic, assign) BOOL slogonIsHidden;

    自定义控件

    /** 自定义控件设置,在block中创建自定义view,addSubView到containerView中 */ @property (nonatomic,copy) void(^customViewBlock)(UIView *containerView);

    隐私协议web页面

    /** web协议界面导航栏返回按钮图片 */
    @property (nonatomic, strong) UIImage *webNavReturnImg;
    /** web协议界面导航标题字体属性设置,如:@{NSForegroundColorAttributeName: [UIColor blackColor], NSFontAttributeName: [UIFont systemFontOfSize:20]} */
    @property (nonatomic, strong) NSDictionary<NSAttributedStringKey, id> *webNavTitleAttrs;
    /** web协议界面导航标题栏颜色 */
    @property (nonatomic,strong) UIColor *webNavColor;

    Frame设置方式

    /** 设置UI控件Frame的block,screenSize为屏幕尺寸,containerViewSize为容器视图尺寸 */ typedef CGRect(^SAUIComponentFrameBlock)(CGSize screenSize, CGSize containerViewSize);
    上一篇
    开发流程
    下一篇
    登录返回数据说明