@appmetrica/react-native-analytics
Version:
React Native plugin for AppMetrica analytics tool
103 lines (102 loc) • 3.31 kB
JavaScript
import { Linking, NativeModules, Platform } from 'react-native';
import { normalizeAdRevenue } from './utils';
const LINKING_ERROR = `The package '@appmetrica/react-native-analytics' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
ios: "- You have run 'pod install'\n",
default: ''
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
const AppMetricaNative = NativeModules.AppMetrica ? NativeModules.AppMetrica : new Proxy({}, {
get() {
throw new Error(LINKING_ERROR);
}
});
var activated = false;
function appOpenTracking() {
const getUrlAsync = async () => {
const initialUrl = await Linking.getInitialURL();
if (initialUrl != null) {
AppMetricaNative.reportAppOpen(initialUrl);
}
};
const callback = event => {
AppMetricaNative.reportAppOpen(event.url);
};
getUrlAsync();
Linking.addEventListener('url', callback);
}
export const DEVICE_ID_HASH_KEY = 'appmetrica_device_id_hash';
export const DEVICE_ID_KEY = 'appmetrica_device_id';
export const UUID_KEY = 'appmetrica_uuid';
export * from './ecommerce';
export * from './revenue';
export * from './userProfile';
export * from './externalAttribution';
export default class AppMetrica {
static activate(config) {
if (!activated) {
AppMetricaNative.activate(config);
if (config.appOpenTrackingEnabled !== false) {
appOpenTracking();
}
activated = true;
}
}
// Android only
static async getLibraryApiLevel() {
return AppMetricaNative.getLibraryApiLevel();
}
static async getLibraryVersion() {
return AppMetricaNative.getLibraryVersion();
}
static pauseSession() {
AppMetricaNative.pauseSession();
}
static reportAppOpen(deeplink) {
AppMetricaNative.reportAppOpen(deeplink);
}
static reportError(identifier, message, _reason) {
AppMetricaNative.reportError(identifier, message);
}
static reportEvent(eventName, attributes) {
AppMetricaNative.reportEvent(eventName, attributes);
}
static requestStartupParams(listener, identifiers) {
AppMetricaNative.requestStartupParams(identifiers, listener);
}
static resumeSession() {
AppMetricaNative.resumeSession();
}
static sendEventsBuffer() {
AppMetricaNative.sendEventsBuffer();
}
static setLocation(location) {
AppMetricaNative.setLocation(location);
}
static setLocationTracking(enabled) {
AppMetricaNative.setLocationTracking(enabled);
}
static setDataSendingEnabled(enabled) {
AppMetricaNative.setDataSendingEnabled(enabled);
}
static setUserProfileID(userProfileID) {
AppMetricaNative.setUserProfileID(userProfileID);
}
static reportECommerce(event) {
AppMetricaNative.reportECommerce(event);
}
static reportRevenue(revenue) {
AppMetricaNative.reportRevenue(revenue);
}
static reportAdRevenue(adRevenue) {
AppMetricaNative.reportAdRevenue(normalizeAdRevenue(adRevenue));
}
static reportUserProfile(userProfile) {
AppMetricaNative.reportUserProfile(userProfile);
}
static putErrorEnvironmentValue(key, value) {
AppMetricaNative.putErrorEnvironmentValue(key, value);
}
static reportExternalAttribution(attribution) {
AppMetricaNative.reportExternalAttribution(attribution);
}
}
//# sourceMappingURL=index.js.map