Unity插件V6版本接入指南——API参考信息

概要:本文主要是对类和方法(包括AppsFlyer SDK)的技术说明。

 相关文章

下列文档可以帮助您更全面地了解Unity插件对接流程的各个方面:

通用于安卓和iOS的API

initSDK

说明

使用dev key和app ID对SDK进行初始化。所有应用均需要设置dev key。仅iOS应用需要设置应用ID。如果您的应用仅在安卓平台上运行,请将应用ID设为null。游戏对象包含IAppsFlyerConversionData接口。

方法签名

void initSDK(string devKey, string appID, MonoBehaviour gameObject)

示例

AppsFlyer.initSDK("dev_key","app_id"); // without deeplinking
            AppsFlyer.initSDK("dev_key","app_id", this); // with deeplinking

startSDK

说明

调用此API后SDK启动,即时发送session,且所有后台到前台的切换也记录为一个session。

方法签名

void startSDK()

示例

AppsFlyer.startSDK();

sendEvent

说明

通过调用带有事件名称和值参数的sendEvent来记录应用内事件

方法签名

void sendEvent(string eventName, Dictionary<string, string> eventValues)

示例

Dictionary<string, string> 
            eventValues = new Dictionary<string, string>();
            eventValues.Add(AFInAppEvents.CURRENCY, "USD");
            eventValues.Add(AFInAppEvents.REVENUE, "0.99");
eventValues.Add("af_quantity", "1");
            AppsFlyer.sendEvent(AFInAppEvents.PURCHASE, eventValues);

stopSDK

说明

在某些极端情况下,出于监管机构和隐私合规性的要求,您可能需要关闭所有的SDK功能。这可以通过stopSDK API来实现。调用该API后,SDK将停止运行,并不再与AppsFlyer服务器交互。

方法签名

void stopSDK(bool isSDKStopped)

示例

AppsFlyer.stopSDK(true);

isSDKStopped

说明

stopSDK API(布尔值)是否设置为true。

方法签名

bool isSDKStopped()

示例

if (!AppsFlyer.isSDKStopped())
{

}

getSdkVersion

说明

用于获取AppsFlyer SDK的版本信息

方法签名

string getSdkVersion()

示例

string version = AppsFlyer.getSdkVersion();

setIsDebug

说明

用于启用调试日志

方法签名

void setIsDebug(bool shouldEnable)

示例

AppsFlyer.setIsDebug(true);

setCustomerUserID

说明

用于设置客户用户ID(CUID)。

方法签名

void setCustomerUserId(string id)

示例

AppsFlyer.setCustomerUserId("custom_user_id");

setAppInviteOneLink

说明

用于设置OneLink模板ID,即您创建用户邀请的自定义归因链接时所使用的OneLink模板ID。

方法签名

setAppInviteOneLinkID(string oneLinkId)

示例

AppsFlyer.setAppInviteOneLinkID("abcd");

setAdditionalData

说明

用于添加要发送到外部合作伙伴平台的其他数据。

方法签名

setAdditionalData(Dictionary<string, string> customData)

示例

Dictionary<string, string> customData = new Dictionary<string, string>();
customData.Add("custom1", "someData");
AppsFlyer.setAdditionalData(customData);

setResolveDeepLinkURLs

说明

用于解析点击域中嵌套的OneLink。详情请见解析嵌套型深度链接URL

方法签名

setResolveDeepLinkURLs(params string[] urls)

示例

AppsFlyer.setResolveDeepLinkURLs("example.com", "click.example.com");

setOneLinkCustomDomain

说明

广告主可以使用此方法来设置品牌化的OneLink域。

方法签名

void setOneLinkCustomDomain(params string[] domains)

示例

AppsFlyer.setOneLinkCustomDomain("test.domain", "test2.domain");

setcurrencyCode

说明

用于上报事件收入。仅限使用ISO货币代码

方法签名

public void setCurrencyCode(String currencyCode);

示例

AppsFlyer.setCurrencyCode("GBP");

recordLocation

说明

手动记录用户位置

方法签名

void recordLocation(double latitude, double longitude)

示例

AppsFlyer.recordLocation(40.7128,74.0060);

anonymizeUser

说明

在初始化期间使用,明确对用户激活、事件和session进行匿名化处理。如需停止匿名化,请再次调用anonymizeUser again并将其设置为false。

方法签名

void anonymizeUser(bool shouldAnonymizeUser)

示例

AppsFlyer.anonymizeUser(true);

getAppsFlyerId

说明

获取AppsFlyer ID,用于标识新增激活。

方法签名

string getAppsFlyerId()

示例

string uid = AppsFlyer.getAppsFlyerId();

setMinTimeBetweenSessions

说明

默认情况下,两个session之间必须至少间隔5秒,才能分别将其计为单独的session。该方法用于对两个session之间的最短间隔设置一个自定义的值。

方法签名

void setMinTimeBetweenSessions(int seconds)

示例

AppsFlyer.setMinTimeBetweenSessions(4);

setUserEmails

说明

设置用户邮箱并对其加密。

方法签名

void setUserEmails(EmailCryptType cryptMethod, params string[] emails)

示例

AppsFlyer.setUserEmails(EmailCryptType.EmailCryptTypeSHA256, "test1@test1.com","test2@test2.com");

setHost

说明

设置自定义的host

方法签名

void setHost(string hostPrefixName, string hostName)

示例

AppsFlyer.setHost("hostPrefixName","hostName");

getConversionData

说明

用于注册转化数据监听器,以从SDK侧直接获取每个新增激活的实时用户归因数据。使用该方法后您就可以为用户呈现个性化的内容或让其跳转到应用内的具体页面,从而大幅提升用户与应用的互动。

方法签名

void getConversionData(string objectName);

示例

AppsFlyer.getConversionData(gameObject.name);

attributeAndOpenStore

说明

对点击进行归因,并打开应用商店的相关页面。

方法签名

void attributeAndOpenStore
(string appID, string campaign,
Dictionary<string, string> userParams, MonoBehaviour gameObject)

示例


Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("af_sub1", "val");
parameters.Add("custom_param", "val2");
AppsFlyer.attributeAndOpenStore("123456789","test campaign", parameters, this);            

recordCrossPromoteImpression

说明

如需对展示进行归因,请调用以下API。请务必使用AppsFlyer面板中的App ID。

方法签名

void recordCrossPromoteImpression(string appID, string campaign);

示例

Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("af_sub1", "val");
parameters.Add("custom_param", "val2");
AppsFlyer.recordCrossPromoteImpression("appID","campaign", parameters);

generateUserInviteLink

说明

LinkGenerator类会根据各种setter方法构建邀请链接,这些方法允许在点击时传递其他信息。

方法签名

void generateUserInviteLink
(Dictionary<string, string> parameters, MonoBehaviour gameObject)

示例

AppsFlyer.generateUserInviteLink(params,this);

onAppOpenAttribution

说明

当用户通过深度链接打开应用时,获取深度链接数据。

方法签名

public void onAppOpenAttribution(string validateResult)

示例

public void onAppOpenAttribution(string attributionData)
            { AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
            Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
            // add direct deeplink logic here }

onAppOpenAttributionFailure

说明

用于获取深度链接数据接收出错时的错误信息。

方法签名

public void onAppOpenAttributionFailure (string error)

示例

public void onAppOpenAttributionFailure(string error)
            {AppsFlyer.AFLog("onAppOpenAttributionFailure", error); }

onConversionDataSuccess

说明

用于获取转化数据。尤其适用于延迟深度链接场景,详情请见此文档

  • SDK v5及以上版本: onConversionDataSuccess
  • SDK v5以下版本: onConversionDataReceived 

方法签名

public void onConversionDataSuccess(string conversionData)

示例

public void onConversionDataSuccess(string conversionData)
            {
            AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
            Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
            // add deferred deeplink logic here
            }

onConversionDataFail

说明

在无法获取激活转化数据时处理错误信息。

方法签名

public void onConversionDataFail(string error)

示例

public void onConversionDataFail(string error)
            {
            AppsFlyer.AFLog("onConversionDataFail", error);
            }

onInviteLinkGenerated

说明

OneLink链接生成成功回调。

方法签名

public void onInviteLinkGenerated(string link)

示例

public void onInviteLinkGenerated(string link)
            {
            }

onInviteLinkGeneratedFailure

说明

OneLink链接生成错误回调。

方法签名

public void onInviteLinkGeneratedFailure(string error)

示例

public void onInviteLinkGeneratedFailure(string error)
            {
            AppsFlyer.AFLog("onInviteLinkGeneratedFailure", error);
            }

didFinishValidateReceipt

说明

validateAndSendInAppPurchase API的成功回调。

安卓:回调返回“Validate success“(验证成功)。
iOS:回调返回来自Apple verifyReceipt API的JSON字符串。

方法签名

public void didFinishValidateReceipt(string result)

示例

public void didFinishValidateReceipt(string result)
            {
            }

didFinishValidateReceiptWithError

说明

票据验证错误回调。

方法签名

public void didFinishValidateReceiptWithError(string error)

示例

public void didFinishValidateReceiptWithError(string error)
            {
            }

setPhoneNumber

说明

用于设置用户电话号码。

方法签名

void setPhoneNumber(string phoneNumber)

示例

AppsFlyer.setPhoneNumber("4166358181");

setSharingFilterForAllPartners

说明

让广告主停止与所有广告平台/对接渠道共享数据。了解详情

方法签名

void setSharingFilterForAllPartners()

示例

AppsFlyer.setSharingFilterForAllPartners();

setSharingFilter

说明

让广告主停止与某些(一个或多个)广告平台/对接渠道共享数据。了解详情

方法签名

void setSharingFilter(params string[] partners)

示例

AppsFlyer.setSharingFilter
("googleadwords_int","snapchat_int","doubleclick_int");

适用于安卓的API

updateServerUninstallToken

说明

手动传输Firebase Device Token,用于衡量卸载。

方法签名

void updateServerUninstallToken(string token)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.updateServerUninstallToken("token");
#endif

setImeiData

说明

向AppsFlyer明确发送IMEI。

方法签名

void setImeiData(string imei)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setImeiData("imei");
#endif

setAndroidIdData

说明

向AppsFlyer明确发送Android ID。

方法签名

void setAndroidIdData(string androidId)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setAndroidIdData("androidId");
#endif

waitForCustomerUserId

说明

用于将SDK的启动延迟到CUID设置之后。

方法签名

void waitForCustomerUserId(bool wait)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.waitForCustomerUserId(true);
#endif

setCustomerIdAndStartSDK

说明

向SDK提供相关的CUID,然后触发SDK正常运行。

方法签名

void setCustomerIdAndStartSDK(string id)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setCustomerIdStartSDK("id");
#endif

getOutOfStore

说明

用于获取当前的AF_STORE值。

方法签名

string getOutOfStore()

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            string af_store = AppsFlyerAndroid.getOutOfStore();
#endif

setOutOfStore

说明

用于手动设置AF_STORE值。

方法签名

void setOutOfStore(string sourceName)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setOutOfStore("sourceName");
#endif

setCollectAndroidID

说明

用于停止对Android ID的收集。如果应用中不包含Google Play Services,则SDK会收集Android ID。但如果应用中带有Google Play Services,则不能收集Android ID,否则会违反Google Play的政策规定。

方法签名

void setCollectAndroidID(bool isCollect)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setCollectAndroidID(true);
#endif

setCollectIMEI

说明

用于停止对IMEI的收集。如果应用不包含Google Play Services,则AF插件会收集IMEI。但如果应用中带有Google Play Services,则不能收集IMEI,否则会违反Google Play的政策规定。

方法签名

void setCollectIMEI(bool isCollect)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setCollectIMEI(true);
#endif

setIsUpdate

说明

用于手动设置应用更新。

方法签名

void setIsUpdate(bool isUpdate)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setIsUpdate(true);
#endif

setPreinstallAttribution

说明

用于指定生产商或媒体渠道名称,以对预装进行归因。

方法签名

void setPreinstallAttribution
(string mediaSource, string campaign, string siteId)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.setPreinstallAttribution("mediaSource","campaign", "siteId");
            #endif

isPreInstalledApp

说明

布尔值,用于标识生产商预装的应用。

方法签名

bool isPreInstalledApp()

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            if (AppsFlyerAndroid.isPreInstalledApp())
            {
            }
            #endif

 getAttributionId

说明

用于获取Facebook归因ID(若有)。

方法签名

string getAttributionId()

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            string attributionId = AppsFlyerAndroid.getAttributionId();
#endif

handlePushNotifications

说明

用于获取记录到的推送通知。

方法签名

void handlePushNotifications()

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.handlePushNotifications();
#endif

validateAndSendInAppPurchase

说明

该API用于应用内购的服务器端验证。如果验证成功,则会自动发送带有相关值的af_purchase事件。

方法签名

void validateAndSendInAppPurchase
(string publicKey, string signature, string purchaseData,
string price, string currency, Dictionary<string, string> additionalParameters,
MonoBehaviour gameObject)

示例

#if UNITY_ANDROID && !UNITY_EDITOR
            AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey", 
            "signature", 
            "purchaseData", 
            "price", 
            "currency", 
            null, 
            this);
            #endif

适用于iOS的API

setShouldCollectDeviceName

说明

将该标签设为true后即可收集当前的设备名称(如“My iPhone“)。默认值为“false”。

方法签名

void setShouldCollectDeviceName(bool shouldCollectDeviceName)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.setShouldCollectDeviceName(true);
#endif

setDisableCollectIAd

说明

用于停止ASA归因。

方法签名

void setDisableCollectIAd(bool disableCollectIAd)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.setDisableCollectIAd(true);
#endif

setUseReceiptValidationSandbox

说明

Apple环境(生产环境或沙盒环境)中的应用内购票据验证。默认值为“false”。

方法签名

void setUseReceiptValidationSandbox(bool useReceiptValidationSandbox)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.setUseReceiptValidationSandbox(true);
#endif

setUseUninstallSandbox

说明

用于在Apple环境(生产环境或沙盒环境)中测试卸载。默认值为“false”。

方法签名

void setUseUninstallSandbox(bool useUninstallSandbox)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.setUseUninstallSandbox(true);
#endif

validateAndSendInAppPurchase

说明

如需发送并验证应用内购,请从processPurchase方法中调用此方法。

方法签名

void validateAndSendInAppPurchase
(string productIdentifier, string price, string currency, string tranactionId,
Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.validateAndSendInAppPurchase(
            "productIdentifier", 
            "price", 
            "currency", 
            "tranactionId", 
            null, 
            this);
            #endif

registerUninstall

说明

注册远程通知并向AppsFlyer提供推送设备令牌(Push Device Token)。

方法签名

void registerUninstall(byte[] deviceToken)

示例

private bool tokenSent;
            void Update()
            {
            #if UNITY_IOS && !UNITY_EDITOR
            if (!tokenSent)
            {
            byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null)
            {
            AppsFlyeriOS.registerUninstall(token);
            tokenSent = true;
            }
            }
            #endif
            }

handleOpenUrl

说明

用于手动记录深度链接。

方法签名

void handleOpenUrl(string url, string sourceApplication, string annotation)

示例

#if UNITY_IOS && !UNITY_EDITOR
            AppsFlyeriOS.handleOpenUrl(stringurl, string sourceApplication, string annotation);
            #endif

onOpenStoreLinkGenerated

说明

在不关闭应用的情况下利用StoreKit组件打开App Store。了解详情

方法签名

public void onOpenStoreLinkGenerated(string link)

示例

public void onOpenStoreLinkGenerated(string link)
            {
            }

disableSKAdNetwork

说明

用于停止SKAdNetwork归因。将该方法设置为“true”即可停用。

方法签名

bools disableSKAdNetwork(int isDisabled)

示例

#if UNITY_IOS && !UNITY_EDITOR
    AppsFlyeriOS.disableSKAdNetwork(true);
#endif

waitForATTUserAuthorizationWithTimeoutInterval

说明

如果您想要先通过弹窗获取用户授权,然后再读取应用相关数据,以记录该用户或设备(如IDFA),可以使用此方法。如果用户同意授权,则SDK可读取到IDFA。这里的计时间隔(timeout interval)是指等待用户授权收集IDFA的时间。如果在计时结束后仍未得到用户授权,则SDK不会收集IDFA。

方法签名

void waitForATTUserAuthorizationWithTimeoutInterval(int timeoutInterval)

示例

#if UNITY_IOS && !UNITY_EDITOR
    AppsFlyeriOS.waitForATTUserAuthorizationWithTimeoutInterval(60);
#endif