Set up Project Griffon

Project Griffon is a beta product. To use it, you must accept the terms on https://experience.adobe.com/griffon.

Beta products are not supported by Adobe customer care or Adobe Experience Cloud community forums. Please use the Slack channel provided in your beta invite email to ask and resolve concerns.

How to participate in the Project Griffon beta

  1. Request access to Project Griffon by filling out the intake form

  2. Visit Project Griffon to start your first session

Request Access to Project Griffon

Please fill out this form to request access for Project Griffon.

Beta participation requires a valid, active Adobe Experience Cloud contract. Beta participation is subject to terms (as listed above). Project Griffon team do their best to respond on your participation request within 48-72 hours after form submission.

You may access Project Griffon by visiting https://experience.adobe.com/griffon.

Setup app for Project Griffon

Follow these steps to add Project Griffon to your app:

  1. Follow instructions to implement the new Adobe Experience Platform Mobile SDK (skip if already done)

  2. Add the Project Griffon Extension to your app

    1. In Experience Platform Launch, click the Extensions tab.

    2. On the Catalog tab, locate the Project Griffon extension, and click Install.

    3. Follow the publishing process to update SDK configuration.

  3. Implement Project Griffon SDK APIs in your app

Add Project Griffon Extension to your app

Use the latest versions of the Adobe Experience Platform Mobile SDK and Project Griffon SDK extension to try out our newest functionality.

Add Project Griffon

Android
iOS
React Native
Flutter
Cordova
Unity
Xamarin
Android

Java

  1. Add the following libraries in your project's build.gradle file:

    implementation 'com.adobe.marketing.mobile:core:1+'
    implementation 'com.adobe.marketing.mobile:griffon:1+'
  2. Import the Project Griffon libraries with the other SDK libraries:

    import com.adobe.marketing.mobile.Griffon;
    import com.adobe.marketing.mobile.MobileCore;
iOS

Add the library to your project via your Cocoapods Podfile

pod 'ACPCore'
pod 'ACPGriffon'

Import the Project Griffon libraries along with other SDK libraries:

Objective-C

#import "ACPCore.h"
#import "ACPGriffon.h" // <-- import the Project Griffon library

Swift

import ACPCore
import ACPGriffon // <-- import the Project Griffon library
React Native

React Native

Install and link the @adobe/react-native-acpgriffon package:

cd MyReactAppnpm install @adobe/react-native-acpgriffon

Link the Griffon extension

  • React Native 0.60+

CLI autolink feature links the module while building the app.

  • React Native <= 0.59

react-native link @adobe/react-native-acpgriffon
Flutter

Dart

Flutter install instructions for Griffon can be found here.

Cordova

Cordova

After creating your Cordova app and adding the Android and iOS platforms, the Project Griffon extension for Cordova can be added with this command:

cordova plugin add https://github.com/adobe/cordova-acpgriffon.git
Unity

C#

After importing the ACPGriffon.unitypackage, the Griffon extension for Unity can be added with following code in the MainScript

using com.adobe.marketing.mobile;
Xamarin

C#

  1. After adding the iOS or Android ACPGriffon NuGet package, the Griffon extension can be added by this import statement

    using Com.Adobe.Marketing.Mobile;
  2. Get the extension version.

    ACPGriffon.ExtensionVersion();

Register Griffon with Mobile Core

Android
iOS
React Native
Flutter
Cordova
Unity
Xamarin
Android

Registering the extension with Core, sends Experience Platform SDK events to an active Project Griffon session. To start using the extension library, you must first register the extension with the Mobile Core extension.

Java

  1. Register the extension when you register other extensions.

    public class MobileApp extends Application {
    @Override
    public void onCreate() {
    super.onCreate();
    MobileCore.setApplication(this);
    MobileCore.configureWithAppId("yourAppId");
    try {
    Griffon.registerExtension();
    MobileCore.start(null);
    } catch (Exception e) {
    // Log the exception
    }
    }
    }
iOS

Registering the extension with Core sends Experience Platform SDK events to an active Project Griffon session. To start using the extension library, you must first register the extension with the Mobile Core extension.

Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ACPCore configureWithAppId:@"yourAppId"];
[ACPGriffon registerExtension]; // <-- register Project Griffon with Core
[ACPCore start:nil];
// Override point for customization after application launch.
return YES;
}

Swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ACPCore.configure(withAppId: "yourAppId")
ACPGriffon.registerExtension() // <-- register Project Griffon with Core
ACPCore.start(nil)
// Override point for customization after application launch.
return true;
}
React Native

React Native

Importing the extension:

import {ACPGriffon} from '@adobe/react-native-acpgriffon';

Getting the extension version:

ACPGriffon.getVersion().then(version => console.log("AdobeExperienceSDK: ACPGriffon version: " + version));

Registering the extension with ACPCore:

Note: It is recommended to initialize the SDK via native code inside your AppDelegate and MainApplication in iOS and Android respectively. However, you can still initialize the SDK in Javascript. For more information see how to initialize Core.

iOS

#import <RCTACPGriffon/ACPGriffon.h>
[ACPGriffon registerExtension];

Android:

import com.adobe.marketing.mobile.Griffon;
Griffon.registerExtension();
Flutter

When using Flutter, registering Griffon with Mobile Core should be done in native code which is shown under the Android and iOS tabs.

Cordova

When using Cordova, registering Griffon with Mobile Core must be done in native code which is shown under the Android and iOS tabs.

Unity

C#

using com.adobe.marketing.mobile;
using AOT;
public class MainScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
ACPGriffon.RegisterExtension();
}
}
Xamarin

C#

iOS

Register the Griffon extension in your app's FinishedLaunching() function:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
ACPGriffon.RegisterExtension();
// start core
ACPCore.Start(startCallback);
return base.FinishedLaunching(app, options);
}
private void startCallback()
{
// set launch config
ACPCore.ConfigureWithAppID("yourAppId");
}

Android

Set the current activity with ACPCore via the ACPCoreBridge and register the Griffon extension in your app's OnCreate() function:

protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
// Set the activity in core using the bridge
ACPCoreBridge.SetCurrentActivity((Activity)Forms.Context);
ACPGriffon.RegisterExtension();
// start core
ACPCore.Start(new CoreStartCompletionCallback());
}
class CoreStartCompletionCallback : Java.Lang.Object, IAdobeCallback
{
public void Call(Java.Lang.Object callback)
{
// set launch config
ACPCore.ConfigureWithAppID("yourAppId");
}
}

Implement Project Griffon session start APIs (iOS)

The startSession API needs to be called to begin a Project Griffon session. When called, SDK displays a PIN authentication overlay to begin a session.

With the latest Project Griffon SDK extensions, Android does not require this API to be called. When the registerExtension API is called, Project Griffon registers the app lifecycle handlers which automatically pick up any deep links and use them to start the session.

You may call this API when the app launches with a url (see code snippet below for sample usage)

iOS
React Native
Cordova
Unity
Xamarin
iOS

startSession

Objective-C

Syntax

+ (void) startSession: (NSURL* _Nonnull) url;

Example

- (BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[ACPGriffon startSession:url];
return false;
}

In iOS 13 and later, for a scene-based application, use the UISceneDelegate's scene(_:openURLContexts:) method as follows:

- (void) scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
UIOpenURLContext * urlContext = URLContexts.anyObject;
if (urlContext != nil) {
[ACPGriffon startSession:urlContext.URL];
}
}

Swift

Example

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
do {
ACPGriffon.startSession(url)
return false
}
}

In iOS 13 and later, for a scene-based application, use the UISceneDelegate's scene(_:openURLContexts:) method as follows:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
ACPGriffon.startSession((URLContexts.first!).url)
}
React Native

React Native

import {ACPGriffon} from '@adobe/react-native-acpgriffon';ACPGriffon.startSession("{your-griffon-session-url}");
Cordova

startSession

Syntax

ACPGriffon.startSession(url, success, error);

Example

ACPGriffon.startSession(sessionUrl, function(handleCallback) {
console.log("AdobeExperenceSDK: Griffon session start successful: " + handleCallback);
}, function(handleError) {
console.log("AdobeExperenceSDK: Failed to start griffon session: " + handleError);
});
Unity

startSession

C#

Syntax

public static void StartSession(string url)

Example

ACPGriffon.StartSession("griffonexample//?adb_validation_sessionid=f35ed0d7-e235-46a6-a327-7346f6de3a0");
Xamarin

startSession

iOS Syntax

public static void StartSession (NSUrl url);

Android Syntax

public unsafe static void StartSession (string url);

iOS Example

NSUrl url = new NSUrl("session url");
ACPGriffon.StartSession(url);

Android Example

ACPGriffon.StartSession("session url");