npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-pvt-acpcore

v1.5.1

Published

Adobe Experience Platform support for React Native apps.

Downloads

2

Readme

React Native AEP Core Extension

npm version npm downloads CircleCI license

@adobe/react-native-acpcore is a wrapper around the iOS, tvOS and Android AEP Core SDK to allow for integration with React Native applications. Functionality to enable the Core extension is provided entirely through JavaScript documented below.

Contents

Installation

You need to install the SDK with npm and configure the native Android/iOS project in your react native project.

Note: If you are new to React Native we suggest you follow the React Native Getting Started page before continuing.

1. Create React Native project

First create a React Native project:

react-native init MyReactApp

Note: Follow React Native tvos support to create app with tvos target.

2. Install JavaScript packages

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

cd MyReactApp
npm install @adobe/react-native-acpcore

2.1 Link

  • React Native 0.60+

CLI autolink feature links the module while building the app.

  • React Native <= 0.59
react-native link @adobe/react-native-acpcore

Note: if using Cocoapods, run:

cd ios/ && pod install

3. Configure native projects

3.1 iOS project

(Only required for React Native <= 0.59)

In the Link Binary With Libraries section, click the + link and add the following frameworks and libraries:

  • UIKit.framework
  • SystemConfiguration.framework
  • WebKit.framework
  • UserNotifications.framework
  • libsqlite3.0.tbd
  • libc++.tbd
  • libz.tbd

4. Next steps

After you have installed Core, you can install additional AEP React Native extensions.

| Extension | npm package | | ------------ | ------------------------------------------------------------ | | Analytics | npm version | | Audience | npm version | | Campaign | npm version | | Media | npm version | | Target | npm version | | User Profile | npm version |

Tests

This project contains jest unit tests which are contained in the __tests__ directory, to run the tests locally:

make run-tests-locally

Usage

Initializing:

Initializing the SDK should be done in native code, documentation on how to initialize the SDK can be found here. The linked documentation initializes the User Profile extension which is not required, however, if you are interested in the User Profile extension for React Native you can find it here.

Once you have added the initialization code to your app, be sure to set the SDK wrapper type to React Native before you start the SDK.

iOS:
[ACPCore setWrapperType:ACPMobileWrapperTypeReactNative];
Android:
MobileCore.setWrapperType(WrapperType.REACT_NATIVE);

Core

Updating the SDK configuration:
ACPCore.updateConfiguration({"yourConfigKey": "yourConfigValue"});
Getting the SDK version:
ACPCore.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPCore version: " + version));
Getting the log level:
ACPCore.getLogLevel().then(level => console.log("AdobeExperienceSDK: Log Level = " + level));
Controlling the log level of the SDK:
import {ACPMobileLogLevel} from '@adobe/react-native-acpcore';

ACPCore.setLogLevel(ACPMobileLogLevel.VERBOSE);
Using the AEP Logging API:
import {ACPMobileLogLevel} from '@adobe/react-native-acpcore';

ACPCore.log(ACPMobileLogLevel.ERROR, "React Native Tag", "React Native Message");

Note: ACPMobileLogLevel contains the following getters:

const ERROR = "ACP_LOG_LEVEL_ERROR";
const WARNING = "ACP_LOG_LEVEL_WARNING";
const DEBUG = "ACP_LOG_LEVEL_DEBUG";
const VERBOSE = "ACP_LOG_LEVEL_VERBOSE";
Getting the current privacy status:
ACPCore.getPrivacyStatus().then(status => console.log("AdobeExperienceSDK: Privacy Status = " + status));
Setting the privacy status:
import {ACPMobilePrivacyStatus} from '@adobe/react-native-acpcore';

ACPCore.setPrivacyStatus(ACPMobilePrivacyStatus.OPT_IN);

Note: ACPMobilePrivacyStatus contains the following getters:

const OPT_IN = "ACP_PRIVACY_STATUS_OPT_IN";
const OPT_OUT = "ACP_PRIVACY_STATUS_OPT_OUT";
const UNKNOWN = "ACP_PRIVACY_STATUS_UNKNOWN";
Getting the SDK identities:
ACPCore.getSdkIdentities().then(identities => console.log("AdobeExperienceSDK: Identities = " + identities));
Dispatching an Event Hub event:
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';

var event = new ACPExtensionEvent("eventName", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchEvent(event);
Dispatching an Event Hub event with callback:
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';

var event = new ACPExtensionEvent("eventName", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchEventWithResponseCallback(event).then(responseEvent => console.log("AdobeExperienceSDK: responseEvent = " + responseEvent));
Dispatching an Event Hub response event:
import {ACPExtensionEvent} from '@adobe/react-native-acpcore';

var responseEvent = new ACPExtensionEvent("responseEvent", "eventType", "eventSource", {"testDataKey": "testDataValue"});
var requestEvent = new ACPExtensionEvent("requestEvent", "eventType", "eventSource", {"testDataKey": "testDataValue"});
ACPCore.dispatchResponseEvent(responseEvent, requestEvent);

Identity

Getting the extension version:
ACPIdentity.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPIdentity version: " + version));
Registering the extension with Core:
ACPIdentity.registerExtension();
Sync Identifier:
ACPIdentity.syncIdentifier("identifierType", "identifier", ACPMobileVisitorAuthenticationState.AUTHENTICATED);
Sync Identifiers:
ACPIdentity.syncIdentifiers({"id1": "identifier1"});
Sync Identifiers with Authentication State:
import {ACPMobileVisitorAuthenticationState} from '@adobe/react-native-acpcore';

ACPIdentity.syncIdentifiersWithAuthState({"id1": "identifier1"}, ACPMobileVisitorAuthenticationState.UNKNOWN);

Note: ACPMobileVisitorAuthenticationState contains the following getters:

const AUTHENTICATED = "ACP_VISITOR_AUTH_STATE_AUTHENTICATED";
const LOGGED_OUT = "ACP_VISITOR_AUTH_STATE_LOGGED_OUT";
const UNKNOWN = "ACP_VISITOR_AUTH_STATE_UNKNOWN";
Setting the advertising identifier:
ACPCore.setAdvertisingIdentifier("adID");
Append visitor data to a URL:
ACPIdentity.appendVisitorInfoForURL("test.com").then(urlWithVisitorData => console.log("AdobeExperienceSDK: VisitorData = " + urlWithVisitorData));
Get visitor data as URL query parameter string:
ACPIdentity.getUrlVariables().then(urlVariables => console.log("AdobeExperienceSDK: UrlVariables = " + urlVariables));
Get Identifiers:
ACPIdentity.getIdentifiers().then(identifiers => console.log("AdobeExperienceSDK: Identifiers = " + identifiers));
Get Experience Cloud IDs:
ACPIdentity.getExperienceCloudId().then(cloudId => console.log("AdobeExperienceSDK: CloudID = " + cloudId));
Setting the push identifier:
ACPCore.setPushIdentifier("pushIdentifier");
VisitorID Class:
import {ACPVisitorID} from '@adobe/react-native-acpcore';

var visitorId = new ACPVisitorID(idOrigin?: string, idType: string, id?: string, authenticationState?: ACPMobileVisitorAuthenticationState)

Lifecycle

Note: Implementing Lifecycle via Javascript may lead to inaccurate Lifecycle metrics, therefore we recommend implementing Lifecycle in native Android and iOS code. However, if implementing Lifecycle in Javascript is required you can use the AppState to receive notifications about when your app enters foreground/background. Based on the AppState you can make the corresponding calls to lifecycleStart and lifecyclePause.

Getting the extension version:
ACPLifecycle.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPLifecycle version: " + version));
Registering the extension with Core:
ACPLifecycle.registerExtension();
Starting a lifecycle event:
ACPCore.lifecycleStart({"lifecycleStart": "myData"});
Pausing a lifecycle event:
ACPCore.lifecyclePause();

Signal

Getting the extension version:
ACPSignal.extensionVersion().then(version => console.log("AdobeExperienceSDK: ACPSignal version: " + version));
Registering the extension with Core:
ACPSignal.registerExtension();
Collecting PII:
ACPCore.collectPii({"myPii": "data"});

Troubleshooting

  1. A few different errors can result from not running react-native link @adobe/react-native-acpcore or when the autolinker in React Native 0.60.x does not properly link the SDK when building.
  • TypeError: null is not an object (evaluating RCTACPCore...)

  • ACPCore.h not found when importing <RCTACPCore/ACPCore.h>

  • No SDK logs or errors after implementing in Javascript

react-native link @adobe/react-native-acpcore
cd ios/ && pod install # only if using pods

Another possible issue is that your application is built using Expo. Unfortunately Expo does not support native modules out of the box. Please see Ejecting to ExpoKit.

  1. Specs satisfying the RCTACPCore (from ../node_modules/@adobe/react-native-acpcore) dependency were found, but they required a higher minimum deployment target.
  • The AEP SDK's require at least iOS 10.0 to function properly. If you see this error, ensure your Podfile specfies at least iOS 10.0.

Contributing

See CONTRIBUTING

License

See LICENSE