手动事件跟踪
除了安装、打开、更新和购买(应用内购买),这些都由 Hive SDK 自动跟踪之外,您可以手动跟踪所需的事件。为此,您需要将事件注册到每个归因的仪表板上。例如,您可以跟踪特定事件,例如完成游戏教程(TutorialComplete)或完成任务目标(MissionClear)。您应该在完成自动事件跟踪的设置后实施手动事件跟踪。
使用 Adjust 手動追蹤事件¶
- 要手動追蹤自定義事件,請在 Adjust 儀表板上註冊事件,並獲取應用程式令牌和事件令牌。應用程式令牌可以在儀表板主頁上獲得,事件令牌則在儀表板 > 所有設定 > 事件中獲得。請參考 Adjust 儀表板指南 了解如何獲取令牌。
- 在 hive_config.xml 中添加每個事件的應用程式令牌和事件令牌。詳細信息請參見下面的示例代碼。
-
為了防止應用程式欺騙,Adjust 儀表板提供 SDK 簽名。要使用此功能,您需要查看 Adjust 合同詳細信息。要使用此功能,獲取所需的密鑰並將其添加到 hive_config.xml 中(
secretId
、info1
、info2
、info3
、info4
)。<providers> <!-- (已跳过) --> <!-- 请勿设置Adjust节点的id字段。 --> <!-- Adjust节点的name字段固定为“Adjust”。 --> <!-- 事件节点的name字段由游戏工作室定义。但一旦设置,它应与sendEvent()请求的所有其他营销归因的name字段相同。--> <Adjust name="Adjust" id="unused" key="APP_TOKEN" secretId="1" info1="5432112345" info2="334123" info3="555333" info4="111333"> <events> <event name="TutorialComplete" value="TutorialComplete_EVENT_TOKEN"/> <event name="MissionClear" value="MissionClear_EVENT_TOKEN"/> </events> <!-- (已跳过) --> </Adjust> </providers>
-
呼叫分析 API sendEvent() 以發送事件。當您發送事件時,請在 hive_config.xml 中使用
事件名稱
。名稱
被用作 sendEvent() 的請求參數,而您設置的值
將在每個歸因的儀表板上更新。Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
手動追蹤事件與 Airbridge¶
- 获取所需的令牌。有关如何获取令牌的信息,请参阅Airbridge仪表板指南。
- 从仪表板 > 设置 > 令牌管理中获取应用SDK令牌和应用名称。
- 将令牌、应用名称和事件设置添加到hive_config.xml中。请参阅下面的 hive_config.xml 示例代码。在Windows上,令牌和应用名称设置不是必需的,但Hive控制台设置是必需的。
- Airbridge提供SDK签名以防止应用程序欺骗。要使用相关功能,您必须首先检查与Airbridge的合同条款。获取密钥并将其作为
secretId
、secret
值添加到hive_config.xml中。 有关SDK签名安全信息的更多信息,请参阅Airbridge指南。仅在Android和iOS上支持,不支持Windows。 - 如果您同时应用Windows、Android和iOS,请联系Airbridge获取预设。
- 通过调用分析API sendEvent()发送事件。发送事件时,使用添加到hive_config.xml中的
event<
标签的name
和value
。name
在调用API时用作参数,value
可以在每个归因的仪表板中查看。Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
hive_config.xml 範例代碼¶
<providers>
<Airbridge name="Airbridge" key="APP_SDK_TOKEN" appName="APP_NAME" secretId="SECRET_ID" secret="SECRET">
<events>
<event name="TutorialComplete" value="Tutorial Complete" />
<event name="MissionClear" value="Mission Clear" />
</events>
</Airbridge>
</providers>
使用 Airbridge 發送額外屬性¶
當使用 Airbridge 發送應用內事件時,您可以使用 Analytics.sendEventWithAttributes
發送額外屬性。
可以发送的附加属性信息如下。
- 行动,标签:收集可用于Airbridge报告中的分组信息。
- 值:收集用于收入分析的信息。
- 语义属性:Airbridge的预定义属性。
- 如果输入的属性字符串不是预定义属性,则可能无法收集。
- 数据格式与语义属性不匹配的事件将不会被收集。由于每个语义属性的数据格式各不相同,因此需要谨慎。
- 数据格式为字符串的语义属性允许最多1024个字符。数据格式为int或float的语义属性允许最多64位。
- 自定义属性:用户定义的属性。
API 參考: hive.Analytics.sendEventWithAttributes
using hive;
// 創建 AnalyticsAttributes
var analyticsAttributes = new AnalyticsAttributes();
// Airbridge 的特定屬性
var airbridgeSpecific = new AirbridgeSpecific();
// 行動
airbridgeSpecific.SetSemanticAction("工具");
// 標籤
airbridgeSpecific.SetSemanticLabel("錘子");
// 值
airbridgeSpecific.SetSemanticValue(10);
// 語義屬性
airbridgeSpecific.AddSemanticAttribute("type", "Warrior");
airbridgeSpecific.AddSemanticAttribute("score", 20);
// 添加 Airbridge 特定属性
analyticsAttributes.AddModuleSpecificAttributes(airbridgeSpecific);
// 添加自定义属性
analyticsAttributes.AddCustomAttribute("key1", "value1");
analyticsAttributes.AddCustomAttribute("key2", "value2");
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes);
API 參考: Analytics::sendEventWithAttributes
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// 創建 AnalyticsAttributes
AnalyticsAttributes* analyticsAttributes = new AnalyticsAttributes();
// Airbridge 的特定屬性
AirbridgeSpecific* airbridgeSpecific = new AirbridgeSpecific();
std::string semanticAction = "工具";
std::string semanticLabel = "錘";
float semanticValue = 10.0f;
// 行动
airbridgeSpecific->setSemanticAction(semanticAction);
// 标签
airbridgeSpecific->setSemanticLabel(semanticLabel);
// 值
airbridgeSpecific->setSemanticValue(semanticValue);
// 語義屬性
airbridgeSpecific->addSemanticAttribute("type", picojson::value("Warrior"));
airbridgeSpecific->addSemanticAttribute("score", picojson::value(20.0f));
// 添加 Airbridge 特定屬性
analyticsAttributes->addModuleSpecificAttributes(airbridgeSpecific);
// 添加自定义属性
analyticsAttributes->addCustomAttribute("key1", picojson::value("value1"));
analyticsAttributes->addCustomAttribute("key2", picojson::value("value2"));
std::string eventName = "Quest Complete";
Analytics::sendEventWithAttributes(eventName, *analyticsAttributes);
API 參考: Analytics.sendEventWithAttributes
import com.hive.Analytics
import com.hive.analytics.provider.attributes.AirbridgeSpecific
import com.hive.analytics.provider.attributes.AnalyticsAttributes
// 創建 AnalyticsAttributes
val analyticsAttributes = AnalyticsAttributes()
// Airbridge 的特定属性
val airbridgeSpecific = AirbridgeSpecific().apply {
setSemanticAction("工具") // 动作
setSemanticLabel("锤子") // 标签
setSemanticValue(10.0f) // 值
addSemanticAttribute("类型", "战士") // 意义属性
addSemanticAttribute("分数", 20.0f) // 意义属性
}
// 添加 Airbridge 特定属性
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific)
// 添加自定義屬性
analyticsAttributes.addCustomAttribute("key1", "value1")
analyticsAttributes.addCustomAttribute("key2", "value2")
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes)
API 參考: Analytics.sendEventWithAttributes
import com.hive.Analytics;
import com.hive.analytics.provider.attributes.AirbridgeSpecific;
import com.hive.analytics.provider.attributes.AnalyticsAttributes;
// 創建 AnalyticsAttributes
AnalyticsAttributes analyticsAttributes = new AnalyticsAttributes();
// Airbridge的特定属性
AirbridgeSpecific airbridgeSpecific = new AirbridgeSpecific();
airbridgeSpecific.setSemanticAction("工具"); // 动作
airbridgeSpecific.setSemanticLabel("锤子"); // 标签
airbridgeSpecific.setSemanticValue(10.0f); // 值
airbridgeSpecific.addSemanticAttribute("类型", "战士"); // 语义属性
airbridgeSpecific.addSemanticAttribute("分数", 20.0f); // 语义属性
// 添加 Airbridge 特定属性
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific);
// 添加自定义属性
analyticsAttributes.addCustomAttribute("key1", "value1");
analyticsAttributes.addCustomAttribute("key2", "value2");
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes);
API 參考: HIVEAnalytics:sendEventWithAttributes
#import <HIVEService/HIVEService-Swift.h>
HiveAnalyticsAttributes* analyticsAttributes = [[HiveAnalyticsAttributes alloc] init];
HiveAirbridgeSpecific* airbridgeSpecific = [[HiveAirbridgeSpecific alloc] init];
[airbridgeSpecific setSemanticAction: @"Tool"];
[airbridgeSpecific setSemanticAction: @"Hammer"];
[airbridgeSpecific setSemanticValue: 10.0f];
[airbridgeSpecific addSemanticAttribute: @"type" value: @"Warrior"];
[airbridgeSpecific addSemanticAttribute: @"score" value: @20.0f];
[analyticsAttributes addModuleSpecificAttribute: airbridgeSpecific];
[analyticsAttributes addCustomAttribute: @"key1" value: @"value1"];
[analyticsAttributes addCustomAttribute: @"key2" value: @"value2"];
[HIVEAnalytics sendEventWithAttributes: @"Quest Complete" attributes: analyticsAttributes];
API 參考: HIVEAnalytics:sendEventWithAttributes
#import HIVEService
// 創建 AnalyticsAttributes
let analyticsAttributes = AnalyticsAttributes()
// Airbridge 的特定属性
let airbridgeSpecific = AirbridgeSpecific()
airbridgeSpecific.setSemanticAction("工具")
airbridgeSpecific.setSemanticLabel("锤子")
airbridgeSpecific.setSemanticValue(10.0)
airbridgeSpecific.addSemanticAttribute("类型", value: "战士")
airbridgeSpecific.addSemanticAttribute("分数", value: 20.0)
// 添加 Airbridge 特定属性
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific)
// 添加自定义属性
analyticsAttributes.addCustomAttribute("key1", value: "value1")
analyticsAttributes.addCustomAttribute("key2", value: "value2")
AnalyticsInterface.sendEventWithAttributes("Quest Complete", attributes: analyticsAttributes)
使用 Singular、Appsflyer、Firebase Analytics 手動追蹤事件¶
- 從每個歸因儀表板獲取所需的密鑰。請參考每個歸因儀表板的指南以了解如何獲取密鑰。
- Singular: 從儀表板獲取 SDK 密鑰和 SDK 密碼密鑰。
- Appsflyer: 前往 AppsFlyer 配置 > 應用設置以獲取開發密鑰。
- Firebase Analytics: 不需要密鑰。
-
根據下面的指南配置 hive_config.xml。欲了解更多詳細信息,請參見下面的示例代碼。如果您使用 AppsFlyer 歸因與 Hive SDK iOS(原生、Unity、Unreal),則需要為 Apple AppID 設置
itunseConnectAppId
。<providers> <!-- 配置 Singular --> <!-- Singular 節點的名稱字段固定為 "Singular." --> <!-- 事件節點的名稱字段由遊戲工作室定義。但一旦設置,它應該與 sendEvent() 請求的所有其他市場歸因的名稱字段相同。--> <!-- 事件節點的值字段由遊戲工作室定義。 --> <Singular name="Singular" id="SDK_KEY" key="SDK_SECRET_KEY"> <events> <event name="TutorialComplete" value="教程完成"/> <event name="MissionClear" value="任務清除"/> </events> </Singular> <!-- 配置 AppsFlyer --> <!-- AppsFlyer 節點的名稱字段固定為 "AppsFlyer." --> <!-- 不要設置 AppsFlyer 節點的 id 字段。 --> <!-- 事件節點的名稱字段由遊戲工作室定義。但一旦設置,應該與 sendEvent() 請求的所有其他行銷歸因的名稱字段相同。--> <!-- 事件節點的值字段由遊戲工作室定義。 --> <AppsFlyer name="AppsFlyer" id="unused" key="DEV_KEY" itunseConnectAppId="909923112"> <events> <event name="TutorialComplete" value="教程完成"/> <event name="MissionClear" value="任務清除"/> </events> </AppsFlyer> <!-- 配置 Firebase 分析 --> <!-- 事件节点的名称字段由游戏工作室定义。但一旦设置,它应该与 sendEvent() 请求的所有其他营销归因的名称字段相同。--> <!-- 事件节点的值字段由游戏工作室定义。 --> <firebase> <events> <event name="TutorialComplete" value="TutorialComplete"/> <event name="MissionClear" value="MissionClear"/> </events> </firebase> </providers>
-
呼叫分析 API sendEvent() 以發送事件。在發送事件時,請在 hive_config.xml 中使用
事件名稱
。名稱
用作 sendEvent() 的請求參數,而您設置的值
將在每個歸因的儀表板上更新。Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
透過 sendEvent() 發送事件¶
建議僅在用戶活動滿足特定條件時,例如完成教程,才向歸因發送跟踪事件。在Analytics類中調用sendEvent()
方法以發送跟踪事件。作為sendEvent()
的第一個參數,輸入在hive_config.xml文件中定義的<event>
元素的name
屬性的值。
以下是示範代碼,發送 TutorialComplete 事件到行銷歸因,以通知用戶已完成教程。
API 參考: hive.Analytics.sendEvent
API 參考: Analytics::sendEvent
API 參考: Analytics.sendEvent
API 參考: AnalyticsInterface .sendEvent
API 參考: HIVEAnalytics:sendEvent
API 參考: AnalyticsInterface.sendEvent
在 Firebase 環境中應用 Google Ads 裝置測量¶
要在 Firebase 環境中測量 Google Ads 提供的設備內轉換,您需要實現 Firebase Google ODM 解決方案。此解決方案需要用戶同意提供的電子郵件地址或電話號碼。在實施此解決方案的過程中,如果實施了 Firebase 身份驗證或開發者引入的單獨身份驗證環境,則 Hive SDK 不會收集電子郵件地址,而是將身份驗證後獲得的任何電子郵件地址直接傳遞給 Firebase API。
Note
本指南僅適用於 iOS 應用程式。Android 應用程式不需要在 Firebase 環境中進行設備轉換測量的單獨過程。
實施方法¶
在下面的整个过程中,您必须确保用户设备上的个人识别信息不会泄露到外部。
- 下載 Google Firebase ODM Unity 插件 並將其添加到您的 Unity 項目中。
- 實現身份驗證以在登錄後獲取 IdP 電子郵件地址或電話號碼。
- 根據 Firebase 定義的方法 對電子郵件地址或電話號碼進行標準化。
- 實現將標準化的電子郵件地址/電話號碼傳遞給 Firebase。或者,實現將標準化的電子郵件地址/電話號碼的哈希值傳遞給 Firebase。請參考下面的 示例代碼。
Note
插件 API 可以按顺序调用,但 后续调用在每个用户调用一次后基本上会被忽略。
示例代碼¶
以下是使用 Unity 插件時的示例代碼。
使用哈希值的示例代码¶
使用純值的範例代碼¶
<