Flutter集成Prizor SDK插件prizorsdk_flutter的使用
Flutter集成Prizor SDK插件prizorsdk_flutter的使用
Prizor SDK Flutter 是一个强大的 Flutter 插件,可以与 PrizorSDK 完美集成,为您的移动应用程序提供高级功能。本文档将指导您如何在 Flutter 项目中集成和使用 PrizorSDK。
功能
- 无缝集成 PrizorSDK
- 支持 iOS 14.3 及以上版本
- 支持 Android API 29 及以上版本
开始使用
Android
为了确保 Prizor SDK Flutter 在 Android 上兼容,您需要在 Android 项目中进行以下配置:
- 将
compileSdkVersion
和targetSdkVersion
设置为 33 或更高。 minSdkVersion
必须至少为 21。- Kotlin 版本必须至少为 1.8.0。
在 Android 清单文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
在 Android 清单文件的 <application>
标签内添加以下元数据和提供程序:
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<provider
android:name="com.pichillilorenzo.flutter_inappwebview.InAppWebViewFileProvider"
android:authorities="${applicationId}.flutter_inappwebview.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
iOS
为了使 Prizor SDK Flutter 在 iOS 上工作,确保您的项目满足以下要求:
- 最低 iOS 版本为 11,但插件本身仅支持 iOS 14.3 及以上版本。
在 Info.plist
文件中添加以下键:
<key>NSMicrophoneUsageDescription</key>
<string>添加麦克风使用消息。</string>
<key>NSCameraUsageDescription</key>
<string>添加相机使用消息。</string>
使用
要开始使用 Prizor SDK 插件,请遵循以下步骤:
- 使用从 CRMall 团队提供的参数和用户数据初始化插件。以下是 Dart 中的一个示例:
PrizorSdkWidget(
androidAPIErrorCallback: () => ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Android Version Error.")),
),
params: PrizorSdkParams(
environment: Environment.production,
appId: "***",
secret: "***",
appName: "测试 SDK",
accentColor: const Color(0xFFF1BF3B),
accentForegroundColor: const Color(0xFFFFFFFF),
user: User(
documentNumber: "01234567890",
cellphone: "+5512345678901",
name: "John Doe",
),
),
);
androidAPIErrorCallback
用于在用户尝试使用运行在低于 29 级 API 的 Android 设备上的 Prizor SDK 时显示一条消息。
PrizorSdkParams
PrizorSdkParams
类负责存储配置 Prizor SDK 所需的参数。以下是每个参数的描述:
environment
: 应用程序环境。可能的值有production
、stage
、development
和master
。使用Environment.production
表示生产环境。appId
: 由 CRMall 团队提供的应用 ID。secret
: 由 CRMall 团队提供的应用密钥。appName
: 应用名称。isRootRoute
: (可选)如果为true
,Prizor SDK 将成为应用的根路由。如果为false
,Prizor SDK 将是一个普通路由。默认值为false
。(见下文示例)titleRoute
: (可选)当isRootRoute
为true
时,此参数将用作AppBar
的标题。默认值为空。(见下文示例)accentColor
: 应用的主要颜色,用于应用栏、按钮、图标等。accentForegroundColor
: 应用的前景颜色。user
: 用于应用活动的用户数据。appLogo
: 活动中的图像。如果为null
,则不显示。务必使用 PNG 图像!appBrand
: 主屏幕上的图像。如果为null
,则不显示。务必使用 PNG 图像!splashForegroundColor
: 启动画面的前景颜色。如果为null
,则使用accentColor
。splashBackgroundColor
: 启动画面的背景颜色。如果为null
,则使用accentForegroundColor
。sac
: SAC(客户服务)数据,用于应用活动。
这些参数可以根据应用的需求进行配置,以自定义 Prizor SDK 的外观和行为。
用户
User
类表示用于应用活动的用户数据。以下是每个参数的描述:
cellphone
: 用户的手机号码。由于它用于发送验证代码,因此是必需的。documentNumber
: 用户的证件号码。由于它用于认证和匹配用户,因此是必需的。name
: 用户的名字。otherDocument
: 用户的其他证件。gender
: 用户的性别。maritalStatus
: 用户的婚姻状况。day
: 用户的出生日。month
: 用户的出生月。year
: 用户的出生年。occupation
: 用户的职业。phones
: 用户关联的电话号码列表。emails
: 用户关联的电子邮件地址列表。addresses
: 用户关联的地址列表。
这些参数提供了各种用户详细信息,可用于应用活动中的个性化和定向消息。
根路由示例
Prizor Sdk 带 BottomNavigationBar
isRootRoute
为 true
,titleRoute
为 Benefícios
,Prizor Sdk 带 BottomNavigationBar
移除返回按钮并添加 AppBar 标题
Prizor Sdk 带导航
isRootRoute
为 false
或 null
额外信息
有关将 Prizor SDK 集成到项目的更多信息和支持,请联系 CRMall 团队。他们将为您提供必要的资源和支持,以确保集成过程顺利进行。
示例代码
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:prizorsdk_flutter/prizorsdk_flutter.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
String title = 'PrizorSDK 示例';
return MaterialApp(
title: title,
debugShowCheckedModeBanner: false,
theme: ThemeData(primarySwatch: Colors.blue),
home: const NavigationPage(),
);
}
}
class NavigationPage extends StatelessWidget {
const NavigationPage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("PrizorSDK 示例"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
child: const Text("根页面示例"),
onPressed: () async {
if (context.mounted) {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => const MyRootHomePage(
title: "PrizorSDK 示例",
),
),
);
}
},
),
ElevatedButton(
child: const Text("导航页面示例"),
onPressed: () async {
if (context.mounted) {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => const MyHomePage(
title: "PrizorSDK 示例",
),
),
);
}
},
),
],
),
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({required this.title, super.key});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final TextEditingController cpfController = TextEditingController(text: "");
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: TextField(
controller: cpfController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'CPF',
),
),
),
Container(height: 20),
ElevatedButton(
child: const Text("打开 PrizorSDK"),
onPressed: () async {
if (cpfController.text != "" && cpfController.text.length == 11) {
await Permission.location.request();
await Permission.camera.request();
await Permission.microphone.request();
if (context.mounted) {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => PrizorSdkPage(
cpf: cpfController.text.replaceAll(RegExp("[\\D]"), ""),
),
),
);
}
} else {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text('SDK 初始化错误。'),
));
}
},
),
],
),
),
);
}
}
class MyRootHomePage extends StatefulWidget {
const MyRootHomePage({required this.title, super.key});
final String title;
[@override](/user/override)
State<MyRootHomePage> createState() => _MyRootHomePageState();
}
class _MyRootHomePageState extends State<MyRootHomePage> {
final String DOCUMENT_FAKER = "40583583946";
late final List<Widget> _children = [
const MyHomePage(title: "首页"),
PrizorSdkPage(
cpf: DOCUMENT_FAKER,
isRootRoute: true,
titleRoute: '福利',
),
];
int _currentIndex = 0;
void _setIndex(int index) {
setState(() {
_currentIndex = index;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: _children[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
onTap: (int index) {
_setIndex(index);
},
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: "首页",
),
BottomNavigationBarItem(
icon: Icon(Icons.app_shortcut_outlined),
label: "PrizorSDK",
),
],
),
);
}
}
class PrizorSdkPage extends StatefulWidget {
const PrizorSdkPage({
super.key,
required this.cpf,
this.isRootRoute = false,
this.titleRoute = "",
});
final String cpf;
final String titleRoute;
final bool isRootRoute;
[@override](/user/override)
State<PrizorSdkPage> createState() => _PrizorSdkPageState();
}
class _PrizorSdkPageState extends State<PrizorSdkPage> {
[@override](/user/override)
Widget build(BuildContext context) {
return PrizorSdkWidget(
androidAPIErrorCallback: () => ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Android 版本错误。")),
),
params: PrizorSdkParams(
environment: Environment.production,
appId: "***",
secret: "***",
appName: "PrizorSDK 示例",
isRootRoute: widget.isRootRoute,
titleRoute: widget.titleRoute,
accentColor: const Color(0xFF000000),
accentForegroundColor: Colors.white,
user: const User(
documentNumber: "40583583946",
cellphone: "+5512345678901",
name: "John Doe",
),
),
);
}
}
更多关于Flutter集成Prizor SDK插件prizorsdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Prizor SDK插件prizorsdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用prizorsdk_flutter
插件的示例代码。这个示例将展示如何初始化Prizor SDK,并进行一些基本的功能调用。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加prizorsdk_flutter
依赖:
dependencies:
flutter:
sdk: flutter
prizorsdk_flutter: ^latest_version # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化Prizor SDK
在你的Flutter项目的入口文件(通常是main.dart
)中,初始化Prizor SDK。通常这需要在应用的initState
方法中完成。
import 'package:flutter/material.dart';
import 'package:prizorsdk_flutter/prizorsdk_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
_initializePrizorSDK();
}
Future<void> _initializePrizorSDK() async {
// 替换为你的Prizor SDK的API Key和Secret
String apiKey = 'your_api_key_here';
String secret = 'your_secret_here';
try {
await PrizorSDK.instance.init(apiKey: apiKey, secret: secret);
print('Prizor SDK initialized successfully');
} catch (e) {
print('Failed to initialize Prizor SDK: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Prizor SDK Flutter Example'),
),
body: Center(
child: Text('Check the console for Prizor SDK initialization status'),
),
),
);
}
}
3. 使用Prizor SDK功能
一旦Prizor SDK初始化成功,你就可以调用它的各种功能。例如,假设Prizor SDK提供了一个获取用户信息的方法,你可以这样调用:
// 假设有一个按钮触发获取用户信息的操作
FlatButton(
child: Text('Get User Info'),
onPressed: () async {
try {
// 假设这是Prizor SDK提供的方法
UserInfo userInfo = await PrizorSDK.instance.getUserInfo();
print('User Info: ${userInfo.toJson()}');
} catch (e) {
print('Failed to get user info: $e');
}
},
)
请注意,上面的getUserInfo
方法和UserInfo
类是根据假设的API设计的。实际使用时,你需要参考Prizor SDK的官方文档来获取正确的方法和类名。
4. 处理回调和事件
如果Prizor SDK提供了事件监听功能,你可以使用类似下面的代码来处理回调:
@override
void initState() {
super.initState();
_initializePrizorSDK();
// 监听某个事件,例如用户登录状态变化
PrizorSDK.instance.onUserLoggedIn.listen((User user) {
print('User logged in: ${user.toJson()}');
});
}
同样,上面的onUserLoggedIn
流和User
类也是根据假设的API设计的。实际使用时,你需要参考Prizor SDK的官方文档。
结论
以上示例展示了如何在Flutter项目中集成并使用prizorsdk_flutter
插件。请务必参考Prizor SDK的官方文档来获取最准确和最新的API信息。如果你遇到任何问题,官方文档和社区论坛是很好的资源。