• Developer Guide
  • SDK Integration

Unity SDK

SDK安装

Airbridge Unity SDK所需Unity版本为2018.4版本或以上。

Attention

Airbridge Unity SDK使用unity-jar-resolver(External Dependency Manager for Unity)来管理库的依赖性。
如果您使用的是1.9.3以下版本的Airbridge Unity SDK,请提前通过以下页面完成相应的Unity包设置。

对于Airbridge Unity SDK 1.9.3及以后的版本,Airbridge Plugin和EDM4U资产都会自动导入,因此您不需要单独设置Unity包。

Unity包安装

  1. 下载最新版本的 Airbridge Unity SDK

  2. 通过点击 Unity 菜单栏中的 Assets> Import Package> Custom Package ...来添加包。

  3. 包安装完成后可以在Unity菜单栏里看到 AB180选项卡。

Project设置

通过点击 Unity菜单栏中的 AB180 > Airbridge Settings 可以查看如下设置界面。

Attention

当完成输入后,请务必点击Update iOS App Setting 或Update Android Manifest来储存设置内容。

Attention

如需手动合并Android Manifest文件,请参照Project > Plugins > Airbridge > Android > AndroidManifest.xml 文件。

应用信息设置

请在 Unity 菜单栏中的 AB180 > Airbridge Settings 界面的 App Name 和 App Token 输入框中输入 Dashboard 中设置的应用名称(Unique ID)和应用 SDK 令牌信息。
应用名称(Unique ID)和应用 SDK 令牌可以在 Airbridge Dashboard > Settings > Tokens选项卡中查看。

初始化

一般情况下,Airbridge Unity SDK无需另外进行初始化操作,但在特殊情况下,可能需要针对每个平台进行迁移操作。

查看SDK是否安装成功

设置完成并安装应用程序后,可以在 Airbridge Dashboard > Raw Data > App Real-time Log选项卡中查看该应用程序的事件数据。

Attention

Real-time Log数据最长可能有 5 分钟的延迟。

Deep Link设置

Dashboard设置

iOS 和 Android 平台的Deep Link Dashboard设置如下。

Project设置

iOS Deep Link设置

请在 Unity 菜单栏中的 AB180 > Airbridge Settings 界面的iOS URI Scheme输入框中输入在Dashboard界面里设置的iOS URI Scheme信息。
该信息可以在 Airbridge Dashboard > Tracking Link > Deep Link选项卡里查看。

Android Deep Link设置

请在 Unity 菜单栏中的 AB180 > Airbridge Settings 界面的Android URI Scheme输入框中输入在Dashboard界面里设置的Android URI Scheme信息。
该信息可以在 Airbridge Dashboard > Tracking Link > Deep Link选项卡里查看。

自定义域名设置

在 Airbridge Dashboard中创建监测链接时,您可以使用 deeplink.page 或 abr.ge 形式的监测链接,也可以为提高 Tracking Link 的品牌效果和点击率,使用自定义 URL,如 go.my_company.com/abcd

  1. 请按照 该指南 设置要使用的自定义域名。

  2. 在Unity菜单栏 AB180> Airbridge Settings界面的 Custom Domain输入框中输入之前设置的自定义域名地址。

Deep Link回调设置

为接收用户点击的Deep Link数据,请按如下方式注册对象名收取Message。

1234
private void Awake()
{
    AirbridgeUnity.SetDeeplinkCallback("AirbridgeManager");
}

当按上述方法注册完回调后,该类便可以通过如下函数获取Deep Link URL。

1234567891011121314
using UnityEngine;

public class AirbridgeManager : MonoBehaviour
{ 
  private void Awake() {
    Airbridge.SetDeeplinkCallback("AirbridgeManager");
  }
  
  // Method will call by Airbridge when deeplink detected
  private void OnTrackingLinkResponse(string url)
  {

  }
}

在内部,Airbridge Unity使用Unity提供的UnitySendMessage函数传递Deep Link信息。

Deep Link设置验证

完成Airbridge Unity SDK的DeepLink设置后,可以通过以下链接验证是否能正确跳转到相应的移动应用页面。

  • YOUR_APP_URI_SCHEME://

Deep Link设置确认无误时,您可以在 Airbridge Dashboard → Raw Data → App Real-time Log选项卡中看到如下信息。

用户设置

用户标识符及设置

Airbridge 收集以下用户标识符信息,以衡量Web和App之间碎片化的用户贡献度。

  • User Email : 用户的电子邮件地址

  • User Phone : 用户的电话号码

  • User ID : 用户的专属ID(可识别用户并且在web端和app端一一对应的ID。)

  • User Alias : 可以代表用户的其他 ID (例如,忠诚计划专用ID, 集团子公司统一ID)

输入的用户电子邮件地址和电话号码会被自动散列处理 (SHA256) 后发送到服务器。

在Airbridge Unity SDK中,您可以通过以下方式设置用户标识符信息。

1234567
Dictionary<string, string> alias = new Dictionary<string, string>();
AirbridgeUser user = new AirbridgeUser();
user.SetId("personID");
user.SetEmail("persondoe@airbridge.io");
user.SetPhoneNumber("1(123)123-1234");
user.SetAlias("key", "value");
AirbridgeUnity.SetUser(user);
  • 可设置的User Alias 最大数量为 10。

  • User Alias的key是String类型,长度最长为128个字符。

  • User Alias的key必须匹配正则表达式: ^[a-z_][a-z0-9_]*$。

  • User Alias的value是String类型,长度最长为1024个字符。

一旦设置了用户的标识符,相应的标识符信息将包含在所有事件数据中并被传递。

用户属性设置

您可以为提高 MTA(多触点归因)分析的准确性、内部数据分析以及与第 3 方解决方案的集成等目的设置额外的用户属性数据。

1234
Dictionary<string, object> attrs = new Dictionary<string, object>();
AirbridgeUser user = new AirbridgeUser();
user.SetAttributes("key", "value");
AirbridgeUnity.SetUser(user);
  • 可设置的User Attribute 最大数量为 100。

  • User Attribute的key是String类型,长度最长为128个字符。

  • User Attribute的key必须匹配正则表达式: ^[a-z_][a-z0-9_]*$。

  • User Attribute的value数据类型可以为Integer、Float、Long、Boolean 类型或String 类型,如果是String,则长度最长为1024 个字符。

查看用户属性设置是否正确

Airbridge Unity SDK 中设置的用户信息可以在Airbridge Dashboard > Raw Data > App Real-time Log 选项卡中查看,如下所示。

设备设置

设备标识符设置

您可以在SDK中设置设备标识符信息来使之后收集到的所有事件数据都包含设备标识符信息。 设置设备标识符后,无论应用程序是否关闭,它都会持续存在,除非您将其删除。

123
AirbridgeUnity.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
AirbridgeUnity.RemoveDeviceAlias("DELETE_THIS_KEY");
AirbridgeUnity.ClearDeviceAlias();

方法

说明

SetDeviceAlias(string key, string value)

将键值对添加到设备标识符。

RemoveDeviceAlias(string key)

删除与传递的key对应的设备标识符信息。 如果没有相应的标识符信息,则不执行任何操作。

ClearDeviceAlias()

删除所有设备标识符信息。

事件设置

Airbridge Unity SDK调用的所有事件都可以包含如下6个属性值进行传输。

  • Event Category : 事件名称 必填 (String)

  • Event Action : 事件属性值 1 (String)

  • Event Label : 事件属性值 2 (String)

  • Event Value : 事件属性值 3 (Double)

  • Event Custom Attributes : 事件自定义数据 (Map<String, Object>)

  • Event Semantic Attributes : 事件的语义数据 (Semantic Attributes Class)

用户事件传输

为方便起见,Airbridge Unity SDK 提供以下 3 种用户事件。

用户注册 (Sign up)

12345678910
Dictionary<string, string> alias = new Dictionary<string, string>();
AirbridgeUser user = new AirbridgeUser();
user.SetId(UserId);
user.SetEmail(Email);
user.SetPhoneNumber(Phone);
user.SetAlias(alias);
AirbridgeUnity.SetUser(user);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.SIGN_UP);
AirbridgeUnity.TrackEvent(@event);

登录 (Sign in)

12345678910
Dictionary<string, string> alias = new Dictionary<string, string>();
AirbridgeUser user = new AirbridgeUser();
user.SetId(UserId);
user.SetEmail(Email);
user.SetPhoneNumber(Phone);
user.SetAlias(alias);
AirbridgeUnity.SetUser(user);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.SIGN_IN);
AirbridgeUnity.TrackEvent(@event);

退出 (Sign out)

123
AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.SIGN_OUT);
AirbridgeUnity.TrackEvent(@event);
AirbridgeUnity.ExpireUser();

电子商务事件传输

为方便起见,Airbridge Unity SDK 提供如下产品类和电子商务事件。

1234567
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);

主页 (Home Screen)

12
AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.VIEW_HOME);
AirbridgeUnity.TrackEvent(@event);

查看搜索结果 (Search Results)

123456789101112131415161718192021222324
List<Airbridge.Ecommerce.Product> beverages = new List<Airbridge.Ecommerce.Product>();
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);
beverages.Add(cocacola);

Airbridge.Ecommerce.Product fanta = new Airbridge.Ecommerce.Product();
fanta.SetId("beverage_2");
fanta.SetName("Fanta");
fanta.SetPrice(10.99);
fanta.SetCurrency("USD");
fanta.SetQuantity(1);
fanta.SetPosition(1);
beverages.Add(fanta);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.VIEW_SEARCH_RESULT);
@event.SetQuery("SELECT * FROM beverages");
@event.SetProducts(beverages.ToArray());
@event.SetValue(12.24);
AirbridgeUnity.TrackEvent(@event);

查看产品列表 (Product List)

123456789101112131415161718192021222324
List<Airbridge.Ecommerce.Product> beverages = new List<Airbridge.Ecommerce.Product>();
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);
beverages.Add(cocacola);

Airbridge.Ecommerce.Product fanta = new Airbridge.Ecommerce.Product();
fanta.SetId("beverage_3");
fanta.SetName("Fanta");
fanta.SetPrice(10.99);
fanta.SetCurrency("USD");
fanta.SetQuantity(1);
fanta.SetPosition(2);
beverages.Add(fanta);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.VIEW_PRODUCT_LIST);
@event.SetProductListId("beverage_list_0");
@event.SetProducts(beverages.ToArray());
@event.SetValue(12.24);
AirbridgeUnity.TrackEvent(@event);

查看产品详情页面 (Product Details)

1234567891011
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.VIEW_PRODUCT_DETAILS);
@event.SetProducts(cocacola);
AirbridgeUnity.TrackEvent(@event);

加入购物车 (Add to Cart)

123456789101112
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.ADD_TO_CART);
@event.SetProducts(cocacola);
@event.SetValue(1.25);
AirbridgeUnity.TrackEvent(@event);

完成支付 (Order Complete)

12345678910111213141516171819202122232425
List<Airbridge.Ecommerce.Product> beverages = new List<Airbridge.Ecommerce.Product>();
Airbridge.Ecommerce.Product cocacola = new Airbridge.Ecommerce.Product();
cocacola.SetId("beverage_1");
cocacola.SetName("Coca Cola");
cocacola.SetPrice(1.25);
cocacola.SetCurrency("USD");
cocacola.SetQuantity(1);
cocacola.SetPosition(0);
beverages.Add(cocacola);

Airbridge.Ecommerce.Product fanta = new Airbridge.Ecommerce.Product();
fanta.SetId("beverage_3");
fanta.SetName("Fanta");
fanta.SetPrice(10.99f);
fanta.SetCurrency("USD");
fanta.SetQuantity(1);
fanta.SetPosition(2);
beverages.Add(fanta);

AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.ORDER_COMPLETE);
@event.SetTransactionId("transaction_123");
@event.SetProducts(beverages.ToArray());
@event.SetInAppPurchased(true);
@event.SetValue(1.25);
AirbridgeUnity.TrackEvent(@event);

自定义事件传输

在Airbridge Unity SDK中,您可以通过以下方法发送自定义事件。

1234567
AirbridgeEvent @event = new AirbridgeEvent("category");
@event.SetAction("action");
@event.SetLabel("label");
@event.SetValue(9999);
@event.AddCustomAttribute("custom_key", "value");
@event.AddSemanticAttribute("query", "query_123");
AirbridgeUnity.TrackEvent(@event);

如需直接配置和传输Semantic Attributes,请参阅此文档

查看事件数据传输状态

从 Airbridge Unity SDK 传输的事件数据可以在 Airbridge Dashboard > Raw Data > App Real-time Log 选项卡中查看,如下所示。

高级设置

用户数据散列处理设置

如果出于内部数据分析等目的,需要传输未经散列处理(SHA256)的用户标识符信息,您可以设置 Unity 菜单栏 AB180 > Airbridge Settings中的User Info Hash Enabled选项来停止对User Email 和 User Phone信息的散列处理 (SHA256)。

Attention

由于此选项将敏感的个人信息(例如用户的电子邮件和电话号码)提供给第三方,因此必须采取额外的内部安全措施。

session过期设置

在Airbridge Unity SDK中,通过Unity菜单栏 AB180 > Airbridge SettingsSession Timeout Seconds选项来设置session过期时间,以达到即使用户在设置的session过期时间内重新启动app,也可以判断为同一个session,而不再发送app launch event。

个人信息保护设置

此功能在必须先征得客户对个人信息保护(如 GDPR 或 CCPA)的同意后才能收集和传输数据时非常有用。

可以使用 Unity 菜单栏 AB180 > Airbridge Settings中的Auto Start Tracking Enabled选项来选择是否自动开始数据收集和传输。

1
AirbridgeUnity.StartTracking();

Airbridge 链接跟踪设置

如果由于应用程序内存在多个Deep Link而难以通过 Airbridge 一目了然地查看Re-engagement成果时,可以通过设置Unity菜单栏 AB180 > Airbridge Settings中的Track Airbridge Link Only选项来过滤仅由Airbridge Deep Link实现的Re-engagement成果。

激活此功能后,仅当通过满足以下条件的DeepLink打开应用程序时,才会测量DeepLink成果。

  • 通过Dashboard中注册的Deep Link打开应用程序时

  • 通过 airbridge.ioDeep Link打开应用程序时

  • 通过 deeplink.pageDeep Link打开应用程序时

  • airbridge_referrerquery信息存在时

位置信息收集 (Android)

在Airbridge Unity SDK中,可以通过设置Unity菜单栏 AB180 > Airbridge Settings中的Location Collection Enabled选项来收集用户位置信息。

Attention

位置信息必须通过合法目的和方式收集,因此使用该功能时需谨慎。

此功能仅在Android 上可用,且AndroidManifest.xml 中必须包含以下权限设置。

12
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Facebook Deferred App Link设置

可以通过设置Unity菜单栏 AB180 > Airbridge Settings中的 Facebook Deferred App Link Enabled选项,在 Airbridge Unity SDK 中一并接收 Facebook 的 Deferred App Link数据。

Attention

如需使用此功能,必须提前进行 Facebook SDK 设置。
参考此文档 - https://developers.facebook.com/docs/unity/

设置允许App跟踪 (iOS)

根据 iOS 14 的政策变化,只有通过 iOS 中的 App Tracking Transparency 征得用户同意,才能正确收集 IDFA 信息。

在 Airbridge Unity SDK 中,可以通过设置Unity菜单栏 AB180 > Airbridge Settings中的 iOS Tracking Authorize Timeout Seconds选项来延迟安装事件,从而将 IDFA 正确包含在安装事件数据中。

设置App卸载跟踪

App 卸载跟踪设置从 Airbridge Unity SDK v1.9.0 或更高版本中可用。

Uninstall Tracking 设置方法

Android Uninstall Tracking

1. Firebase Cloud Messaging 设置

请参考Firebase Cloud Messaging官方文档完成应用的基本设置。

2. Firebase Push Token 发送

请参考以下指南来传递通过 Firebase Cloud Messaging 设置生成的 Push Token。

12345678910111213141516
public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
#if UNITY_ANDROID
  AirbridgeUnity.RegisterPushToken(token.Token);
#endif
}

// Make sure the notification is not shown on the device if the remote message value is airbridge-uninstall-tracking.
public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  if (e.Message.Data.ContainsKey("airbridge-uninstall-tracking")) return;
  ...
}

iOS Unistall Tracking

1. Apple Push Notification service 设置

请参考Unity Mobile Notifications包的官方文档完成该包的安装。

2. Device Token 发送

请参考以下指南传递 APNs Device Token。

123456789101112131415161718192021222324
void Start()
{
#if UNITY_IOS
  StartCoroutine(RequestAuthorization());
#endif
}

#if UNITY_IOS
IEnumerator RequestAuthorization()
{
  var authorizationOption = AuthorizationOption.Alert | AuthorizationOption.Badge;
  using (var req = new AuthorizationRequest(authorizationOption, true))
  {
    while (!req.IsFinished)
    {
      yield return null;
    };
    if (req.Granted && req.DeviceToken != "")
    {
      AirbridgeUnity.RegisterPushToken(req.DeviceToken);
    }
  }
}
#endif

故障排除

Android

Airbridge Unity 在 Android 设备上不能正确初始化时的解决方法

Airbridge Unity Android 通过 Content Provider 进行自动初始化。因此,为了正确进行初始化操作,必须在 Project > Plugins > Android > AndroidManifest.xml 文件中正确指定以下 Xml Tag

1234
<provider
    android:authorities="${applicationId}.co.ab180.airbridge.unity.AirbridgeContentProvider"
    android:name="co.ab180.airbridge.unity.AirbridgeContentProvider"
    android:exported="false" />

用户已经在 Android 设备上使用Custom Activity时的解决方法

Airbridge Unity 使用Custom Activity来调用DeepLink。 如果用户已经在使用Custom Activity,请将以下代码添加到Custom Activity中。

1234567891011
@Override
protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  setIntent(intent);
}

@Override
protected void onResume() {
  super.onResume();
  AirbridgeUnity.processDeeplinkData(getIntent());
}

Android Manifest 文件无法正确合并时的解决方法

Airbridge Unity提供的Android Manifest Merger组件首先读取已存在的Project > Plugins > Android > AndroidManifest.xml文件内容,而后简单地合并Airbridge Unity提供的Project > Plugins > Airbridge > Android > AndroidManifest.xml文件内容,因此很难满足所有用户的应用场景。在特殊的应用场景下,用户必须手动合并相应的 AndroidManifest.xml文件内容。

当显示“Missing 'package' key attribute on element package at …”时的解决方法

Android 11 版本添加了 Package Visibility 政策。根据此政策,所有应用程序都必须通过manifest中的 <queries> 通知用户与其他应用程序交互的包。

Airbridge为遵守该政策,在Android SDK 模块中包含了相关变更的内容。并且为了支持<queries> 标签,您必须使用5.6.4版本以上的Gradle3.6.0版本以上的Android Gradle Plugin

您可以通过此页面查看不同Unity版本所包含的Gradle版本。

如果您使用的Unity的Gradle版本低于5.6.4,或者Android Gradle Plugin版本低于3.6.0,您可以通过以下Unity设置来指定使用特定版本。

Unity 2020.1或更高版本

以下版本已包含Gradle 5.6.4及更高版本以及Android Gradle Plugin3.6.0及更高版本,因此不需要进行额外操作 。

Unity 2019.3版本 ~ 2019.4版本

该自定义选项仅适用于Unity 2019.3 patch 7及更高版本。

1. 请访问 Gradle Build Tool 页面下载5.6.4及更高版本的 Gradle

2. 请在 Preferences> External Tools中,取消选中 Gradle Installed with Unity (recommended)选项,然后将下载的 Gradle文件路径设置为如下所示。

3. 请在 Project Settings> Player> Android tab> Publishing Settings> Build中,选择如下选项。

a. Custom Main Gradle Template
b. Custom Launcher Gradle Template

4. 请对以下两个自动生成的文件都进行如下更改。

  • Assets/Plugins/Android/mainTemplate.gradle

  • Assets/Plugins/Android/launcherTemplate.gradle

12345678910111213141516171819202122
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        // Must be Android Gradle Plugin 3.6.0 or later. For a list of
        // compatible Gradle versions refer to:
        // https://developer.android.com/studio/releases/gradle-plugin
        classpath 'com.android.tools.build:gradle:3.6.0'
    }
}

allprojects {
   repositories {
      google()
      jcenter()
      flatDir {
        dirs 'libs'
      }
   }
}

Unity 2019.1版本 ~ 2019.2版本

1. 请访问 Gradle Build Tool 页面下载5.6.4及更高版本的 Gradle

2.请在 Preferences> External Tools中,取消选中Gradle Installed with Unity(recommended)选项,然后将下载的 Gradle文件路径设置为如下所示。

3. 请在 Project Settings  > Player> Android tab> Publishing Settings> Build中,选中 Custom Gradle Template选项,如下图所示。

4. 请对生成的 Assets/Plugins/Android/mainTemplate.gradle文件进行如下更改。

12345678
buildscript {
    dependencies {
        // Must be Android Gradle Plugin 3.6.0 or later. For a list of
        // compatible Gradle versions refer to:
        // https://developer.android.com/studio/releases/gradle-plugin
        classpath 'com.android.tools.build:gradle:3.6.0'
    }
}

Unity 2018.4版本

该自定义选项仅适用于Unity 2018.4 patch 24及更高版本。

1. 请访问 Gradle Build Tool 页面下载5.6.4及更高版本的 Gradle

2.请转到 Build Settings> Android,然后在 Build System的选项中选择 Gradle,如下图所示。

3. 请在 Preferences  > External Tools中,取消选中 Gradle Installed with Unity(recommended)选项,然后将下载的 Gradle文件路径设置为如下所示。

4. 请在 Project Settings> Player> Android tab> Publishing Settings> Build中,选中 Custom Gradle Template选项,如下图所示。

5. 请对生成的 Assets/Plugins/Android/mainTemplate.gradle文件进行如下更改

12345678
buildscript {
    dependencies {
        // Must be Android Gradle Plugin 3.6.0 or later. For a list of
        // compatible Gradle versions refer to:
        // https://developer.android.com/studio/releases/gradle-plugin
        classpath 'com.android.tools.build:gradle:3.6.0'
    }
}

Unity 2018.3及以下版本

Unity 2018.3及以下版本不支持Gradle自定义选项。

iOS

已在iOS中使用自定义AppController时的解决方法

Airbridge Unity iOS使用Unity提供的IMPL_APP_CONTROLLER_SUBCLASS创建自定义AppController。 如果您已经使用IMPL_APP_CONTROLLER_SUBCLASS实现了自定义AppController,请在相应的自定义AppController中添加以下代码。

12345678910
- (BOOL) application:(UIApplication*)application 
continueUserActivity:(NSUserActivity*)userActivity 
  restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>>* _Nullable))restorationHandler 
{
    [AUAppDelegate.instance application:application 
                   continueUserActivity:userActivity 
                     restorationHandler:restorationHandler];

    return YES;
}

完成此操作后,请删除原有的Airbridge Unity SDK Assets > Plugins > Airbridge > iOS > Delegate > AUAppController.mm文件

Was this page helpful?

Have any questions or suggestions?