阿里文档
问题所在:
[RPSDK start:verifyToken rpCompleted:^(AUDIT auditState) {
NSLog(@"verifyResult = %ld",(unsigned long)auditState);
if(auditState == AUDIT_PASS) { //认证通过。
}
else if(auditState == AUDIT_FAIL) { //认证不通过。
}
else if(auditState == AUDIT_IN_AUDIT) { //认证中,通常不会出现,只有在认证审核系统内部出现超时、未在限定时间内返回认证结果时出现。此时提示用户系统处理中,稍后查看认证结果即可。
}
else if(auditState == AUDIT_NOT) { //未认证,用户取消。
}
else if(auditState == AUDIT_EXCEPTION) { //系统异常。
}
}withVC:self.navigationController];
self.navigationController如何拿到?
解决:
新建NSObject类
.h
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
@interface ClientModule : NSObject<RCTBridgeModule>
@end
.m
#import "ClientModule.h"
#import <RPSDK/RPSDK.h>
@implementation ClientModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(startRZ:(NSString *)verifyToken resolver:(RCTResponseSenderBlock)callback){
dispatch_async(dispatch_get_main_queue(), ^{
UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
[RPSDK start:verifyToken rpCompleted:^(AUDIT auditState) {
NSLog(@"verifyResult = %ld",(unsigned long)auditState);
if(auditState == AUDIT_PASS) { //认证通过。
callback(@[@"AUDIT_PASS",@"认证通过"]);
}
else if(auditState == AUDIT_FAIL) { //认证不通过。
callback(@[@"AUDIT_FAIL",@"认证不通过"]);
}
else if(auditState == AUDIT_IN_AUDIT) { //认证中,通常不会出现,只有在认证审核系统内部出现超时、未在限定时间内返回认证结果时出现。此时提示用户系统处理中,稍后查看认证结果即可。
callback(@[@"AUDIT_IN_AUDIT",@"认证中"]);
}
else if(auditState == AUDIT_NOT) { //未认证,用户取消。
callback(@[@"AUDIT_NOT",@"未认证"]);
}
else if(auditState == AUDIT_EXCEPTION) { //系统异常。
callback(@[@"AUDIT_EXCEPTION",@"系统异常"]);
}
}withVC:(UINavigationController *)vc];
});
}
@end
通过UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;拿到跟视图在进行强转,当然更安全的做法是在根视图添加导航并且在此处进行controller类型判断。
调用:
const AliRZ = NativeModules.ClientModule :
AliRZ.startRZ(data, (result) => {
if(result == 'AUDIT_PASS'){
Toast.info('认证通过')
}else if(result == 'AUDIT_FAIL'){
Toast.info('认证通过')
}else if(result == 'AUDIT_IN_AUDIT'){
Toast.info('系统处理中,稍后查看认证结果')
}else if(result == 'AUDIT_NOT'){
Toast.info('未认证,用户取消')
}else if(result == 'AUDIT_EXCEPTION') {
Toast.info('系统异常')
}else{
Toast.info('未知错误')
}
})
注意点:
ios回调返回数据使用:
resolver:(RCTResponseSenderBlock)callback
callback(@[@"AUDIT_EXCEPTION",@"系统异常"]);
网友评论