react-native-appmetrica-next
Version:
React Native plugin for AppMetrica analytics tool
144 lines (117 loc) • 3.15 kB
JavaScript
/*
* Version for React Native
* © 2020 YANDEX
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* https://yandex.com/legal/appmetrica_sdk_agreement/
*/
import { NativeModules, Platform } from "react-native";
const { AppMetrica } = NativeModules;
type AppMetricaConfig = {
apiKey: string,
appVersion?: string,
crashReporting?: boolean,
firstActivationAsUpdate?: boolean,
location: Location,
locationTracking?: boolean,
logs?: boolean,
sessionTimeout?: number,
statisticsSending?: boolean,
preloadInfo?: PreloadInfo,
// Only Android
installedAppCollecting?: boolean,
maxReportsInDatabaseCount?: number,
nativeCrashReporting?: boolean,
// Only iOS
activationAsSessionStart?: boolean,
sessionsAutoTracking?: boolean,
};
type FloorType = "male" | "female";
type UserProfileConfig = {
name?: string,
floor?: FloorType,
age?: number,
isNotification?: boolean,
isUsedHousingSearch?: boolean,
isAddObjectFavorites?: boolean,
isStartedBookingProcess?: boolean,
isSuccessBooking?: boolean,
isSuccessRegistered?: boolean,
};
type PreloadInfo = {
trackingId: string,
additionalInfo?: Object,
};
type Location = {
latitude: number,
longitude: number,
altitude?: number,
accuracy?: number,
course?: number,
speed?: number,
timestamp?: number,
};
type AppMetricaDeviceIdReason = "UNKNOWN" | "NETWORK" | "INVALID_RESPONSE";
export default {
activate(config: AppMetricaConfig) {
AppMetrica.activate(config);
},
initPush(token = "") {
if (Platform.OS === "android") {
AppMetrica.initPush();
} else {
AppMetrica.initPush(token);
}
},
getToken() {
return AppMetrica.getToken();
},
reportUserProfile(config: UserProfileConfig) {
AppMetrica.reportUserProfile(config);
},
// Android
async getLibraryApiLevel(): number {
return AppMetrica.getLibraryApiLevel();
},
async getLibraryVersion(): string {
return AppMetrica.getLibraryVersion();
},
pauseSession() {
AppMetrica.pauseSession();
},
reportAppOpen(deeplink: ?string = null) {
AppMetrica.reportAppOpen(deeplink);
},
reportError(error: string, reason: Object) {
AppMetrica.reportError(error);
},
reportEvent(eventName: string, attributes: ?Object = null) {
AppMetrica.reportEvent(eventName, attributes);
},
reportReferralUrl(referralUrl: string) {
AppMetrica.reportReferralUrl(referralUrl);
},
requestAppMetricaDeviceID(
listener: (deviceId?: String, reason?: AppMetricaDeviceIdReason) => void
) {
AppMetrica.requestAppMetricaDeviceID(listener);
},
resumeSession() {
AppMetrica.resumeSession();
},
sendEventsBuffer() {
AppMetrica.sendEventsBuffer();
},
setLocation(location: ?Location) {
AppMetrica.setLocation(location);
},
setLocationTracking(enabled: boolean) {
AppMetrica.setLocationTracking(enabled);
},
setStatisticsSending(enabled: boolean) {
AppMetrica.setStatisticsSending(enabled);
},
setUserProfileID(userProfileID?: string) {
AppMetrica.setUserProfileID(userProfileID);
},
};