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

  1. 在项目级别的build.gradle文件中添加SFMCSdk仓库:
allprojects {  
  repositories {  
    ...
    maven {  
      url "https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/repository"  
    }  
  }
}
  1. 在应用级别的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'
  1. 将你的google-services.json文件从Firebase添加到app/目录。

  2. 打开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 -&gt;  
   }  
 }  
}

配置iOS

  1. 使用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]?  
    ) -&gt; 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

1 回复

更多关于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插件:

  1. 初始化插件

在应用的入口文件(通常是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(),
    );
  }
}
  1. 发送推送通知

假设你希望发送一条推送通知给特定的用户,你可以使用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和凭证管理涉及到安全性和隐私保护,务必遵循最佳实践来保护你的凭证和用户数据。

回到顶部