请注意,本文编写于 1088 天前,最后修改于 1088 天前,其中某些信息可能已经过时。
因为工作上需要用到极验OnePass认证,但是没有找到相关的Flutter插件,于是乎手动撸了一个Flutter版的OnePass插件
集成插件
dependencies
flutter_one_pass: ^latest version
Android端
无需任何操作
iOS端
无需任何操作
使用文档
Android
导入包
import 'package:flutter_one_pass/flutter_one_pass.dart' as flutterOnePass;
- 初始化sdk
参数 | 参数类型 | 必填 | 描述 |
---|---|---|---|
appId | String | 是 | appId |
bool status = await flutterOnePass.init(appId: "your appId");
注意:务必在页面销毁的时候释放SDK引用
bool status = await flutterOnePass.destroy();
验证手机号码
参数 参数类型 必填 描述 phone String 是 手机号码 cacheNumber bool 否 是否缓存手机号码 flutterOnePass.checkMobile(phone: phone, cacheNumber: true);
监听验证结果
@override void initState() { super.initState(); flutterOnePass.response.listen((reponse) { flutterOnePass.CheckResultResponse res = response as flutterOnePass.CheckResultResponse; }); }
其他接口
获取最近缓存的一条手机号码
String number = await flutterOnePass.getCachedNumber;
获取匹配的手机号码
参数 参数类型 必填 描述 number String 是 待搜索的字符串 List<dynamic> numbers = await flutterOnePass.getCachedNumbers(number: "search number");
iOS
导入包
import 'package:flutter_one_pass/flutter_one_pass.dart' as flutterOnePass;
初始化sdk
参数 参数类型 必填 默认参数 描述 appId String 是 null appId enableCachePhoneNumber bool 否 true 是否允许缓存手机号码 timeout Double 否 10.0 接口超时 flutterOnePass.setup(appId: "your appId", enableCachePhoneNumber: true, timeout: 10.0);
验证手机号码
参数 参数类型 必填 描述 phone String 是 手机号码 bool status = flutterOnePass.checkMobile(phone: phone);
监听验证结果
@override void initState() { super.initState(); flutterOnePass.response.listen((reponse) { flutterOnePass.CheckResultResponse res = response as flutterOnePass.CheckResultResponse; }); }
其他接口
获取最近缓存的一条手机号码
String number = await flutterOnePass.getCachedNumber;
获取缓存的手机号码列表
List<dynamic> numbers = await flutterOnePass.getIosCachedNumbers;
由于SDK原因,iOS端不支持模糊搜索缓存的手机号码列表
验证结果字典
参数 | 参数类型 | 描述 |
---|---|---|
errorCode | Int | 错误码(为0表示验证通过,其他表示验证不通过) |
errorInfo | String | 错误描述 |
processId | String | processId |
accesscode | String | accesscode |
phone | String | 手机号码 |
验证通过之后,需要将 processId
、accesscode
、phone
发送到后台进行验证
Github
欢迎star,欢迎fork
补充
近来有人疑惑重复监听的问题。这里说明一下,listen
方法会返回一个 StreamSubscription
对象,在页面 dispose
的时候调用 StreamSubscription
的 cancel
方法即可
demo
StreamSubscription? responseListen;
@override
void initState() {
super.initState();
responseListen = flutterOnePass.response.listen((reponse) {
flutterOnePass.CheckResultResponse res = response as flutterOnePass.CheckResultResponse;
});
}
@override
dispose() {
super.dispose();
responseListen?.cancel();
}
2 条评论
博主可以升级一下SDK吗
已经升级完毕,插件已更新