隨著Flutter逐漸的被越來越多的公司所采用,本文將演示如何將中國移動統一認證SDK接入到Flutter應用中,
目錄
1.準備作業
2.開始接入
3.運行除錯
4.注意事項
1.準備作業
1.1 下載好統一認證SDK,這里使用的版本是quick_login_android_5.8.1
1.2 在移動開發平臺申請好應用拿到appid、appkey
2.開始接入
2.1 按照統一認證SDK接入檔案配置好權限,READ_PHONE_STATE權限根據應用方需要選擇是否添加,SDK不強制要求授權該權限,

2.2 添加好SDK所需的資源檔案

2.3 manifest中配置好授權登錄的Activity,這里可以指定授權頁的主題為 NoActionBar

授權頁style
<style name="AuthPage" parent="@android:style/Theme.Holo.Light.NoActionBar">
<item name="android:background">@null</item>
<item name="android:colorBackground">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
2.4 按照檔案要求添加network_security_config

2.5 將下載的jar檔案添加工程中,并進行依賴,
2.6 MainActivity中初始化中國移動統一認證SDK并呼叫loginAuth授權方法
public class MainActivity extends FlutterActivity {
private AuthnHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new MethodChannel(getFlutterView(),"TYRZ").setMethodCallHandler(new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
if(methodCall.method.equals("loginAuth")){
loginAuth(result);
}else{
Log.e("TYRZ","notImplemented");
result.notImplemented();
}
}
});
//創建AuthnHelper實體
mHelper= AuthnHelper.getInstance(this);
//打開SDK日志列印開關
AuthnHelper.setDebugMode(true);
//初始化授權頁主題
mHelper.setAuthThemeConfig(new AuthThemeConfig.Builder().build());
GeneratedPluginRegistrant.registerWith(this);
}
/**
* 統一認證SDK授權方法呼叫
*/
private void loginAuth(MethodChannel.Result result){
//呼叫授權方法,這里要填寫的appid、appkey為開發者在移動開發平臺申請的appid、appkey
mHelper.loginAuth("30********73", "2DD524A94*************EA287B7CA0", new TokenListener() {
@Override
public void onGetTokenComplete(int i, JSONObject jsonObject) {
try {
String resultCode = jsonObject.optString("resultCode","沒有回傳碼!");
Toast.makeText(MainActivity.this, resultCode, Toast.LENGTH_SHORT).show();
//將結果回傳給flutter
result.success(resultCode);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}}
2.7 main.dart中呼叫loginAuth
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
//呼叫java方法
void loginAuth() async {
print("按鈕點擊!");
try {
String result = await MethodChannel("TYRZ").invokeMethod("loginAuth");
//列印統一認證回呼的回應碼
print("resultCode = " + result);
} catch (e) {
print(e);
}
}
//創建一個按鈕,在點擊按鈕時呼叫統一認證的loginAuth方法拉起授權頁,
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text("一鍵登錄"),
onPressed: () {
loginAuth();
},
),
],
),
),
);
}
}
3.運行除錯
3.1 真機除錯

3.2 控制臺日志

4.注意事項
一定要按照檔案將資源檔案、權限、network_security_config以及授權頁activity配置好,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/276225.html
標籤:其他
上一篇:iOS-UI之截長圖
下一篇:智能家居APP使用指南
