Flutter友盟验证插件umeng_verify_sdk的使用
Flutter友盟验证插件umeng_verify_sdk的使用
安装
在工程 pubspec.yaml
文件中加入依赖:
dependencies:
umeng_verify_sdk: 2.0.0
执行以下命令以更新依赖:
flutter pub get
使用
首先,导入必要的包:
import 'package:umeng_verify_sdk/umeng_verify_sdk.dart';
初始化
在使用插件之前,需要调用 init
方法来初始化插件。确保在应用启动时调用此方法。
void main() {
runApp(MyApp());
}
示例代码
以下是一个完整的示例代码,展示如何使用 umeng_verify_sdk
插件进行手机号验证和一键登录。
import 'dart:async';
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:umeng_verify_sdk/umeng_verify_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
String _VerifyVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
// 设置友盟通用SDK的页面采集模式为手动
UmengCommonSdk.setPageCollectionModeManual();
// 初始化友盟通用SDK
UmengCommonSdk.initCommon(
'android appkey', 'ios appkey', 'Umeng');
// 设置友盟验证插件的秘钥
UmengVerifySdk.setVerifySDKInfo(
'android 秘钥',
'ios 秘钥')
.then((map) {
print("sdkInfo:${map}");
});
// 设置登录Token回调
UmengVerifySdk.getLoginTokenCallback((result) {
print("resultDic:${result}");
print("token:${result["token"]}");
if (result['token'] != null) {
bool isTrue = true;
UmengVerifySdk.cancelLoginVCAnimated(isTrue);
}
});
// 设置Widget事件回调
UmengVerifySdk.getWidgetEventCallback((result) {
print("resultDic:${result}");
});
// 设置Token结果回调(Android专用)
UmengVerifySdk.setTokenResultCallback_android((result) {
print("setTokenResultCallback_android: $result");
if (result["code"] == "600000") {
UmengVerifySdk.quitLoginPage_android();
}
});
// 设置UI点击回调(Android专用)
UmengVerifySdk.setUIClickCallback_android((result) {
print("setUIClickCallback_android: $result");
});
// Android-only: 检查环境是否可用
UmengVerifySdk.checkEnvAvailable_android(UMEnvCheckType.type_login);
}
// 平台消息是异步的,因此我们在异步方法中初始化
Future<void> initPlatformState() async {
// 注册Android平台
UmengVerifySdk.register_android();
String? VerifyId = await UmengVerifySdk.getVerifyId();
print('VerifyId:' + VerifyId!);
String? carrierName = await UmengVerifySdk.getCurrentCarrierName();
print('carrierName:' + carrierName!);
String platformVersion;
String VerifyVersion;
// 获取平台版本号
try {
platformVersion = (await UmengCommonSdk.platformVersion)!;
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// 获取SDK版本号
VerifyVersion = (await UmengVerifySdk.VerifyVersion)!;
// 如果小部件从树中移除,则丢弃回复而不是调用setState
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
_VerifyVersion = VerifyVersion;
});
}
final TextEditingController _controller = new TextEditingController();
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('os: $_platformVersion SDK: $_VerifyVersion'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
controller: _controller,
decoration: InputDecoration(hintText: '手机号码'),
),
TextButton(
child: Text("号码验证"),
onPressed: () {
print("手机 ${_controller.text}");
UmengVerifySdk.accelerateVerifyWithTimeout(3).then((result) {
print("Android 号码验证加速结果 $result");
UmengVerifySdk.getVerifyTokenWithTimeout_android(3);
});
},
),
TextButton(
child: Text("一键登录(快)"),
onPressed: () {
UMCustomModel uiConfig = UMCustomModel();
if (Platform.isIOS) {
uiConfig.backgroundColor_ios = Colors.orange.value;
UMCustomWidget customButton = UMCustomWidget(
"button1", UMCustomWidgetType.button);
customButton.title = "Btn";
customButton.titleFont = 20;
customButton.textAlignment =
UMCustomWidgetTextAlignmentType.right;
customButton.left = 100;
customButton.top = 480;
customButton.width = 200;
customButton.height = 50;
customButton.backgroundColor = Colors.red.value;
customButton.titleColor = Colors.black.value;
customButton.isClickEnable = false;
customButton.rootViewId = UMRootViewId.body;
UMCustomWidget customButton1 =
UMCustomWidget("button2", UMCustomWidgetType.button);
customButton1.left = 100;
customButton1.top = 550;
customButton1.width = 200;
customButton1.height = 50;
customButton1.titleColor = Colors.red.value;
customButton1.title = "自定义控件2";
customButton1.backgroundColor = Colors.blue.value;
customButton1.rootViewId = UMRootViewId.title_bar;
UMCustomWidget customTextView =
UMCustomWidget("textView", UMCustomWidgetType.textView);
customTextView.left = 100;
customTextView.top = 620;
customTextView.width = 200;
customTextView.height = 200;
customTextView.title = "自\n定\n义\n控\n件\nTV";
customTextView.titleFont = 50;
customTextView.textAlignment =
UMCustomWidgetTextAlignmentType.center;
customTextView.titleColor = Colors.black.value;
customTextView.backgroundColor = Colors.red.value;
customTextView.isClickEnable = false;
customTextView.isShowUnderline = true;
customTextView.isSingleLine = false;
customTextView.lines = 3;
customTextView.rootViewId = UMRootViewId.number;
uiConfig.customWidget = [
customButton.toJsonMap(),
customButton1.toJsonMap(),
customTextView.toJsonMap()
];
} else {
uiConfig.contentViewFrame = [-1, -1, 320, 640];
uiConfig.alertTitleBarFrame_ios = [80, 100, 260, 500];
uiConfig.alertBlurViewColor_ios = Colors.red.value;
uiConfig.alertBlurViewAlpha_ios = 0.8;
uiConfig.alertTitle_ios = ["aaaabbb", Colors.red.value, 20];
uiConfig.navColor = Colors.orange.value;
uiConfig.loginBtnText = ["一键登录1", Colors.orange.value, 20];
UMCustomWidget customButton =
UMCustomWidget("button1", UMCustomWidgetType.button);
customButton.title = "Btn";
customButton.titleFont = 20;
customButton.textAlignment =
UMCustomWidgetTextAlignmentType.right;
customButton.left = 20;
customButton.top = 20;
customButton.width = 200;
customButton.height = 50;
customButton.backgroundColor = Colors.red.value;
customButton.titleColor = Colors.black.value;
customButton.isClickEnable = false;
customButton.btnBackgroundResource_android = "btn_selector";
customButton.rootViewId = UMRootViewId.body;
UMCustomWidget customButton1 =
UMCustomWidget("button2", UMCustomWidgetType.button);
customButton1.left = 100;
customButton1.top = 530;
customButton1.width = 200;
customButton1.height = 50;
customButton1.titleColor = Colors.red.value;
customButton1.title = "自定义控件2";
customButton1.backgroundColor = Colors.blue.value;
customButton1.rootViewId = UMRootViewId.title_bar;
UMCustomWidget customTextView =
UMCustomWidget("textView", UMCustomWidgetType.textView);
customTextView.left = 20;
customTextView.top = 20;
customTextView.width = 200;
customTextView.height = 200;
customTextView.title = "自\n定\n义\n控\n件\nTV";
customTextView.titleFont = 50;
customTextView.textAlignment =
UMCustomWidgetTextAlignmentType.center;
customTextView.titleColor = Colors.black.value;
customTextView.backgroundColor = Colors.red.value;
customTextView.isClickEnable = false;
customTextView.isShowUnderline = true;
customTextView.isSingleLine = false;
customTextView.lines = 3;
customTextView.rootViewId = UMRootViewId.number;
uiConfig.customWidget = [
customButton.toJsonMap(),
customButton1.toJsonMap(),
customTextView.toJsonMap()
];
}
UmengVerifySdk.accelerateLoginPageWithTimeout(3).then((result) {
print("Android 登录加速结果 $result");
UmengVerifySdk.getLoginTokenWithTimeout(3, uiConfig);
});
},
),
TextButton(
child: Text("一键登录(慢)"),
onPressed: () {
UMCustomModel uiConfig = UMCustomModel();
uiConfig.navColor = Colors.red.value;
uiConfig.logoImage = "checked";
if (Platform.isIOS) {
uiConfig.privacyOne = [
"privacyOne",
"https://www.taobao.com"
];
uiConfig.privacyTwo = ["privacyTwo", "https://www.baidu.com"];
uiConfig.privacyThree = [
"privacyThree",
"https://www.alibaba.com"
];
uiConfig.privacyConectTexts = ["& ", "、", "and "];
uiConfig.privacyColors = [
Colors.red.value,
Colors.blue.value
];
uiConfig.checkBoxImages = ["unchecked", "checked"];
uiConfig.loginBtnText = [
"loginBtnText-登录",
Colors.black.value,
20
];
} else {
uiConfig.isAutorotate = false;
uiConfig.navIsHidden = false;
uiConfig.navColor = Colors.red.value;
uiConfig.navTitle = ["Title", Colors.black.value, 20];
uiConfig.navBackImage = "icon_close";
uiConfig.hideNavBackItem = false;
uiConfig.navBackButtonFrame = [-1, -1, 20, 20];
uiConfig.prefersStatusBarHidden = false;
uiConfig.backgroundImage = "page_background_color";
uiConfig.logoImage = "alipay";
uiConfig.logoIsHidden = false;
uiConfig.logoFrame = [20, -1, 100, 100];
uiConfig.sloganText = ["sloganText", Colors.red.value, 20];
uiConfig.sloganIsHidden = false;
uiConfig.sloganFrame = [150, -1, -1, -1];
uiConfig.numberColor = Colors.black.value;
uiConfig.numberFont = 20;
uiConfig.numberFrame = [10, 200, -1, -1];
uiConfig.loginBtnText = [
"loginBtnText-登录",
Colors.black.value,
20
];
uiConfig.loginBtnBgImg_android = "login_btn_bg";
uiConfig.autoHideLoginLoading = false;
uiConfig.loginBtnFrame = [10, -1, -1, -1, -1];
uiConfig.checkBoxImages = ["unchecked", "checked"];
uiConfig.checkBoxIsChecked = true;
uiConfig.checkBoxIsHidden = false;
uiConfig.checkBoxWH = 15;
uiConfig.privacyOne = [
"privacyOne",
"https://www.taobao.com"
];
uiConfig.privacyTwo = ["privacyTwo", "https://www.baidu.com"];
uiConfig.privacyThree = [
"privacyThree",
"https://www.alibaba.com"
];
uiConfig.privacyConectTexts = ["& ", "、", "and "];
uiConfig.privacyColors = [
Colors.red.value,
Colors.blue.value
];
uiConfig.privacyAlignment = UMTextAlignment.Center;
uiConfig.privacyPreText = "Pre-";
uiConfig.privacySufText = "-Suf";
uiConfig.privacyOperatorPreText = "<";
uiConfig.privacyOperatorSufText = ">";
uiConfig.privacyOperatorIndex = 1;
uiConfig.privacyFont = 12;
uiConfig.privacyFrame = [10, -1, 10, -1];
uiConfig.changeBtnTitle = ["切换登录方式", Colors.blue.value, 20];
uiConfig.changeBtnIsHidden = false;
uiConfig.changeBtnFrame = [-1, 300, -1, -1];
uiConfig.protocolAction_android =
"com.aliqin.mytel.protocolWeb";
uiConfig.privacyNavColor = Colors.red.value;
uiConfig.privacyNavTitleFont = 16;
uiConfig.privacyNavTitleColor = Colors.blue.value;
uiConfig.privacyNavBackImage = "icon_back";
}
UmengVerifySdk.getLoginTokenWithTimeout(3, uiConfig);
},
),
],
),
),
),
);
}
}
更多关于Flutter友盟验证插件umeng_verify_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter友盟验证插件umeng_verify_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
umeng_verify_sdk
是友盟(Umeng)提供的一个用于验证用户身份的 Flutter 插件。它可以帮助开发者快速集成手机号码验证功能,支持一键登录和本机号码校验等功能。
以下是 umeng_verify_sdk
插件的基本使用步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 umeng_verify_sdk
插件的依赖:
dependencies:
flutter:
sdk: flutter
umeng_verify_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 SDK
在应用的启动阶段,初始化友盟验证 SDK。通常可以在 main.dart
中的 main()
函数中进行初始化:
import 'package:umeng_verify_sdk/umeng_verify_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化友盟验证 SDK
await UmengVerifySdk.init(
appKey: 'your_app_key', // 替换为你的友盟 AppKey
secret: 'your_secret', // 替换为你的友盟 Secret
);
runApp(MyApp());
}
3. 获取手机号码验证服务
在需要验证用户手机号码的地方,调用 UmengVerifySdk
提供的 API 来获取验证服务。
import 'package:umeng_verify_sdk/umeng_verify_sdk.dart';
class LoginPage extends StatelessWidget {
Future<void> _verifyPhoneNumber() async {
try {
// 获取手机号码验证服务
final result = await UmengVerifySdk.verifyPhoneNumber();
// 处理验证结果
if (result != null) {
print('Phone number: ${result.phoneNumber}');
print('Token: ${result.token}');
// TODO: 将 token 发送到服务器进行验证
} else {
print('Verification failed');
}
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Login'),
),
body: Center(
child: ElevatedButton(
onPressed: _verifyPhoneNumber,
child: Text('Verify Phone Number'),
),
),
);
}
}