Flutter营销自动化插件sfmc_plugin的使用
Flutter营销自动化插件sfmc_plugin的使用
sfmc_plugin
salesforce.com提供的Salesforce Marketing Cloud (SFMC) - MobilePush SDK for Flutter。Marketing Cloud MobilePush允许您创建和发送通知以鼓励用户使用您的应用程序。
此SFMC Flutter插件包括:
- Push Notifications:通过Marketing Cloud MobilePush或Content Builder或Journey Builder中的推送通知模板创建消息。
- In-App Messages:在用户使用移动应用程序时与他们互动,触发消息在用户打开应用程序时显示。
了解更多关于SFMC Mobile Push SDK的信息:
开始使用
首先需要在项目中添加sfmc_plugin
。请按照安装指南操作。
建议查看示例源代码。
设置Android
-
创建MobilePush应用程序:根据文档连接设备到MobilePush应用。
-
设置Firebase:遵循官方文档完成设置,并将
google-services.json
文件放置在android/app
目录下。 -
修改build.gradle:
- 在
android/app/build.gradle
中添加:apply plugin: 'com.google.gms.google-services'
- 在
android/build.gradle
中添加依赖:dependencies { classpath 'com.google.gms:google-services:4.3.13' }
- 在
-
初始化SFMC SDK:更新
android/gradle.properties
如下:MC_APP_ID="<YOUR_SFMC_APP_ID>" MC_ACCESS_TOKEN="<YOUR_SFMC_ACCESS_TOKEN>" MC_SENDER_ID="<YOUR_FIREBASE_CLOUD_MESSAGING_SENDER_ID_FOR_SFMC>" MC_MID="<YOUR_SFMC_MID>" MC_SERVER_URL="<YOUR_SFMC_URL>"
设置iOS
-
配置推送服务:根据文档进行配置。
-
更新info.plist:添加以下内容:
<key>UIBackgroundModes</key> <array> <string>fetch</string> <string>remote-notification</string> </array>
-
设置UNUserNotificationCenter代理:在AppDelegate.m/AppDelegate.swift中添加以下代码:
Objective-C:
if ([@available](/user/available)(iOS 10.0, *)) { [UNUserNotificationCenter currentNotificationCenter].delegate = (id<UNUserNotificationCenterDelegate>) self; }
Swift:
if #available(iOS 10.0, *) { UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate }
使用Flutter插件
-
初始化SFMC插件(仅适用于iOS,Android请参阅设置Android部分):
var isInitialized = await SfmcPlugin().initialize( appId: '<YOUR_APP_ID>', accessToken: '<YOUR_ACCESS_TOKEN>', mid: '<YOUR_MID>', sfmcURL: '<YOUR_SFMC_URL>', senderId: '<YOUR_FIREBASE_CLOUD_MESSAGING_SENDER_ID>', /// Set delayRegistration on iOS only, /// delayRegistration on Android is by default true delayRegistration: true, /// Set analytics on iOS only, /// analytics on Android is by default true analytics: true, );
-
设置联系人密钥(唯一标识符):
await SfmcPlugin().setContactKey('<Uniquely Identifying Key>');
-
设置属性(用于细分受众和个性化消息):
await SfmcPlugin().setProfileAttribute("key", "value"); await SfmcPlugin().clearProfileAttribute("key");
示例Demo
import 'package:flutter/material.dart';
import 'package:sfmc_plugin/sfmc_plugin.dart';
void main() async {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
final String title = "SFMC - Mobile Push";
@override
State<MyHomePage> createState() => _MyHomePageState();
}
Future handler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'handle_url':
var url = methodCall.arguments['url'];
// the url is accessible here and can be processed (Applicable to iOS Only)
return null;
}
}
class _MyHomePageState extends State<MyHomePage> {
bool? initStatus;
void onInit() async {
SfmcPlugin().setHandler(handler);
var isInitialized = await SfmcPlugin().initialize(
appId: '<YOUR_APP_ID>',
accessToken: '<YOUR_ACCESS_TOKEN>',
mid: '<YOUR_MID>',
sfmcURL: '<YOUR_SFMC_URL>',
senderId: '<YOUR_FIREBASE_CLOUD_MESSAGING_SENDER_ID>',
/// Set delayRegistration on iOS only,
/// delayRegistration on Android is by default true
delayRegistration: true,
/// Set analytics on iOS only,
/// analytics on Android is by default true
analytics: true,
);
setState(() {
initStatus = isInitialized;
});
}
@override
void initState() {
onInit();
super.initState();
}
@override
Widget build(BuildContext context) {
bool initSucceeded = (initStatus != null && initStatus == true);
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListView(
children: [
const SizedBox(height: 30,),
initStatusDisplay(initStatus),
const SizedBox(height: 15,),
if (initSucceeded) ContactKeyComponent(),
],
),
);
}
Widget initStatusDisplay(bool? isInitSuccessful) {
String text = 'Trying to initialize ...';
bool isLoading = isInitSuccessful == null;
if (!isLoading) {
if (isInitSuccessful) {
text = "The cloud messaging system has been initialized !";
} else {
text = "There was an error during initializing the cloud system !";
}
}
return SizedBox(
child: Column(
children: [
if (isLoading)
const SizedBox(height: 20, width: 20, child: CircularProgressIndicator(),),
Text(
text,
textAlign: TextAlign.center,
),
],
),
);
}
Widget buildSectionContainer({required Widget child}) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 15, vertical: 5),
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(width: 0.5)),
child: child,
);
}
}
贡献
欢迎提交Pull Request!如果您有任何问题或建议,请随时参与本项目的贡献。
更多关于Flutter营销自动化插件sfmc_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter营销自动化插件sfmc_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用sfmc_plugin
(假设这是一个用于Salesforce Marketing Cloud的Flutter插件)的示例代码案例。请注意,由于sfmc_plugin
可能是一个虚构的插件名称(因为实际中可能存在不同名称的插件用于此目的),以下代码将基于假设的API和功能进行编写。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加sfmc_plugin
作为依赖项。如果插件在pub.dev上可用,你应该能找到它的具体名称并添加:
dependencies:
flutter:
sdk: flutter
sfmc_plugin: ^x.y.z # 替换为实际版本号
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的Flutter应用的入口文件(通常是main.dart
)中,你需要初始化插件。
import 'package:flutter/material.dart';
import 'package:sfmc_plugin/sfmc_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter SFMC Plugin Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SFMCExamplePage(),
);
}
}
class SFMCExamplePage extends StatefulWidget {
@override
_SFMCExamplePageState createState() => _SFMCExamplePageState();
}
class _SFMCExamplePageState extends State<SFMCExamplePage> {
SfmcPlugin? sfmcPlugin;
@override
void initState() {
super.initState();
sfmcPlugin = SfmcPlugin();
// 初始化SFMC插件,比如设置API密钥等(这里假设需要)
sfmcPlugin!.initialize("YOUR_SFMC_API_KEY");
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SFMC Plugin Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Send Push Notification'),
ElevatedButton(
onPressed: () {
// 发送推送通知的示例函数
sendPushNotification();
},
child: Text('Send'),
),
],
),
),
);
}
void sendPushNotification() async {
try {
// 假设有一个函数用于发送推送通知
var result = await sfmcPlugin!.sendPushNotification(
to: "DEVICE_ID",
message: "Hello from Flutter!",
);
print("Push notification sent: $result");
} catch (e) {
print("Error sending push notification: $e");
}
}
}
3. 插件方法假设
由于sfmc_plugin
是一个假设的插件,我们假设它有以下方法:
initialize(String apiKey)
: 初始化插件并设置API密钥。sendPushNotification(String to, String message)
: 发送推送通知到指定的设备ID。
4. 注意事项
- 实际插件可能不同:上述代码基于假设的插件API。实际使用时,你需要查阅插件的官方文档来了解其真实API和方法。
- 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以确保应用的健壮性。
- 权限:确保你的应用有权限发送推送通知,并处理用户可能拒绝授予权限的情况。
- 安全性:不要在客户端代码中硬编码敏感信息,如API密钥。考虑使用更安全的方式来管理这些密钥,如环境变量或密钥管理服务。
希望这个示例能帮助你开始使用Flutter中的sfmc_plugin
(或类似的Salesforce Marketing Cloud插件)。如果你有具体的插件名称或API文档,我可以提供更准确的代码示例。