Flutter钉钉集成插件flutter_dingtalk_sdk的使用
Flutter钉钉集成插件flutter_dingtalk_sdk的使用
flutter_dingtalk_sdk
是一个钉钉的SDK插件,允许开发者调用钉钉的原生SDK。
安装
在 pubspec.yaml
文件中添加 flutter_dingtalk_sdk
依赖:
dependencies:
flutter_dingtalk_sdk: ^1.0.4
Android配置
在 build.gradle
文件中添加以下内容:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
iOS配置
在Xcode中,选择你的项目设置,选择目标,在信息标签页下的URL类型中,添加钉钉应用ID作为URL Scheme。
URL Types
tencent: identifier=tencent schemes=appId
在 Info.plist
中添加以下内容以检查其他应用程序是否已安装:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>dingtalk</string>
<string>dingtalk-open</string>
<string>dingtalk-sso</string>
</array>
确保Flutter版本
确保你使用的Flutter版本与插件兼容:
Flutter 2.2.2 • channel stable nullsafety
Framework • revision d79295af24 (9天前) • 2021-06-11 08:56:01 -0700
Engine • revision 91c9fc8fe0
Tools • Dart 2.13.3
功能说明
- 分享图片、文字、音乐、视频等。
- 钉钉登录。
- 打开钉钉应用。
准备工作
在集成之前,建议阅读官方文档以了解更多信息。
注册应用
通过 FluDing
注册应用:
FluDing.registerApp("dingu6xwfjbghhqtwwzu");
对于Android,查看文章以了解如何获取应用签名。然后你需要知道发布版和调试版应用签名的区别。如果签名不正确,可能会收到错误 errCode = -1
。
文档说明
更多功能可以查看源代码。
常见问题
示例代码
以下是完整的示例代码:
import 'package:flutter_dingtalk_sdk/response/dingtalk_response.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_dingtalk_sdk/flutter_dingtalk_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _dingtalkVersion = '未知';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
FluDingtalk.ddResponseEventHandler.listen(dingtalkResponseEvent);
}
Future<void> initPlatformState() async {
String dingtalkVersion;
try {
dingtalkVersion = await FluDingtalk.openAPIVersion;
print("钉钉SDK: ===》 versionSDK: $dingtalkVersion");
bool isSupport = await FluDingtalk.registerApp(
"dingcxbptovsyu1lmth0", "com.example.flu_dingtalk_example");
print("注册成功: $isSupport");
} on PlatformException {
dingtalkVersion = '获取平台版本失败。';
}
if (!mounted) return;
setState(() {
_dingtalkVersion = dingtalkVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('钉钉SDK演示'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('dingtalkVersion: $_dingtalkVersion\n'),
TextButton(
onPressed: () {
FluDingtalk.isDingDingInstalled().then((value) {
print("是否安装了钉钉: $value");
});
},
child: Text('isDingDingInstalled'),
),
TextButton(
onPressed: () {
FluDingtalk.isDingTalkSupportSSO.then((value) {
print("是否支持登录: $value");
});
},
child: Text('isDingTalkSupportSSO'),
),
TextButton(
onPressed: () {
FluDingtalk.openDingTalk
.then((value) => print("打开钉钉App: $value"));
},
child: Text('openDingTalk'),
),
TextButton(
onPressed: () {
FluDingtalk.sendAuth("Auth").then(
(value) => print("打开钉钉登录: $value"),
);
},
child: Text('sendAuthDingTalk'),
),
TextButton(
onPressed: () {
FluDingtalk.sendTextMessage('分享文本');
},
child: Text('shareText'),
),
TextButton(
onPressed: () {
FluDingtalk.sendImageMessage(
picUrl:
'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png');
},
child: Text('shareImage'),
),
TextButton(
onPressed: () {
FluDingtalk.sendWebPageMessage(
'https://www.baidu.com/',
title: '标题',
content: '描述2333',
thumbUrl:
'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png',
);
},
child: Text('shareWebPage'),
),
],
),
),
),
);
}
// 钉钉回调监听
void dingtalkResponseEvent(event) {
if (event is DDShareAuthResponse) {
var response = event;
if (response.code.isNotEmpty) {
print("OAuthCode: ${response.code}");
} else {
print(response.mErrStr);
}
}
}
}
更多关于Flutter钉钉集成插件flutter_dingtalk_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter钉钉集成插件flutter_dingtalk_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_dingtalk_sdk
是一个用于在 Flutter 应用中集成钉钉功能的插件。通过该插件,你可以实现诸如钉钉登录、分享、支付等功能。以下是如何使用 flutter_dingtalk_sdk
的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_dingtalk_sdk
依赖:
dependencies:
flutter:
sdk: flutter
flutter_dingtalk_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置钉钉应用
在钉钉开放平台上注册应用,并获取 AppId
和 AppSecret
。你还需要配置应用的包名和签名信息。
3. 初始化 SDK
在你的 Flutter 应用中初始化钉钉 SDK。通常在 main.dart
中进行初始化:
import 'package:flutter_dingtalk_sdk/flutter_dingtalk_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化钉钉 SDK
await FlutterDingtalkSdk.init(
appId: 'your_app_id',
appSecret: 'your_app_secret',
);
runApp(MyApp());
}
4. 实现钉钉登录
使用 FlutterDingtalkSdk
实现钉钉登录功能:
import 'package:flutter/material.dart';
import 'package:flutter_dingtalk_sdk/flutter_dingtalk_sdk.dart';
class LoginPage extends StatelessWidget {
Future<void> _loginWithDingtalk() async {
try {
final authCode = await FlutterDingtalkSdk.login();
print('Auth Code: $authCode');
// 使用 authCode 向你的服务器请求用户信息
} catch (e) {
print('Login failed: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('钉钉登录'),
),
body: Center(
child: ElevatedButton(
onPressed: _loginWithDingtalk,
child: Text('钉钉登录'),
),
),
);
}
}
5. 实现分享功能
使用 FlutterDingtalkSdk
实现分享功能:
import 'package:flutter/material.dart';
import 'package:flutter_dingtalk_sdk/flutter_dingtalk_sdk.dart';
class SharePage extends StatelessWidget {
Future<void> _shareToDingtalk() async {
try {
await FlutterDingtalkSdk.share(
title: '分享标题',
content: '分享内容',
url: 'https://www.example.com',
imageUrl: 'https://www.example.com/image.png',
);
print('分享成功');
} catch (e) {
print('分享失败: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('分享到钉钉'),
),
body: Center(
child: ElevatedButton(
onPressed: _shareToDingtalk,
child: Text('分享到钉钉'),
),
),
);
}
}
6. 实现支付功能
使用 FlutterDingtalkSdk
实现支付功能:
import 'package:flutter/material.dart';
import 'package:flutter_dingtalk_sdk/flutter_dingtalk_sdk.dart';
class PaymentPage extends StatelessWidget {
Future<void> _payWithDingtalk() async {
try {
await FlutterDingtalkSdk.pay(
orderId: 'your_order_id',
amount: '100', // 金额,单位:分
);
print('支付成功');
} catch (e) {
print('支付失败: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('钉钉支付'),
),
body: Center(
child: ElevatedButton(
onPressed: _payWithDingtalk,
child: Text('钉钉支付'),
),
),
);
}
}
7. 处理回调
在某些情况下,你可能需要处理钉钉 SDK 的回调。你可以在 init
方法中设置回调:
await FlutterDingtalkSdk.init(
appId: 'your_app_id',
appSecret: 'your_app_secret',
onAuthResponse: (response) {
// 处理登录回调
},
onShareResponse: (response) {
// 处理分享回调
},
onPayResponse: (response) {
// 处理支付回调
},
);