---
metadata:
  - name: generator
    content: Diplodoc Platform v5.64.0
alternate:
  - https://boost.yandex.com/doc/en/analytics/content/sdk/unity/push/migration-io-2-0-0.md
  - https://boost.yandex.com/doc/ru/analytics/content/sdk/unity/push/migration-io-2-0-0.md
  - https://boost.yandex.com/doc/zh/analytics/content/sdk/unity/push/migration-io-2-0-0.md
  - href: https://boost.yandex.com/doc/zh/analytics/content/sdk/unity/push/migration-io-2-0-0.md
    type: text/markdown
    title: Markdown version
  - href: https://boost.yandex.com/doc/zh/llms.txt?revision=r21876058
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://boost.yandex.com/doc/zh/llms.txt?revision=r21876058

# 迁移到版本 2.0.0

## 同时运行两个版本的AppMetrica Push SDK {#two-versions}

在一个应用中可以同时运行两个版本的AppMetrica Push SDK。

{% note alert %}

我们不建议在同一个应用中使用多个AppMetrica Push SDK 版本，因为这可能会导致报告出现异常。 换句话说，在使用旧版本的`AppMetricaPush`预制体时，不应该激活`AppMetricaPush`. 虽然这不会导致应用程序崩溃或失败，但会扭曲和破坏统计数据。 在迁移到新插件版本时，请确保不存在 `Assets/AppMetricaPush` 目录。 新的插件版本通过 UPM 提供，并保存到 `Library/PackageCache/io.appmetrica.analytics.push@hash`。

{% endnote %}

## 迁移指南 {#about-migration}

本指南包含示例，展示插件版本 `1.1.0` 和 `2.0.0` 之间的差异。 该部分仅涵盖不具备向后兼容性的方法。

要迁移到新版本，请执行以下步骤：

1. 删除之前的插件版本。
2. 使用 UPM 添加新插件版本。 要了解更多信息，请查看[启用插件的部分](#integration)。
3. 将预制体替换为通过 [RuntimeInitializeOnLoadMethodAttribute](https://docs.unity3d.com/ScriptReference/RuntimeInitializeOnLoadMethodAttribute.html) 进行激活。 要了解更多信息，请查看[替换预制体的部分](#init-change)。
4. 在项目代码中，替换已重命名或仅更改包的类和方法。 要了解更多信息，请查看[重命名部分](#rename)。

### 启用 AppMetrica Push Unity 插件 2.0.0 {#integration}

插件通过[Unity Package Manager](https://docs.unity3d.com/Manual/Packages.html)启用。

将以下依赖项添加到 [Packages/manifest.json](https://docs.unity3d.com/Manual/upm-manifestPrj.html)：

```json translate=no
{
  "dependencies": {
      "io.appmetrica.analytics.push": "https://github.com/appmetrica/push-unity-plugin.git#v2.0.0"
  }
}
```

### 替换预制件 {#init-change}

1. 创建一个静态方法，添加 `[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]` 属性，然后使用 `AppMetricaPush.Activate()` 方法激活 AppMetricaPush。

   > **示例：**
   >
   > ```csharp translate=no
   > using Io.AppMetrica;
   > using Io.AppMetrica.Push;
   > using UnityEngine;
   >
   > public static class AppMetricaActivator {
   >     [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
   >     private static void Activate() {
   >         AppMetrica.Activate(new AppMetricaConfig("APIKey"));
   >         AppMetricaPush.Activate();
   >     }
   > }
   > ```

   {% note info %}

   必须在调用 `AppMetricaPush.Activate()` 之前严格调用 `AppMetrica.Activate()`.

   {% endnote %}

2. 从你的场景中移除 `AppMetricaPush` 预制体。

## 重命名 API {#rename}

{% note info %}

要使用 AppMetricaPush，请使用 `AppMetricaPush` 类中的静态方法。 为了做这一步，请将 `AppMetricaPush.Instance` 替换为 `AppMetricaPush`，并导入 `Io.AppMetricaPush`.

{% endnote %}

* 删除了 `IYandexAppMetricaPush` 接口，并将其方法转移到 `AppMetricaPush` 类。
    * 将 `Initialize` 方法重命名为 `Activate`.
