因为工作上需要用到极验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();
}
网友评论