The Android SDK automatically registers an Application.ActivityLifecycleCallbacks
and listens for onActivityResumed
. When an activity is resumed, SDK collects the data from the activity. Currently, it is being used in the following scenarios:
- Tracking deep link clickthrough
- Tracking push message clickthrough
- Tracking Local Notification clickthrough
Swift
This method should be called to support the following use cases:
- Tracking deep link clickthroughs
- From
application(_:didFinishLaunchingWithOptions:)
- Extract
userInfo
fromurl: UIApplication.LaunchOptionsKey
- From
- Tracking push message clickthrough
- From
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
- From
Syntax
Copied to your clipboardpublic static func collectLaunchInfo(_ userInfo: [String: Any])
Example
Copied to your clipboardMobileCore.collectLaunchInfo(userInfo)
Objective-C
This method should be called to support the following use cases:
- Tracking deep link clickthroughs
- From
application:didFinishLaunchingWithOptions
- Extract
userInfo
fromUIApplicationLaunchOptionsURLKey
- Tracking push message clickthrough
- From
application:didReceiveRemoteNotification:fetchCompletionHandler:
- From
Syntax
Copied to your clipboard@objc(collectLaunchInfo:)public static func collectLaunchInfo(_ userInfo: [String: Any])
Example
Copied to your clipboard[AEPMobileCore collectLaunchInfo:launchOptions];
Java
Syntax
Copied to your clipboardpublic static void collectPii(@NonNull final Map<String, String> data)
Example
Copied to your clipboardMap<String, String> data = new HashMap<String, String>();data.put("firstname", "customer");//The rule to trigger a PII needs to be setup for this call//to result in a network sendMobileCore.collectPii(data);
Swift
Syntax
Copied to your clipboardpublic static func collectPii(_ data: [String: Any])
Example
Copied to your clipboardMobileCore.collectPii(["key1" : "value1","key2" : "value2"]);
Objective-C
Syntax
Copied to your clipboard@objc(collectPii:)public static func collectPii(_ data: [String: Any])
Example
Copied to your clipboard[AEPMobileCore collectPii:data:@{@"key1" : @"value1",@"key2" : @"value2"}];
Java
Syntax
Copied to your clipboardpublic static void dispatchEvent(@NonNull final Event event)
Example
Copied to your clipboardfinal Map<String, Object> eventData = new HashMap<>();eventData.put("sampleKey", "sampleValue");final Event sampleEvent = new Event.Builder("SampleEventName", "SampleEventType", "SampleEventSource").setEventData(eventData).build();MobileCore.dispatchEvent(sampleEvent);
Swift
Syntax
Copied to your clipboardpublic static func dispatch(event: Event)
Example
Copied to your clipboardlet event = Event(name: "Sample Event Name", type: EventType.custom, source: EventType.custom, data: ["sampleKey": "sampleValue"])MobileCore.dispatch(event: event)
Objective-C
Syntax
Copied to your clipboard@objc(dispatch:)public static func dispatch(event: Event)
Example
Copied to your clipboardAEPEvent *event = [[AEPEvent alloc] initWithName:@"Sample Event Name" type:AEPEventType.custom source:AEPEventType.custom data:@{@"sampleKey": @"sampleValue"}];[AEPMobileCore dispatch:event];
Java
Syntax
Copied to your clipboardpublic static void dispatchEventWithResponseCallback(@NonNull final Event event, final long timeoutMS, @NonNull final AdobeCallbackWithError<Event> responseCallback)
Example
Copied to your clipboardfinal Map<String, Object> eventData = new HashMap<>();eventData.put("sampleKey", "sampleValue");final Event sampleEvent = new Event.Builder("My Event", "SampleEventType", "SampleEventSource").setEventData(eventData).build();MobileCore.dispatchEventWithResponseCallback(sampleEvent, 5000L, new AdobeCallbackWithError<Event>() {// handle response event});
Swift
Syntax
Copied to your clipboardpublic static func dispatch(event: Event, timeout: TimeInterval = 1, responseCallback: @escaping (Event?) -> Void)
Example
Copied to your clipboardlet event = Event(name: "My Event", type: EventType.custom, source: EventType.custom, data: ["sampleKey": "sampleValue"])MobileCore.dispatch(event: event) { (responseEvent) in// handle responseEvent}
Objective-C
Syntax
Copied to your clipboard@objc(dispatch:timeout:responseCallback:)public static func dispatch(event: Event, timeout: TimeInterval = 1, responseCallback: @escaping (Event?) -> Void)
Example
Copied to your clipboardAEPEvent *event = [[AEPEvent alloc] initWithName:@"My Event" type:AEPEventType.custom source:AEPEventType.custom data:@{@"sampleKey": @"sampleValue"}];[AEPMobileCore dispatch:event responseCallback:^(AEPEvent * _Nullable responseEvent) {// handle responseEvent}];
Java
MobileCore.getApplication
will return null
if the Application
object was destroyed or if MobileCore.setApplication
was not previously called.
Syntax
Copied to your clipboard@Nullablepublic static Application getApplication()
Example
Copied to your clipboardApplication app = MobileCore.getApplication();if (app != null) {...}
Java
Syntax
Copied to your clipboard@NonNullpublic static LoggingMode getLogLevel()
Example
Copied to your clipboardLoggingMode mode = MobileCore.getLogLevel();
The logLevel getter has been deprecated. To get the log level in the Swift AEP 3.x SDKs, please use Log.logFilter
instead.
Swift
Syntax
Copied to your clipboardpublic static var logFilter: LogLevel
This variable is part of the Log
class within AEPServices
.
Example
Copied to your clipboardvar logLevel = Log.logFilter
Objective-C
Syntax
Copied to your clipboard@objc public static var logFilter: LogLevel
Example
Copied to your clipboardAEPLogLevel logLevel = [AEPLog logFilter];
Java
Syntax
Copied to your clipboardvoid getSdkIdentities(@NonNull AdobeCallback<String> callback);
- callback is invoked with the SDK identities as a JSON string. If an instance of
AdobeCallbackWithError
is provided, and you are fetching the attributes from the Mobile SDK, the timeout value is 5000ms. If the operation times out or an unexpected error occurs, thefail
method is called with the appropriateAdobeError
.
Example
Copied to your clipboardMobileCore.getSdkIdentities(new AdobeCallback<String>() {@Overridepublic void call(String value) {// handle the json string}});
Swift
Syntax
Copied to your clipboardstatic func getSdkIdentities(completion: @escaping (String?, Error?) -> Void)
- callback is invoked with the SDK identities as a JSON string.
- completionHandler is invoked with the SDK identities as a JSON string, or error if an unexpected error occurs or the request times out. The default timeout is 1000ms.
Example
Copied to your clipboardMobileCore.getSdkIdentities { (content, error) in// handle completion}
Objective-C
Syntax
Copied to your clipboard@objc(getSdkIdentities:)static func getSdkIdentities(completion: @escaping (String?, Error?) -> Void)
- callback is invoked with the SDK identities as a JSON string.
- completionHandler is invoked with the SDK identities as a JSON string, or error if an unexpected error occurs or the request times out. The default timeout is 1000ms.
Example
Copied to your clipboard[AEPMobileCore getSdkIdentities:^(NSString * _Nullable content, NSError * _Nullable error) {if (error) {// handle error here} else {// handle the retrieved identities}}];
This API was deprecated in v2.0.0 of the Mobile Core extension. Use the com.adobe.marketing.mobile.services.Log
instead.
Java
The MobileCore
logging APIs use the android.util.Log
APIs to log messages to Android. Based on the LoggingMode
that is passed to MobileCore.log()
, the following Android method is called:
LoggingMode.VERBOSE
usesandroid.util.Log.v
LoggingMode.DEBUG
usesandroid.util.Log.d
LoggingMode.WARNING
usesandroid.util.Log.w
LoggingMode.ERROR
usesandroid.util.Log.e
All log messages from the Adobe Experience SDK to Android use the same log tag of AdobeExperienceSDK
. For example, if logging an error message is using MobileCore.log()
, the call to android.util.Log.e
looks like Log.e("AdobeExperienceSDK", tag + " - " + message)
.
Syntax
Copied to your clipboardpublic static void log(final LoggingMode mode, final String tag, final String message)
Example
Copied to your clipboardMobileCore.log(LoggingMode.DEBUG, "MyClassName", "Provided data was null");
Output
Copied to your clipboardD/AdobeExperienceSDK: MyClassName - Provided data was null
Swift
The log messages from the Adobe Experience SDK are printed to the Apple System Log facility and use a common format that contains the tag AEP SDK
. For example, if logging an error message using Log.error(label:_ message:_)
, the printed output looks like [AEP SDK ERROR <label>]: message
.
Syntax
Copied to your clipboardpublic static func trace(label: String, _ message: String) {public static func debug(label: String, _ message: String)public static func warning(label: String, _ message: String) {public static func error(label: String, _ message: String) {
Example
Copied to your clipboardLog.trace(label: "testLabel", "Test message")Log.debug(label: "testLabel", "Test message")Log.warning(label: "testLabel", "Test message")Log.error(label: "testLabel", "Test message")
Objective-C
The log messages from the Adobe Experience SDK are printed to the Apple System Log facility and use a common format that contains the tag AEP SDK
. For example, if logging an error message using [AEPLog errorWithLabel: _ message:_]
, the printed output looks like [AEP SDK ERROR <label>]: message
.
Syntax
Copied to your clipboard@objc(traceWithLabel:message:)public static func trace(label: String, _ message: String)@objc(debugWithLabel:message:)public static func debug(label: String, _ message: String)@objc(warningWithLabel:message:)public static func warning(label: String, _ message: String)@objc(errorWithLabel:message:)public static func error(label: String, _ message: String)
Example
Copied to your clipboard[AEPLog traceWithLabel:@"testLabel" message:@"testMessage"];[AEPLog debugWithLabel:@"testLabel" message:@"testMessage"];[AEPLog warningWithLabel:@"testLabel" message:@"testMessage"];[AEPLog errorWithLabel:@"testLabel" message:@"testMessage"];
Java
Syntax
Copied to your clipboardpublic static void registerEventListener(@NonNull final String eventType, @NonNull final String eventSource, @NonNull final AdobeCallback<Event> callback)
Example
Copied to your clipboardMobileCore.registerEventListener(EventType.CONFIGURATION, EventSource.RESPONSE_CONTENT, new AdobeCallback<Event>() {@Overridepublic void call(Event value) {// handle event}});
Swift
Syntax
Copied to your clipboardpublic static func registerEventListener(type: String, source: String, listener: @escaping EventListener)
Example
Copied to your clipboardMobileCore.registerEventListener(type: EventType.configuration, source: EventSource.responseContent, listener: { event in// handle event})
Objective-C
Syntax
Copied to your clipboard@objc(registerEventListenerWithType:source:listener:)public static func registerEventListener(type: String, source: String, listener: @escaping EventListener)
Example
Copied to your clipboard[AEPMobileCore registerEventListenerWithType: type source: source listener:^(AEPEvent * _Nonnull event) {// handle event}];
This API has been deprecated starting in v2.0.0 and removed in v3.0.0 of Mobile Core extension.
Use registerExtensions to register desired extensions and boot up the SDK for event processing. Calling MobileCore.start()
API is no longer required when using MobileCore.registerExtensions()
.
Java
Syntax
Copied to your clipboardpublic static boolean registerExtension(@NonNull final Class<? extends Extension> extensionClass, @Nullable final ExtensionErrorCallback<ExtensionError> errorCallback)
Example
Copied to your clipboardMobileCore.registerExtension(Signal.EXTENSION, errorCallback -> {// handle callback});
Swift
Syntax
Copied to your clipboardpublic static func registerExtension(_ exten: Extension.Type, _ completion: (() -> Void)? = nil)
Example
Copied to your clipboardMobileCore.registerExtension(Lifecycle.self) {// handle completion}
Objective-C
Syntax
Copied to your clipboard@objc(registerExtension:completion:)public static func registerExtension(_ exten: Extension.Type, _ completion: (() -> Void)? = nil)
Example
Copied to your clipboard[AEPMobileCore registerExtension:AEPMobileLifecycle.class completion:^{// handle completion}];
Java
Syntax
Copied to your clipboardpublic static void registerExtensions(@NonNull final List<Class<? extends Extension>> extensions, @Nullable final AdobeCallback<?> completionCallback)
Example
Copied to your clipboardimport com.adobe.marketing.mobile.AdobeCallback;import com.adobe.marketing.mobile.Edge;import com.adobe.marketing.mobile.edge.consent.Consent;import com.adobe.marketing.mobile.edge.identity.Identity;import com.adobe.marketing.mobile.Lifecycle;import com.adobe.marketing.mobile.LoggingMode;import com.adobe.marketing.mobile.MobileCore;import com.adobe.marketing.mobile.Signal;import com.adobe.marketing.mobile.UserProfile;...import android.app.Application;...public class MainApp extends Application {// Set up the preferred Environment File ID from your mobile property configured in Data Collection UIprivate static final String ENVIRONMENT_FILE_ID = "YOUR_ENVIRONMENT_FILE_ID";@Overridepublic void onCreate() {super.onCreate();MobileCore.setApplication(this);MobileCore.configureWithAppID(ENVIRONMENT_FILE_ID);List<Class<? extends Extension>> extensions = Arrays.asList(Lifecycle.EXTENSION,Signal.EXTENSION,UserProfile.EXTENSIONEdge.EXTENSION,Consent.EXTENSION,EdgeIdentity.EXTENSION);MobileCore.registerExtensions(extensions, o -> {Log.d(LOG_TAG, "AEP Mobile SDK is initialized");});}}
Swift
Syntax
Copied to your clipboardpublic static func registerExtensions(_ extensions: [NSObject.Type], _ completion: (() -> Void)? = nil)
Example
Copied to your clipboard// AppDelegate.swiftfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {MobileCore.registerExtensions([Signal.self, Lifecycle.self, UserProfile.self, Edge.self, AEPEdgeIdentity.Identity.self, Consent.self], {MobileCore.configureWith(appId: "yourAppId")})...}
Objective-C
Syntax
Copied to your clipboard@objc(registerExtensions:completion:)public static func registerExtensions(_ extensions: [NSObject.Type], _ completion: (() -> Void)? = nil)
Example
Copied to your clipboard// AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[AEPMobileCore registerExtensions:@[AEPMobileSignal.class, AEPMobileLifecycle.class, AEPMobileUserProfile.class, AEPMobileEdge.class, AEPMobileEdgeIdentity.class, AEPMobileEdgeConsent.class] completion:^{[AEPMobileCore configureWithAppId: @"yourAppId"];}];...}
Java
Syntax
Copied to your clipboardvoid resetIdentities();
Example
Copied to your clipboardMobileCore.resetIdentities();
Swift
Syntax
Copied to your clipboardstatic func resetIdentities()
Example
Copied to your clipboardMobileCore.resetIdentities()
Objective-C
Syntax
Copied to your clipboard@objc(resetIdentities)static func resetIdentities()
Example
Copied to your clipboard[AEPMobileCore resetIdentities];
Swift
Syntax
Copied to your clipboardpublic static func setAppGroup(_ group: String?)
Example
Copied to your clipboardMobileCore.setAppGroup("appGroupId")
Objective-C
Syntax
Copied to your clipboard@objc(setAppGroup:)public static func setAppGroup(_ group: String?)
Example
Copied to your clipboard[AEPMobileCore setAppGroup:@"app-group-id"];
Java
Syntax
Copied to your clipboardpublic static void setApplication(@NonNull final Application app)
Example
Copied to your clipboardpublic class CoreApp extends Application {@Overridepublic void onCreate() {super.onCreate();MobileCore.setApplication(this);List<Class<? extends Extension>> extensions = Arrays.asList(Lifecycle.EXTENSION, Signal.EXTENSION, UserProfile.EXTENSION...);MobileCore.registerExtensions(extensions, o -> {Log.d(LOG_TAG, "AEP Mobile SDK is initialized");});}}
Java
Syntax
Copied to your clipboardpublic static void setLogLevel(@NonNull LoggingMode mode)
Example
Copied to your clipboardimport com.adobe.marketing.mobile.LoggingMode;import com.adobe.marketing.mobile.MobileCore;MobileCore.setLogLevel(LoggingMode.VERBOSE);
Swift
Syntax
Copied to your clipboardpublic static func setLogLevel(_ level: LogLevel)
Example
Copied to your clipboardimport AEPCoreimport AEPServicesMobileCore.setLogLevel(.trace)
Objective-C
Syntax
Copied to your clipboard@objc(setLogLevel:)public static func setLogLevel(_ level: LogLevel)
Example
Copied to your clipboard@import AEPCore;@import AEPServices;[AEPMobileCore setLogLevel: AEPLogLevelTrace];
Java
Syntax
Copied to your clipboardpublic static void setPushIdentifier(@Nullable final String pushIdentifier);
- pushIdentifier is a string that contains the device token for push notifications.
Example
Copied to your clipboard//Retrieve the token from either GCM or FCM, and pass it to the SDKMobileCore.setPushIdentifier(token);
Swift
Syntax
Copied to your clipboardpublic static func setPushIdentifier(_ deviceToken: Data?)
Example
Copied to your clipboardMobileCore.setPushIdentifier(deviceToken)
Objective-C
Syntax
Copied to your clipboard@objc(setPushIdentifier:)public static func setPushIdentifier(_ deviceToken: Data?)
Example
Copied to your clipboard[AEPMobileCore setPushIdentifier:deviceToken];
Java
setSmallIconResourceID
Syntax
Copied to your clipboardpublic static void setSmallIconResourceID(int resourceID)
Example
Copied to your clipboardMobileCore.setSmallIconResourceID(R.mipmap.ic_launcher_round);
setLargeIconResourceID
Syntax
Copied to your clipboardpublic static void setLargeIconResourceID(int resourceID)
Example
Copied to your clipboardMobileCore.setLargeIconResourceID(R.mipmap.ic_launcher_round);
The wrapper type can be set to one of the follwing types: NONE
, REACT_NATIVE
, FLUTTER
, CORDOVA
, UNITY
, XAMARIN
.
Java
Syntax
Copied to your clipboardpublic static void setWrapperType(@NonNull final WrapperType wrapperType)
Example
Copied to your clipboardMobileCore.setWrapperType(WrapperType.REACT_NATIVE);
The wrapper type can be set to one of the follwing types: none
, reactNative
, flutter
, cordova
, unity
, xamarin
.
Swift
Syntax
Copied to your clipboardpublic static func setWrapperType(_ type: WrapperType)
Example
Copied to your clipboardMobileCore.setWrapperType(.flutter)
Objective-C
Syntax
Copied to your clipboard@objc(setWrapperType:)public static func setWrapperType(_ type: WrapperType)
Example
Copied to your clipboard[AEPMobileCore setWrapperType:AEPWrapperTypeFlutter];
Java
Syntax
Copied to your clipboardpublic static void start(@Nullable final AdobeCallback<?> completionCallback)
Example
Copied to your clipboardimport com.adobe.marketing.mobile.AdobeCallback;import com.adobe.marketing.mobile.Lifecycle;import com.adobe.marketing.mobile.LoggingMode;import com.adobe.marketing.mobile.MobileCore;import com.adobe.marketing.mobile.Signal;import com.adobe.marketing.mobile.UserProfile;...import android.app.Application;...public class MyApp extends Application {...@Overridepublic void on Create(){super.onCreate();MobileCore.setApplication(this);UserProfile.registerExtension();Lifecycle.registerExtension();Signal.registerExtension();MobileCore.start(new AdobeCallback () {@Overridepublic void call(Object o) {// implement callback}});}}
Java
Syntax
Copied to your clipboardpublic static void trackAction(@NonNull final String action, @Nullable final Map<String, String> contextData)
- action contains the name of the action to track.
- contextData contains the context data to attach on the hit.
Example
Copied to your clipboardMap<String, String> additionalContextData = new HashMap<String, String>();additionalContextData.put("customKey", "value");MobileCore.trackAction("loginClicked", additionalContextData);
Swift
Syntax
Copied to your clipboardstatic func track(action: String?, data: [String: Any]?)
- action contains the name of the action to track.
- contextData contains the context data to attach on this hit.
Example
Copied to your clipboardMobileCore.track(action: "action name", data: ["key": "value"])
Objective-C
Syntax
Copied to your clipboard@objc(trackAction:data:)static func track(action: String?, data: [String: Any]?)
- action contains the name of the action to track.
- contextData contains the context data to attach on this hit.
Example
Copied to your clipboard[AEPMobileCore trackAction:@"action name" data:@{@"key":@"value"}];
Java
In Android, trackState
is typically called every time a new Activity
is loaded.
Syntax
Copied to your clipboardpublic static void trackState(@NonNull final String state, @Nullable final Map<String, String> contextData)
- state contains the name of the state to track.
- contextData contains the context data to attach on the hit.
Example
Copied to your clipboardMap<String, String> additionalContextData = new HashMap<String, String>();additionalContextData.put("customKey", "value");MobileCore.trackState("homePage", additionalContextData);
Swift
Syntax
Copied to your clipboardstatic func track(state: String?, data: [String: Any]?)
- state contains the name of the state to track.
- contextData contains the context data to attach on this hit.
Example
Copied to your clipboardMobileCore.track(state: "state name", data: ["key": "value"])
Objective-C
Syntax
Copied to your clipboard@objc(trackState:data:)static func track(state: String?, data: [String: Any]?)
- state contains the name of the state to track.
- contextData contains the context data to attach on this hit.
Example
Copied to your clipboard[AEPMobileCore trackState:@"state name" data:@{@"key":@"value"}];
Java
AdobeCallback
The AdobeCallback
class provides the interface to receive results when the asynchronous APIs perform the requested action.
Copied to your clipboardpublic interface AdobeCallback<T> {void call(final T value);}
AdobeCallbackWithError
The AdobeCallbackWithError
class provides the interface to receive results or an error when the asynchronous APIs perform the requested action.
When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding AdobeError
.
Copied to your clipboardpublic interface AdobeCallbackWithError<T> extends AdobeCallback<T> {void fail(final AdobeError error);}
AdobeError
The AdobeError
class shows the errors that can be passed to an AdobeCallbackWithError
:
UNEXPECTED_ERROR
- An unexpected error occurred.CALLBACK_TIMEOUT
- The timeout was met.CALLBACK_NULL
- The provided callback function is null.EXTENSION_NOT_INITIALIZED
- The extension is not initialized.SERVER_ERROR
- There was a server error.NETWORK_ERROR
- There was a network error.INVALID_REQUEST
- There was an invalid request.INVALID_RESPONSE
- There was an invalid response.
Example
Copied to your clipboardMobileCore.getPrivacyStatus(new AdobeCallbackWithError<MobilePrivacyStatus>() {@Overridepublic void fail(final AdobeError error) {if (error == AdobeError.UNEXPECTED_ERROR) {// handle unexpected error} else if (error == AdobeError.CALLBACK_TIMEOUT) {// handle timeout error} else if (error == AdobeError.CALLBACK_NULL) {// handle null callback error} else if (error == AdobeError.EXTENSION_NOT_INITIALIZED) {// handle extension not initialized error} else if (error == AdobeError.SERVER_ERROR) {// handle server error} else if (error == AdobeError.NETWORK_ERROR) {// handle network error} else if (error == AdobeError.INVALID_REQUEST) {// handle invalid request error} else if (error == AdobeError.INVALID_RESPONSE) {// handle invalid response error}}@Overridepublic void call(final MobilePrivacyStatus value) {// use MobilePrivacyStatus value}});
AEPError
The AEPError
enum shows the errors that can be passed to a completion handler callback from any API which uses one:
case unexpected
- An unexpected error occured.case callbackTimeout
- The timeout was met.case callbackNil
- The provided callback function is nil.case none
- There was no error, used when an error return type is required but there was no error.case serverError
- There was a server error.case networkError
- There was a network error.case invalidRequest
- There was an invalid request.case invalidResponse
- There was an invalid response.case errorExtensionNotInitialized
- The extension is not initialized.
Example
Swift
Copied to your clipboardMobileCore.getSdkIdentities { (content, error) inif let error = error, let aepError = error as? AEPError {switch aepError {case .unexpected:// Handle unexpected errorcase .callbackTimeout:// Handle callback timeout errorcase .callbackNil:// Handle callback being nil errorcase .none:// no errorcase .serverError:// handle server errorcase .networkError:// handle network errorcase .invalidRequest:// handle invalid request errorcase .invalidResponse:// handle invalid response errorcase .errorExtensionNotInitialized:// handle extension not initialized error@unknown default:// handle unknown error}}...}
Objective-C
Copied to your clipboard[AEPMobileCore getSdkIdentities:^(NSString * _Nullable content, NSError * _Nullable error) {if (error) {if (error.code == AEPErrorUnexpected) {// Handle unexpected error} else if (error.code == AEPErrorCallbackTimeout) {// Handle callback timeout error} else if (error.code == AEPErrorCallbackNil) {// Handle callback being nil error} else if (error.code == AEPErrorNone) {// no error} else if (error.code == AEPErrorServerError) {// handle server error} else if (error.code == AEPErrorNetworkError) {// handle network error} else if (error.code == AEPErrorInvalidRequest) {// handle invalid request error} else if (error.code == AEPErrorInvalidResponse) {// handle invalid response error} else if (error.code == AEPErrorErrorExtensionNotInitialized) {// handle extension not intialized error}}...}];