Flutter营销自动化插件sfmc_flutter的使用
Flutter营销自动化插件sfmc_flutter的使用
功能
- ✅ 设置营销云(适用于iOS和Android)
- ✅ 支持推送通知(适用于iOS和Android)
- ✅ 支持属性(适用于iOS和Android)
- ✅ 支持标签(适用于iOS和Android)
- ✅ 支持启用/禁用详细日志(适用于iOS和Android)
- ✅ 支持启用/禁用推送通知(适用于iOS和Android)
- ❌ 支持应用内消息
- ❌ 支持基于位置的通知
- ❌ 支持信标
安装
在你的Flutter项目的pubspec.yaml
文件中添加以下依赖:
dependencies:
sfmc_flutter: <latest_version>
在你的库中添加以下导入语句:
import 'package:sfmc_flutter/sfmc_flutter.dart';
入门指南
配置Android
- 在项目级别的
build.gradle
文件中添加SFMCSdk仓库:
allprojects {
repositories {
...
maven {
url "https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/repository"
}
}
}
- 在应用级别的
app/build.gradle
文件中添加必要的依赖项:
implementation ("com.salesforce.marketingcloud:marketingcloudsdk:8.0.4")
implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:29.0.0')
implementation 'com.google.firebase:firebase-messaging:20.1.2'
-
将你的
google-services.json
文件从Firebase添加到app/
目录。 -
打开
app/src/main/<your_package_name>/MainActivity.kt
并添加以下代码:
import io.flutter.embedding.android.FlutterActivity
import com.salesforce.marketingcloud.MarketingCloudSdk
import com.salesforce.marketingcloud.MCLogListener
import com.salesforce.marketingcloud.MarketingCloudConfig
import com.salesforce.marketingcloud.notifications.NotificationCustomizationOptions
import com.salesforce.marketingcloud.sfmcsdk.SFMCSdk
import com.salesforce.marketingcloud.sfmcsdk.SFMCSdkModuleConfig
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SFMCSdk.configure(applicationContext as Application, SFMCSdkModuleConfig.build {
pushModuleConfig = MarketingCloudConfig.builder().apply {
setApplicationId("<your_application_id>")
setAccessToken("<your_access_token>")
setSenderId("<your_sender_id>")
setMarketingCloudServerUrl("<your_marketing_cloud_url>")
setMid("<your_mid>")
setNotificationCustomizationOptions(
NotificationCustomizationOptions.create(R.drawable.ic_notification_icon)
)
}.build(applicationContext)
}) { initStatus ->
}
}
}
配置iOS
- 使用Marketing Cloud初始化你的
AppDelegate.swift
文件:
import UIKit
import Flutter
import MarketingCloudSDK
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
self.configureMarketingCloudSDK()
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func configureMarketingCloudSDK() {
let builder = MarketingCloudSDKConfigBuilder()
.sfmc_setApplicationId("<your_application_id>")
.sfmc_setAccessToken("<your_access_token>")
.sfmc_setMarketingCloudServerUrl("<your_marketing_cloud_url>")
.sfmc_setMid("<your_mid>")
.sfmc_build()!
do {
try MarketingCloudSDK.sharedInstance().sfmc_configure(with:builder)
registerForRemoteNotification()
} catch let error as NSError {
}
}
override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
MarketingCloudSDK.sharedInstance().sfmc_setDeviceToken(deviceToken)
}
func registerForRemoteNotification() {
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
if error == nil{
UIApplication.shared.registerForRemoteNotifications()
}
}
}
else {
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
}
}
override func applicationProtectedDataDidBecomeAvailable(_ application: UIApplication) {
if(MarketingCloudSDK.sharedInstance().sfmc_isReady() == false) {
self.configureMarketingCloudSDK()
}
}
}
Flutter中的使用
await SFMCSDK.setContactKey("<contact_id>"); // 设置联系人密钥以供特定用户使用
await SFMCSDK.enablePush(); // 启用SDK的推送功能
await SFMCSDK.disablePush(); // 禁用SDK的推送功能
await SFMCSDK.pushEnabled(); // 返回推送是否已启用
await SFMCSDK.setAttribute("name", "Mark"); // 设置用户属性
await SFMCSDK.clearAttribute("name"); // 删除给定的用户属性
await SFMCSDK.setTag("Barcelona"); // 设置用户标签
await SFMCSDK.removeTag("Barcelona"); // 删除给定的用户标签
await SFMCSDK.enableVerbose(); // 启用原生详细日志记录
await SFMCSDK.disableVerbose(); // 禁用原生详细日志记录
await SFMCSDK.sdkState(); // 返回SDK状态日志
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:sfmc_flutter/sfmc_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 平台消息异步初始化
Future<void> initPlatformState() async {
await SFMCSDK.setupSFMC(
appId: "bcf74e1e-283f-4246-8bbf-a21226009ba5",
accessToken: "eSEriqnxXw2qwOjQghJBWmA7",
mid: "510004233",
sfmcURL:
"https://mcvnbt6lw8r41dcm37h6gm0dtj-m.device.marketingcloudapis.com/",
delayRegistration: true);
await SFMCSDK.setContactKey("alex@dribba.com");
await SFMCSDK.enablePush();
await SFMCSDK.setDeviceToken(
"965b251c6cb1926de3cb366fdfb16ddde6b9086a8a3cac9e5f857679376eab7C");
await SFMCSDK.pushEnabled();
await SFMCSDK.setAttribute("name", "Mark");
await SFMCSDK.setTag("Barcelona");
await SFMCSDK.removeTag("Barcelona");
await SFMCSDK.enableLocationWatching();
await SFMCSDK.enableVerbose();
await SFMCSDK.sdkState();
await SFMCSDK.enableVerbose();
Timer.periodic(Duration(seconds: 2), (timer) async {
_platformVersion = (await SFMCSDK.sdkState())!;
setState(() {});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('SFMCSDK 插件'),
),
body: SingleChildScrollView(
child: Center(
child: Text(_platformVersion),
),
)),
);
}
}
更多关于Flutter营销自动化插件sfmc_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter营销自动化插件sfmc_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
关于Flutter营销自动化插件sfmc_flutter
的使用,这里提供一个基本的代码示例来展示如何集成和使用该插件。请注意,sfmc_flutter
插件的具体API和功能可能会根据插件版本和Salesforce Marketing Cloud(SFMC)的更新而有所变化。因此,在实际开发中,请参考最新的官方文档和插件代码仓库。
首先,确保你已经在Flutter项目中添加了sfmc_flutter
插件。在pubspec.yaml
文件中添加依赖项:
dependencies:
flutter:
sdk: flutter
sfmc_flutter: ^latest_version # 替换为实际最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用sfmc_flutter
插件:
- 初始化插件:
在应用的入口文件(通常是main.dart
)中,初始化sfmc_flutter
插件。这通常涉及到配置SFMC的凭证和设置。
import 'package:flutter/material.dart';
import 'package:sfmc_flutter/sfmc_flutter.dart';
void main() {
// 初始化SFMC插件
SfmcFlutter.instance.initialize(
accessToken: 'YOUR_ACCESS_TOKEN', // 替换为你的SFMC访问令牌
mid: 'YOUR_MID', // 替换为你的Marketing Cloud MID
appId: 'YOUR_APP_ID', // 替换为你的应用ID
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter SFMC Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
- 发送推送通知:
假设你希望发送一条推送通知给特定的用户,你可以使用SfmcFlutter
插件提供的API来实现。
import 'package:flutter/material.dart';
import 'package:sfmc_flutter/sfmc_flutter.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
void _sendPushNotification() async {
try {
// 构建推送通知的负载
Map<String, dynamic> payload = {
'alert': 'Hello, this is a test push notification!',
'sound': 'default',
'badge': 1,
};
// 发送推送通知
bool success = await SfmcFlutter.instance.sendPushNotification(
contactKey: 'YOUR_CONTACT_KEY', // 替换为目标用户的Contact Key
payload: payload,
);
if (success) {
print('Push notification sent successfully!');
} else {
print('Failed to send push notification.');
}
} catch (e) {
print('Error sending push notification: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter SFMC Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _sendPushNotification,
child: Text('Send Push Notification'),
),
),
);
}
}
在上面的代码中,_sendPushNotification
方法展示了如何使用SfmcFlutter
插件发送推送通知。你需要替换YOUR_CONTACT_KEY
为目标用户的Contact Key,并根据需要调整推送通知的负载内容。
请注意,这只是一个基本的示例,实际应用中可能需要处理更多的配置和错误处理。务必参考sfmc_flutter
插件的官方文档和示例代码,以确保正确集成和使用该插件。此外,由于SFMC的API和凭证管理涉及到安全性和隐私保护,务必遵循最佳实践来保护你的凭证和用户数据。