@nativescript/firebase-analytics
Version:
NativeScript Firebase - Analytics
96 lines • 3.13 kB
JavaScript
import { firebase, FirebaseApp, serialize } from '@nativescript/firebase-core';
import { ConsentStatus, ConsentType } from '.';
export * from './common';
let defaultAnalytics;
const fb = firebase();
Object.defineProperty(fb, 'analytics', {
value: () => {
if (!defaultAnalytics) {
defaultAnalytics = new Analytics();
}
return defaultAnalytics;
},
writable: false,
});
export class Analytics {
constructor() {
if (defaultAnalytics) {
return defaultAnalytics;
}
defaultAnalytics = this;
}
handleOpenURL(url) {
try {
FIRAnalytics.handleOpenURL(NSURL.URLWithString(url));
}
catch (e) { }
}
handleUserActivity(userActivity) {
FIRAnalytics.handleUserActivity(userActivity);
}
get app() {
if (!this._app) {
// @ts-ignore
this._app = FirebaseApp.fromNative(FIRApp.defaultApp());
}
return this._app;
}
get appInstanceId() {
return FIRAnalytics?.appInstanceID?.();
}
setSessionTimeoutInterval(sessionTimeoutInterval) {
FIRAnalytics.setSessionTimeoutInterval(sessionTimeoutInterval);
}
setUserProperty(key, value) {
FIRAnalytics.setUserPropertyStringForName(value, key);
}
setAnalyticsCollectionEnabled(analyticsCollectionEnabled) {
FIRAnalytics.setAnalyticsCollectionEnabled(analyticsCollectionEnabled);
}
setUserId(userId) {
FIRAnalytics.setUserID(userId);
}
logEvent(name, parameters) {
FIRAnalytics.logEventWithNameParameters(name, serialize(parameters));
}
resetAnalyticsData() {
FIRAnalytics.resetAnalyticsData();
}
setDefaultEventParameters(parameters) {
FIRAnalytics.setDefaultEventParameters(serialize(parameters));
}
setConsent(consentSettings) {
const dictionary = {};
consentSettings.forEach((value, key) => {
let nativeKey;
let nativeValue;
switch (key) {
case ConsentType.Ad_Storage:
nativeKey = FIRConsentTypeAdStorage;
break;
case ConsentType.Analytics_Storage:
nativeKey = FIRConsentTypeAnalyticsStorage;
break;
case ConsentType.Ad_User_Data:
nativeKey = FIRConsentTypeAdUserData;
break;
case ConsentType.Ad_Personalization:
nativeKey = FIRConsentTypeAdPersonalization;
break;
}
switch (value) {
case ConsentStatus.Denied:
nativeValue = FIRConsentStatusDenied;
break;
case ConsentStatus.Granted:
nativeValue = FIRConsentStatusGranted;
break;
}
if (nativeKey && nativeValue) {
dictionary[nativeKey] = nativeValue;
}
});
FIRAnalytics.setConsent(dictionary);
}
}
//# sourceMappingURL=index.ios.js.map