极验OnePass Flutter插件
2022-05-03 本文已影响0人
zrong
因为工作上需要用到极验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();
}