概要:除了基础SDK功能以外,您还可以通过API实现其他的进阶SDK功能,包括卸载衡量、用户邀请归因、推送通知以及隐私设置。
相关文章
下列文档可以帮助您更全面地了解Unity插件对接流程的各个方面:
- Unity插件V6版本接入指南——总体说明
- Unity插件V6版本接入指南——基础SDK对接
- Unity插件V6版本接入指南——进阶SDK对接(本文)
- Unity插件V6版本接入指南——API参考信息
归因
衡量卸载
衡量各渠道的用户卸载率。
请根据对应的操作系统按以下说明设置卸载衡量。
- Unity Firebase SDK下载地址:https://firebase.google.com/docs/unity/setup。
- 将 FirebaseMessaging.unitypackage导入项目。
- 将google-services.json导入项目(从Firebase控制台获取)。
注意
Unity Firebase SDK会自动添加manifest receiver。
- 将此代码添加到处理AppsFlyer代码的Unity类中:
using Firebase.Messaging; using Firebase.Unity;
- 添加到Start()方法:
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
- 添加以下方法:
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
{
#if UNITY_ANDROID
AppsFlyerAndroid.updateServerUninstallToken(token.Token);
#endif
}
重要提示
场景:接入Unity Firebase SDK。
要求:如果您在项目中添加了Firebase Unity SDK,请勿将以下方法添加到enableUninstallTracking(“ SenderID”)。
后果(如果添加):
- Firebase Unity SDK将从先前添加的google-services.json文件中获取发件人ID。
- 这会触发Android发出调试警告(debug warning)。
从 UnityEngine.iOS.NotificationServices.deviceToken
获取设备token。
收到设备token(选项卡内容问题)时,请调用此方法:
AppsFlyer.registerUninstall("device_push_notification_token");
示例:
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour, IAppsFlyerConversionData
{
private bool tokenSent;
void Start()
{
AppsFlyer.initSDK("devKey", "appID", this);
AppsFlyer.startSDK();
#if UNITY_IOS
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
#endif
}
void Update()
{
#if UNITY_IOS
if (!tokenSent)
{
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null)
{
AppsFlyeriOS.registerUninstall(token);
tokenSent = true;
}
}
#endif
}
}
详情请见iOS卸载衡量指南。
设置其他自定义数据
如需在插件级别与多个与外部合作伙伴平台(包括Segment、Adobe和Urban Airship)对接,就需要用到setAdditionalData
API。
请仅在合作伙伴对接指南中明确指出需要使用setAdditionalData
API时,才使用此API。
示例:setAdditionalData
代码
Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);
Sessions(应用打开)
设定两个session之间的间隔
默认情况下,两次应用启动之间必须至少有5秒钟的间隔,AF才会将其记录为两个单独的session。请按以下方式设置session之间的最短间隔:
AppsFlyer.setMinTimeBetweenSessions(custom_time_ins_seconds);
注意!如果您将session之间的间隔设置得较高,可能会对依赖session数据(例如深度链接)的API产生负面影响。
详情请见应用session统计说明。
工具类应用的后台session
在Unity中不可用。
自有媒体
如何解决嵌套型深度链接的网址问题
某些第三方服务商(例如ESP邮件营销服务商 )会:
- 使用自己的域名(用于记录点击)将链接嵌套在电子邮件中。
- 允许您设置自己的域名,用于记录点击。
如果将OneLink嵌套在此类域名中,可能会影响其功能。为了克服这个问题:
- 在SDK初始化之前,请先调用
setResolveDeepLinkURLs
API。 - 该API会从启动应用的点击域中获取OneLink。
场景:假设您有多个能跳转到OneLink的点击域,这个OneLink的地址是https://mysubdomain.onelink.me/abCD。
解决方案:
- 使用
setResolveDeepLinkURLs
API获取OneLink(即用户点击链接后跳转到的地址)。 - 此API方法会接收由插件解析的域列表。
- 以下代码可以让您在保留OneLink功能的情况下使用点击域:
示例
AppsFlyer.setResolveDeepLinkURLs("example.com", "click.example.com");
完成上述设置后您就可以使用此OneLink中的数据实现深度链接并打造个性化的用户内容。
记录推送通知
您可以记录推送通知,并将其做为再营销投放的一部分进行考察。
请按以下方式实现推送通知记录:
- 调用
sendPushNotificationData
方法。 - 将此方法放在所有由点击通知触发的活动(activity)的
onCreate
方法中。
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.handlePushNotifications();
#endif
详情请见推送通知衡量 。
用户邀请归因
让现有用户邀请好友或联系人成为新用户可以推动用户增长。
您可以对应用中的用户邀请所产生的激活进行归因和记录。详情请见用户邀请归因。
交叉推广归因
对您的应用进行交叉推广可以进一步提升拉新效果。
您可以在用户的现有应用上交叉推广您的其他应用,并通过AppsFlyer来对这类激活进行归因和记录。详情请见交叉推广归因。
用户标识符
获取AppsFlyer ID
AppsFlyer ID是在用户激活应用时生成的,您可以使用这个ID实现以下功能:
- 发送S2S应用内事件 。
- 将该ID与您后端系统中的用户进行匹配。
- 合并Pull API和Push API的数据时进行数据映射。
请按以下方式获取AppsFlyer ID:
string AppsFlyerUID = AppsFlyer.getAppsFlyerId();
设置Customer User ID(客户用户ID,简称CUID)
您可以设置专用的CUID,并将其关联到对应的AppsFlyer ID。
CUID具有唯一性,且:
- 会出现在CSV格式的AppsFlyer原始数据报告中。
- 可以在回传API中使用,与内部ID进行交叉索引。
请按以下方式设置CUID:
AppsFlyer.setCustomerUserId("someId");
推荐方式:建议在应用链路中尽早设置CUID,因为只有在CUID设置后上报的事件才能关联到CUID。
在调用startSDK
之前先调用setCustomerUserId
- 记录到的事件将与CUID相关联。
- 相关数据将显示在激活和应用内事件的原始数据报告中。
AppsFlyer.setCustomerUserId("someId");
获取CUID
详情请见CUID。
延迟插件初始化以获取customerUserID
如果您想要让激活数据和事件数据都包含CUID,请在CUID设置完毕后再对插件进行初始化。
请根据具体的操作系统参考以下说明:
重要提示
延迟设置CUID可能会增加数据差异和作弊风险,因此请仅在符合业务逻辑时使用该方式。
收集OAID
OAID作为一种设备唯一标识符,是实现归因的重要元素。
请按以下方式收集OAID :
默认情况下会自动收集OAID。如需关闭自动收集,请调用AppsFlyerAndroid.setCollectOaid(false);
。
- 下载MSA联盟提供的AAR。
- 将下载的aar添加到Assets/Plugins/Android文件夹中。
- 对于华为设备,将
hms-ads-identifier
lib添加到Assets/Plugins/Android文件夹。 - 将appsflyer-oaid添加到您的项目中。将aar添加到Assets/Plugins/Android文件夹或将以下内容添加到Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml即可完成此步骤:
<androidPackage spec="com.appsflyer:oaid:5.2.0">
</androidPackage>
用户隐私
用户拒绝授权
用户数据的匿名化处理
请按以下方式对应用用户进行匿名化处理:
- 在SDK初始化期间设置API
- 调用
anonymizeUser
并将其设置为true 。
AppsFlyer.anonymizeUser(true);
- 用户激活、事件和session数据的匿名化完成。
如需重新启用SDK跟踪:调用anonymizeUser
并将其设置为false 。
重要提示
对用户进行匿名化处理会严重影响您的归因信息,因此请仅在法律规定不能收集用户信息的地区使用这种做法。停止与渠道的数据共享
在某些情况下,广告主可能需要停止与广告平台/渠道共享特定用户的用户级别数据。其原因包括:
- CCPA或GDPR等隐私政策的合规问题
- 用户拒绝授权
- 与某些渠道(广告平台、第三方)存在竞争关系
AppsFlyer提供两种API方法来停止与某些或所有渠道共享数据:
- setSharingFilter:广告主需要让某些(可以是一个或多个)广告平台/对接渠道停止获取数据时使用该方法。
- setSharingFilterForAllPartners:广告主需要让所有平台/对接渠道停止获取数据时使用该方法。
SDK V5.4.1及之后的版本支持上述筛选方法。
每次SDK初始化时都必须调用上述筛选方法,且筛选会对整个session生效。如果不能立即判断是否需要筛选数据共享渠道,请延迟SDK初始化。
在首次调用startSDK之前激活该方法:
- 来自SRN的用户会被归因到自然量,他们的数据不会分享给对接渠道。
- 点击广告平台(非SRN)的用户在AppsFlyer后台会按实际情况归因,但不会通过回传、API、原始数据报告或任何其他方式与广告平台分享该数据。
卸载数据目前还无法对数据共享渠道进行筛选。但是,您可以在AppsFlyer后台的合作伙伴配置页中关闭卸载事件发送。