sfmc_flutter

Last updated:

0 purchases

sfmc_flutter Image
sfmc_flutter Images
Add to Cart

Description:

sfmc flutter

sfmc_flutter #
A Flutter implementation of Salesforce Marketing Cloud for iOS and Android.
Features #

✅ Setup Marketing Cloud (iOS and Android)
✅ Support for Push Notifications (iOS and Android)
✅ Support Attributes (iOS and Android)
✅ Support TAGS (iOS and Android)
✅ Support Enable/Disable Verbose (iOS and Android)
✅ Support Enable/Disable Push Notifications (iOS and Android)
❌ Support In-App Messaging
❌ Support Location Based Notifications
❌ Support Beacons

Install #
In the pubspec.yaml of your flutter project, add the following dependency:
dependencies:
sfmc_flutter: <latest_version>
copied to clipboard
In your library add the following import:
import 'package:sfmc_flutter/sfmc_flutter.dart';
copied to clipboard
Getting started #
Setup Android #

Add SFMCSdk to project-level build.gradle

allprojects {
repositories {
...
maven {
url "https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/repository"
}
}
}
copied to clipboard

Add SFMCSdk to app-level 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'
copied to clipboard

Add your google-services.json from your Firebase to app/.
Open app/src/main/<your_package_name>/MainActivity.kt and add the following code.

...
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 ->
}
}
}
copied to clipboard
Setup iOS #

Setup your AppDelegate.swift file with Marketing Cloud initialization.

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()
}
}
}
copied to clipboard
Flutter #
await SFMCSDK.setContactKey("<contact_id>"); // Set Contact Key for desired user

await SFMCSDK.enablePush(); // Enables PUSH for SDK
await SFMCSDK.disablePush(); // Disables PUSH for SDK
await SFMCSDK.pushEnabled(); // Returns if push is enabled or not

await SFMCSDK.setAttribute("name", "Mark"); // Set a user attribute
await SFMCSDK.clearAttribute("name"); // Removes a given user attribute

await SFMCSDK.setTag("Barcelona"); // Set a user tag
await SFMCSDK.removeTag("Barcelona"); // Removes a given user tag

await SFMCSDK.enableVerbose(); // Enable native Verbose
await SFMCSDK.disableVerbose(); // Disable native Verbose

await SFMCSDK.sdkState(); // Returns the SDKState log
copied to clipboard
Contributions #
Feel free to contribute to this project.
If you find a bug or want a feature, but don't know how to fix/implement it, please fill an [issue][issue].
If you fixed a bug or implemented a feature, please send a [pull request][pr].

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.