场景简介
- 由于目前 SDK 免密接口是同步的,给用户返回成功时, 只是表示当前 SDK 的满足可以免密的条件, 真正免密认证是 SDK 内部异步发起的, 部分集成开发者希望获取到 SDK 内部免密成功或失败的事件以便给出自定义的交互提示
- 当前认证成功后, 部分集成开发者希望获取到 SDK 和代理服务器的连接/断开情况, 以便给出自定义的交互提示
基于以上两个需求, SDK 提供了事件回调接口, 支持回调通知以下 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, // 探测到和服务端恢复连接
};
需要监听哪个事件,则在回调的内容中选择处理对应的事件即可。