使用示例

使用扩展配置初始化库

要使用扩展的启动配置初始化库,请创建一个AppMetricaConfig实例,使用
适当的设置,并通过AppMetrica.activate(config: AppMetricaConfig)方法激活库。 例如,您
可以使用扩展配置来启用/禁用日志记录、设置会话超时时间、传递
参数以跟踪预安装的应用,以及更多功能。

扩展配置设置在库初始化时立即生效。

import AppMetrica, {AppMetricaConfig} from '@appmetrica/react-native-analytics';
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  firstActivationAsUpdate: false,
  logs: true,
  sessionTimeout: 20,
}
AppMetrica.activate(config);

在应用程序运行时配置库,请使用AppMetrica类的方法。

向额外的 API 密钥发送统计数据

将数据发送到额外的 API 密钥可以让您为这些 API 密钥收集自己的统计数据。 你可以用这来控制其他用户对信息的访问权限。 例如,为了给分析师提供统计数据的访问权限,可以为额外的 API 密钥复制发送营销数据。 这样他们只会有访问所需信息的权限。

要将数据发送到额外的 API 密钥,必须使用报告器。 使用报告器,您可以发送事件、错误消息、个人资料信息和应用内购买数据。 报告员可以在不初始化AppMetrica SDK的情况下工作。

步骤 1. (可选) 使用高级配置初始化报告器

要设置具有扩展配置的报告器,请创建一个ReporterConfig对象,设置您需要的参数,然后通过调用AppMetrica.activateReporter(config: ReporterConfig)来激活报告器。 此配置用于具有指定 API 密钥的报告员。 您可以为每个额外的 API 密钥设置自己的配置。

在第一次调用报告器之前,应先初始化具有扩展配置的报告器。 否则,报告器将在没有配置的情况下初始化。

// Creating extended configuration of the reporter.
// To create it, pass a ANOTHER_API_KEY that is different from the app's API_KEY.
const reporterConfig: ReporterConfig = {
  apiKey: API_KEY,
  logs: true,
  sessionTimeout: 20,
}
AppMetrica.activateReporter(reporterConfig);

步骤 2. 配置使用报告器发送数据

要通过报告器发送数据,检索一个实现 IReporter 接口的对象,方法是调用 AppMetrica.getReporter(apiKey: string),然后使用该接口的方法提交您的报告。 如果报告器没有用扩展配置进行初始化,调用此方法将会为指定的API密钥初始化报告器。

事件发送示例:

AppMetrica.getReporter(ANOTHER_API_KEY).reportEvent("Updates installed");

为了正确追踪,请手动配置报告器,为每个报告器发送会话开始和暂停的事件。 要做到这一点,请使用 resumeSession() 和 pauseSession() 方法,它们属于 IReporter 接口:

// When app goes to foreground
AppMetrica.getReporter(ANOTHER_API_KEY).resumeSession();
// When app goes to background
AppMetrica.getReporter(ANOTHER_API_KEY).pauseSession();

使用库发送设备位置

备注

默认情况下,Android 设备位置发送已禁用。

要启用发送位置数据,请使用已启用发送设备
位置数据的配置初始化库。 为此,请将 locationTracking 属性设置为 true,然后创建扩展库
configuration。

import AppMetrica, {AppMetricaConfig} from '@appmetrica/react-native-analytics';
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  locationTracking: true,
}
AppMetrica.activate(config);

要在应用运行时启用发送位置数据,请使用
AppMetrica.setLocationTracking(enabled: boolean) 方法:

AppMetrica.setLocationTracking(true);

为了获得更精确的位置信息,请在 AndroidManifest.xml 文件中添加以下权限之一:

手动设置位置

在发送设备位置的自定义信息之前,请确保已启用报告功能。

库会自行确定设备位置。 要发送自定义设备位置
数据,请将Location传递给AppMetrica.setLocation(location?: Location)方法。

import AppMetrica from '@appmetrica/react-native-analytics';
// Determining the location.
const currentLocation: Location = {
  ...
}
// Setting up custom device location data.
AppMetrica.setLocation(currentLocation);

要使用扩展配置发送自定义设备位置数据,在创建扩展库配置时,将 Location 实例传递给 location?: Location 属性。

import AppMetrica, {AppMetricaConfig, Location} from '@appmetrica/react-native-analytics';
// Determining the location.
const currentLocation: Location = {
  ...
}
// Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  // Set up a custom device location.
  location: currentLocation,
}
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

要在应用运行时发送自定义设备位置数据,请使用
AppMetrica.setLocation(location?: Location) 方法。

AppMetrica.setLocation(currentLocation);

发送自定义事件

要发送没有嵌套参数的自定义事件,请将事件的短名称或描述传递给 AppMetrica.reportEvent(eventName: string, attributes?: Record<string, any>)
方法:

AppMetrica.reportEvent("Updates installed");

发送自定义事件,包含嵌套参数

使用 AppMetrica SDK,您可以发送自定义事件,事件包含嵌套参数
,格式为 JSON。 对于此,使用AppMetrica.reportEvent(eventName: string, attributes?: Record<string, any>) 方法:

AppMetrica.reportEvent('My event', {foo: 'bar'});

网页界面AppMetrica显示事件最多五级嵌套。 因此,如果事件有六级或以上,只会在
报告中显示前五级。 您可以使用报告 API导出最多十
个级别。

要了解更多关于事件的信息,请查看事件。

发送自定义错误消息

要发送自定义错误消息,请使用该
AppMetrica.reportError(identifier: string, message: string) 方法。

try {
...
} catch (e: Error) {
  AppMetrica.reportError('my error', e.message);
}

错误按 ID 分组。 不要使用变量值作为分组 ID。
否则,组的数量会增加,分析起来就会困难。

从缓冲区发送事件

AppMetrica SDK 不会在事件发生后立即发送事件。 库存将事件数据保存在缓冲区中。 The sendEventsBuffer 方法从缓冲区发送数据并清空缓冲区。 使用该方法在用户场景的重要检查点之后强制发送已存储的事件。

AppMetrica.sendEventsBuffer();

如果您经常使用此方法,可能会导致互联网流量和电力消耗增加。

手动监控应用生命周期

AppMetrica 会自动跟踪会话边界。 您可以通过在扩展库配置中将 false 传递给 sessionsAutoTrackingEnabled 属性来关闭自动会话跟踪。

AppMetrica.activate({
  apiKey: API_KEY,
  sessionsAutoTracking: false
});

要手动监控应用生命周期,请使用以下方法:

  • 暂停会话:

    AppMetrica.pauseSession();
    
  • 恢复会话或开始新会话:

    AppMetrica.resumeSession();
    

Sending ProfileId

如果在初始化 AppMetrica SDK 之前已知用户资料 ID,请在初始化前传入 (setUserProfileID):

AppMetrica.setUserProfileID('your-id');
AppMetrica.activate({apiKey: 'API_KEY'});

或在初始化时使用扩展配置 (userProfileID):

AppMetrica.activate({
    apiKey: 'API_KEY',
    userProfileID: 'your-id',
});

否则,使用 ID appmetrica_device_id 创建用户配置文件。

AppMetrica 在网页界面中不会显示 预定义属性,如果未配置 ProfieId 的发送。

您可以在任何时间通过调用 ProfileId 来更新 setUserProfileID:

AppMetrica.setUserProfileID('your-id');

发送配置文件属性

要发送用户属性,请将必要的属性传递给 UserProfile 类的实例,然后使用 AppMetrica.reportUserProfile(userProfile: UserProfile) 方法发送该实例。 要创建个人属性,请使用Attributes类的方法。

import AppMetrica, {Attributes, UserProfile} from '@appmetrica/react-native-analytics';
// Creating the UserProfile instance.
const userProfile = new UserProfile()
  // Updating predefined attributes.
  .apply(Attributes.userName().withValue('John'))
  .apply(Attributes.gender().withValue('male'))
  .apply(Attributes.birthDate().withAge(24))
  .apply(Attributes.notificationsEnabled().withValue(false))
  // Updating custom attributes.
  .apply(Attributes.customString('string_attribute').withValue('string'))
  .apply(Attributes.customNumber('number_attribute').withValue(55.0))
  .apply(Attributes.customCounter('counter_attribute').withDelta(1.0))
  .apply(Attributes.customBoolean('boolean_attribute').withValue(true));

// Setting the ProfileID using the method of the AppMetrica class.
AppMetrica.setUserProfileID('your-id');

// Sending the UserProfile instance.
AppMetrica.reportUserProfile(userProfile);

发送电子商务事件

对于不同的用户操作,存在相应的电商事件类型。 要创建特定的事件类型,
使用适当的ECommerce类方法。

下面的示例展示了如何发送特定类型的事件:

打开页面
import AppMetrica, {
  ECommerce,
  ECommerceScreen,
} from '@appmetrica/react-native-analytics';
const payload: Record<string, string> = {
  configuration: 'landscape',
  full_screen: 'true',
};
// Creating a screen object.
const screen: ECommerceScreen = {
  name: 'ProductCardActivity',               // Optional.
  searchQuery: 'danissimo maple syrup',  // Optional.
  payload: payload,                          // Optional.
  categoriesPath: ['Promos', 'Hot deal'], // Optional.
};
const showScreen = ECommerce.showScreenEvent(screen);
// Sending an e-commerce event.
AppMetrica.reportECommerce(showScreen);
查看产品卡片
import AppMetrica, {
  ECommerce,
  ECommerceAmount,
  ECommercePrice,
  ECommerceProduct,
  ECommerceScreen,
} from '@appmetrica/react-native-analytics';
const payload: Record<string, string> = {
  configuration: 'landscape',
  full_screen: 'true',
};
// Creating a screen object.
const screen: ECommerceScreen = {
  name: 'ProductCardActivity',               // Optional.
  searchQuery: 'danissimo maple syrup',  // Optional.
  payload: payload,                          // Optional.
  categoriesPath: ['Promos', 'Hot deal'], // Optional.
};
const amount: ECommerceAmount = {
  amount: 4.53,
  unit: 'USD',
};
// Creating an actualPrice object.
const actualPrice: ECommercePrice = {
  amount: amount,
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating an originalPrice object.
const originalPrice: ECommercePrice = {
  amount: {amount: 5.78, unit: 'USD'},
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating a product object.
const product: ECommerceProduct = {
  sku: '779213',
  name: 'Danissimo Сurd Dessert 5.9%, 130 g',  // Optional.
  actualPrice: actualPrice, // Optional.
  originalPrice: originalPrice, // Optional.
  promocodes: ['BT79IYX', 'UT5412EP'],  // Optional.
  payload: payload,    // Optional.
  categoriesPath: ['Groceries', 'Dairy', 'Yogurts']  // Optional.
};
// Sending an E-commerce event.
AppMetrica.reportECommerce(ECommerce.showProductCardEvent(product, screen));
查看产品页面
import AppMetrica, {
  ECommerce,
  ECommerceAmount,
  ECommercePrice,
  ECommerceProduct,
  ECommerceReferrer,
  ECommerceScreen,
} from '@appmetrica/react-native-analytics';
const payload: Record<string, string> = {
  configuration: 'landscape',
  full_screen: 'true',
};
// Creating a screen object.
const screen: ECommerceScreen = {
  name: 'ProductCardActivity',               // Optional.
  searchQuery: 'danissimo maple syrup',  // Optional.
  payload: payload,                          // Optional.
  categoriesPath: ['Promos', 'Hot deal'], // Optional.
};

const amount: ECommerceAmount = {
  amount: 4.53,
  unit: 'USD',
};
// Creating an actualPrice object.
const actualPrice: ECommercePrice = {
  amount: amount,
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating an originalPrice object.
const originalPrice: ECommercePrice = {
  amount: {amount: 5.78, unit: 'USD'},
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating a product object.
const product: ECommerceProduct = {
  sku: '779213',
  name: 'Danissimo Сurd Dessert 5.9%, 130 g',  // Optional.
  actualPrice: actualPrice, // Optional.
  originalPrice: originalPrice, // Optional.
  promocodes: ['BT79IYX', 'UT5412EP'],  // Optional.
  payload: payload,    // Optional.
  categoriesPath: ['Groceries', 'Dairy', 'Yogurts']  // Optional.
};

const referrer: ECommerceReferrer = {
  type: 'button',
  identifier: '76890',
  screen: screen,
};

const showProductDetails = ECommerce.showProductDetailsEvent(product, referrer);
// Sending an E-commerce event.
AppMetrica.reportECommerce(showProductDetails);
将物品添加到购物车/从购物车中移除
import AppMetrica, {
  ECommerce,
  ECommerceAmount,
  ECommerceCartItem,
  ECommerceOrder,
  ECommercePrice,
  ECommerceProduct,
  ECommerceReferrer,
  ECommerceScreen,
} from '@appmetrica/react-native-analytics';
const payload: Record<string, string> = {
  configuration: 'landscape',
  full_screen: 'true',
};
// Creating a screen object.
const screen: ECommerceScreen = {
  name: 'ProductCardActivity',               // Optional.
  searchQuery: 'danissimo maple syrup',  // Optional.
  payload: payload,                          // Optional.
  categoriesPath: ['Promos', 'Hot deal'], // Optional.
};

const amount: ECommerceAmount = {
  amount: 4.53,
  unit: 'USD',
};
// Creating an actualPrice object.
const actualPrice: ECommercePrice = {
  amount: amount,
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating an originalPrice object.
const originalPrice: ECommercePrice = {
  amount: {amount: 5.78, unit: 'USD'},
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating a product object.
const product: ECommerceProduct = {
  sku: '779213',
  name: 'Danissimo Сurd Dessert 5.9%, 130 g',  // Optional.
  actualPrice: actualPrice, // Optional.
  originalPrice: originalPrice, // Optional.
  promocodes: ['BT79IYX', 'UT5412EP'],  // Optional.
  payload: payload,    // Optional.
  categoriesPath: ['Groceries', 'Dairy', 'Yogurts']  // Optional.
};
// Creating a referrer object.
const referrer: ECommerceReferrer = {
  type: 'button', // Optional.
  identifier: '76890', // Optional.
  screen: screen, // Optional.
};
// Creating a cartItem object.
const ecommerceCartItem: ECommerceCartItem = {
  product: product,
  price: actualPrice,
  quantity: 1.0,
  referrer: referrer, // Optional.
};

const addCartItem = ECommerce.addCartItemEvent(ecommerceCartItem);
// Sending an E-commerce event.
AppMetrica.reportECommerce(addCartItem);

const removeCartItem = ECommerce.removeCartItemEvent(ecommerceCartItem);
// Sending an E-commerce event.
AppMetrica.reportECommerce(removeCartItem);
开始并完成购买
import AppMetrica, {
  ECommerce,
  ECommerceAmount,
  ECommerceCartItem,
  ECommerceOrder,
  ECommercePrice,
  ECommerceProduct,
  ECommerceReferrer,
  ECommerceScreen,
} from '@appmetrica/react-native-analytics';
const payload: Record<string, string> = {
  configuration: 'landscape',
  full_screen: 'true',
};
// Creating a screen object.
const screen: ECommerceScreen = {
  name: 'ProductCardActivity',               // Optional.
  searchQuery: 'danissimo maple syrup',  // Optional.
  payload: payload,                          // Optional.
  categoriesPath: ['Promos', 'Hot deal'], // Optional.
};

const amount: ECommerceAmount = {
  amount: 4.53,
  unit: 'USD',
};
// Creating an actualPrice object.
const actualPrice: ECommercePrice = {
  amount: amount,
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating an originalPrice object.
const originalPrice: ECommercePrice = {
  amount: {amount: 5.78, unit: 'USD'},
  internalComponents: [  // Optional.
    {
      amount: 30570000,
      unit: 'wood',
    },
    {
      amount: 26.89,
      unit: 'iron',
    },
    {
      amount: 5.1,
      unit: 'gold',
    },
  ],
};
// Creating a product object.
const product: ECommerceProduct = {
  sku: '779213',
  name: 'Danissimo Сurd Dessert 5.9%, 130 g',  // Optional.
  actualPrice: actualPrice, // Optional.
  originalPrice: originalPrice, // Optional.
  promocodes: ['BT79IYX', 'UT5412EP'],  // Optional.
  payload: payload,    // Optional.
  categoriesPath: ['Groceries', 'Dairy', 'Yogurts']  // Optional.
};
// Creating a referrer object.
const referrer: ECommerceReferrer = {
  type: 'button', // Optional.
  identifier: '76890', // Optional.
  screen: screen, // Optional.
};
// Creating a cartItem object.
const ecommerceCartItem: ECommerceCartItem = {
  product: product,
  price: actualPrice,
  quantity: 1.0,
  referrer: referrer, // Optional.
};

const order: ECommerceOrder = {
  orderId: '88528768',
  products: [ecommerceCartItem],
  payload: undefined,
};

const beginCheckout = ECommerce.beginCheckoutEvent(order);
// Sending an E-commerce event.
AppMetrica.reportECommerce(beginCheckout);

const purchase = ECommerce.purchaseEvent(order);
// Sending an E-commerce event.
AppMetrica.reportECommerce(purchase);

发送收入事件

带验证

AppMetrica 支持通过 Google Play Billing 和 StoreKit 库进行应用内购买验证。

为了验证购买,请配置发送 收据 实例以及 收入:

  • 在 Android 上,使用 Receipt 将 originalJson 发送到 receiptData,并将 signature 发送到 signature 属性。

  • 在 iOS 上,在实现交易完成时配置发送 transactionID 和 receiptData 字段:

import AppMetrica, {Revenue} from '@appmetrica/react-native-analytics';
const revenue: Revenue = {
  price: 500,
  currency: 'USD',
  productID: '12345',
  quantity: 1,
  payload: JSON.stringify({test: 'test'}),
  receipt: {
    receiptData: purcahse.getOriginalJson(),
    signature: purcahse.getSignature(),
  },
};
AppMetrica.reportRevenue(revenue);
不带验证
import AppMetrica, {Revenue} from '@appmetrica/react-native-analytics';
const revenue: Revenue = {
  price: 500,
  currency: 'USD',
  productID: '12345',
  quantity: 1,
  payload: JSON.stringify({test: 'test'}),
};
AppMetrica.reportRevenue(revenue);

发送广告收入事件

import AppMetrica, {
  AdRevenue,
  AdType
} from '@appmetrica/react-native-analytics';

创建一个AdRevenue实例:

const adRevenue: AdRevenue = {
  price: 0.1,
  currency: 'USD',
  payload: {payload_key_1: 'payload_value_1'},
  adNetwork: 'ad_network',
  adPlacementID: 'ad_placement_id',
  adPlacementName: 'ad_placement_name',
  adType: AdType.NATIVE,
  adUnitID: 'ad_unit_id',
  adUnitName: 'ad_unit_name',
  precision: 'some precision',
};

发送 AdRevenue 实例,使用 AppMetrica.reportAdRevenue(adRevenue: AdRevenue) 方法:

AppMetrica.reportAdRevenue(adRevenue);

设置会话超时时长

默认情况下,会话超时时间为10秒。 这是
sessionTimeout属性允许的最小值。

要更改超时时长,请将以秒为单位的值传递给 sessionTimeout 方法,在创建扩展
library 配置时。

// Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  // Setting session timeout.
  sessionTimeout: 15,
};
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

设置应用版本

要以编程方式指定应用版本,请将应用版本传递给 appVersion 属性,在
创建扩展库配置时。

  // Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  // Setting the app version.
  appVersion: '1.0',
};
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

其中 1.0 是应用版本。

确定库的API级别(Android)

要从应用程序代码确定库的 API 级别,请使用 AppMetrica.getLibraryApiLevel() 方法。

const [libraryApiLevel, setLibraryApiLevel] = useState('???');
AppMetrica.getLibraryApiLevel().then(level => {
  setLibraryApiLevel(level);
});

确定库的版本

要从应用程序代码中确定库版本,请使用 AppMetrica.getLibraryVersion() 方法:

const [appMetricaVersion, setAppMetricaVersion] = useState('???');
AppMetrica.getLibraryVersion().then(version => {
  setAppMetricaVersion(version);
});

Deeplink 打开次数默认被跟踪。 您可以通过使用扩展配置来禁用此功能:

  // Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  appOpenTrackingEnabled: false,
};
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

如有需要,您可以手动使用
reportAppOpen()方法:

AppMetrica.reportAppOpen(deeplink);

要了解更多信息,请参见如何在 AppMetrica 中创建再营销活动?

要获取延迟深链,请将实现 DeferredDeeplinkListener 接口的对象传递给 AppMetrica.requestDeferredDeeplink(listener: DeferredDeeplinkListener). 该方法仅在应用首次启动并获取 Google Play Install Referrer 后返回延迟深链。

const deferredDeeplinkListener: DeferredDeeplinkListener = {
  onSuccess: (deeplink: string) => {
    console.log('Deferred deeplink:', deeplink);
  },
  onFailure: (error: DeferredDeeplinkError, referrer?: string) => {
    console.log(`Deferred deeplink error: ${error}, referrer: ${referrer}`);
  },
};
AppMetrica.requestDeferredDeeplink(deferredDeeplinkListener);

关于延迟深链的更多信息,请参见延迟深链支持

要获取延迟深链参数,请将实现 DeferredDeeplinkParametersListener 接口的对象传递给 AppMetrica.requestDeferredDeeplinkParameters(listener: DeferredDeeplinkParametersListener). 该方法仅在从 Google Play 获取安装来源(Install Referrer)后的第一次应用启动时返回延迟深链参数。

const deferredDeeplinkParametersListener: DeferredDeeplinkParametersListener = {
  onSuccess: (parameters: Record<string, string>) => {
    console.log('Deferred deeplink parameters:', parameters); // or JSON.stringify(parameters)
  },
  onFailure: (error: DeferredDeeplinkError, referrer?: string) => {
    console.log(`Deferred deeplink parameters error: ${error}, referrer: ${referrer}`);
  },
};
AppMetrica.requestDeferredDeeplinkParameters(deferredDeeplinkParametersListener);

关于延迟深链的更多信息,请参见延迟深链支持

跟踪新用户

默认情况下,当用户第一次打开应用时,会被视为新用户。 如果 AppMetrica SDK
连接到已有活跃用户的应用,要获取有效的统计数据,您可以设置
跟踪新旧用户。 要做到这一点,请初始化AppMetrica SDK,使用扩展的
启动配置,AppMetricaConfig:

const isFirstLaunch: Boolean = false;
// Implement logic to detect whether the app is opening for the first time.
// For example, you can check for files (settings, databases, and so on),
// which the app creates on its first launch.
if (conditions) {
  isFirstLaunch = true;
}
// Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  firstActivationAsUpdate: !isFirstLaunch,
};
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

禁用和启用发送统计数据

如果需要在发送统计数据前获取用户同意,请将库初始化时禁用
统计数据发送选项。 要做到这一点,传递 false 给 statisticsSending 属性,在创建
扩展库配置。

// Creating an extended library configuration.
const config: AppMetricaConfig = {
  apiKey: API_KEY,
  // Disabling sending data.
  statisticsSending: false,
};
// Initializing the AppMetrica SDK.
AppMetrica.activate(config);

在用户同意发送统计数据后(例如通过应用设置或在
首次应用启动期间授予权限),使用 AppMetrica.setDataSendingEnabled(true) 方法来启用统计数据发送:

// Checking the status of the boolean variable. It shows the user confirmation.
if (flag) {
  // Enabling sending data.
  AppMetrica.setDataSendingEnabled(true);
}

警告示例

您可以使用任何文本来告知用户统计数据的收集。 例如:

此应用使用由 YANDEX LLC 提供的 AppMetrica 分析服务,
列夫·托尔斯泰街16号,莫斯科,俄罗斯119021(以下称为“Yandex”),根据使用条款。

AppMetrica 分析应用使用数据,包括应用运行设备的信息,
安装源、转换和您活动的统计数据,用于产品分析,
广告活动优化和故障排除。 通过这种方式收集的数据不能
用于识别您。

AppMetrica 工具收集的关于您使用此应用的脱敏信息
将被转移到 Yandex 并存储在位于欧盟和俄罗斯联邦的 Yandex 服务器上。 Yandex 将处理此内容
提供您应用使用统计信息,为我们生成应用性能报告,
并提供其他服务。

Getting AppMetrica SDK IDs

To get AppMetrica SDK IDs (DeviceId, DeviceIdHash, UUID), use the
requestStartupParams() method. To get the appmetrica_device_id, make sure to request the DeviceIdHash.

import AppMetrica, {
  DEVICE_ID_HASH_KEY,
  DEVICE_ID_KEY,
  UUID_KEY,
  StartupParams,
  StartupParamsCallback,
  StartupParamsReason,
} from '@appmetrica/react-native-analytics';
const paramsList: Array<string> = [
  DEVICE_ID_HASH_KEY,
  DEVICE_ID_KEY,
  UUID_KEY,
];
const paramsCallback: StartupParamsCallback = (params?: StartupParams, reason?: StartupParamsReason) => {
  // ...
};

AppMetrica.requestStartupParams(paramsCallback, paramsList);

如果您没有找到所需答案,可以通过反馈表单提交您的问题。 请尽可能详细地描述问题。 如果可能,请附上截图。

联系支持 为文档提出改进建议
上一篇