场景简介

  1. 由于目前SDK免密接口是同步的,给用户返回成功时, 只是表示当前SDK的满足可以免密的条件, 真正免密认证是SDK内部异步发起的, 部分集成开发者希望获取到SDK内部免密成功或失败的事件以便给出自定义的交互提示
  2. 当前认证成功后, 部分集成开发者希望获取到SDK和代理服务器的连接/断开情况, 以便给出自定义的交互提示

基于以上两个需求, SDK提供了事件回调接口, 支持回调通知以下4类事件

1) 由于网络问题导致的内部免密失败事件, 该事件发生时内部还是会一直重试免密直到成功

2) 内部免密成功事件

3) 与代理服务器断开连接事件

4) 与代理服务器连接成功事件

前置步骤

在实际集成之前,我们要确保已经进行过开发准备

集成步骤

1、实现用户名密码主认证

参考典型场景用户名密码认证

2、实现 SFGenericNotifDelegate协议

举例简单实现:

/**
* 该控制器实现了SFGenericNotificationDelegate协议
*/
@interface BasicSceneViewController () <SFAuthResultDelegate, SFGenericNotificationDelegate>

@end

@implementation BasicSceneViewController

/**
* 实现方法
*/
- (void)onNotify:(SFGenericNotification *)notification {
    NSLog(@"onNotify:%ld, %@", (long)notification.notificationType, notification.msg);
    // 处理免密内部成功的事件
    if (notifContent.eventType == SFNotificaitonTypeTicketAuthFailed) {
        NSLog(@"do something...");
        // 处理免密内部失败的事件
    } eles if (notifContent.eventType == SFNotificaitonTypeTicketAuthSuccess) {
        NSLog(@"do other thing...");
    }
}

在对应的类上实现协议要求的方法,即可监听上述的四个事件。

SFGenericNotificationInfo介绍

SFGenericNotificationInfo中包括三个属性,notificationType,msg,code。

@interface SFGenericNotification : NSObject
@property (nonatomic, assign) SFNotificationType notificationType;
@property (nonatomic, copy) NSString *msg; // 提示信息
@property (nonatomic, assign) int code; // 事件详细错误码
@end

msg是关于这个事件的一些描述信息,code是事件的错误码,notificationType是传递的事件类型,其定义如下(可以在sdk中自行查看):

typedef NS_ENUM(NSInteger, SFNotificationType) {
    SFNotificaitonTypeTicketAuthFailed = 0,     // 内部免密认证失败
    SFNotificaitonTypeTicketAuthSuccess,          // 内部免密成功
    SFNotificaitonTypeDisconnectFromProxy,            // 探测到与服务端断开连接
    SFNotificaitonTypeConnectedToProxy,               // 探测到和服务端恢复连接
};

需要监听哪个事件,则在回调的内容中选择处理对应的事件即可。

results matching ""

    No results matching ""