การติดตามเหตุการณ์ด้วยตนเอง
นอกจากการติดตั้ง, เปิด, อัปเดต, และการซื้อ (การซื้อในแอป) ซึ่งถูกติดตามโดยอัตโนมัติโดย Hive SDK คุณสามารถติดตามเหตุการณ์ที่จำเป็นที่คุณต้องการได้ด้วยตนเอง เพื่อทำเช่นนี้ คุณต้องลงทะเบียนเหตุการณ์ไปยังแดชบอร์ดของแต่ละการอ้างอิง ตัวอย่างเช่น คุณสามารถติดตามเหตุการณ์เฉพาะเช่นการเสร็จสิ้นการสอนเกมของคุณ (TutorialComplete) หรือการเสร็จสิ้นวัตถุประสงค์ของภารกิจ (MissionClear) คุณควรดำเนินการติดตามเหตุการณ์ด้วยตนเองหลังจากเสร็จสิ้นการตั้งค่าการติดตามเหตุการณ์อัตโนมัติ
การติดตามเหตุการณ์ด้วยตนเองด้วย Adjust¶
- เพื่อติดตามเหตุการณ์ที่กำหนดเองด้วยตนเอง ลงทะเบียนเหตุการณ์บนแดชบอร์ด Adjust และรับโทเค็นแอปและโทเค็นเหตุการณ์ โทเค็นแอปสามารถรับได้จากหน้าแรกของแดชบอร์ด และโทเค็นเหตุการณ์จากแดชบอร์ด > การตั้งค่าทั้งหมด > เหตุการณ์ ดู คู่มือแดชบอร์ด Adjust เพื่อเรียนรู้วิธีการรับโทเค็น
- เพิ่มโทเค็นแอปและโทเค็นเหตุการณ์ของแต่ละเหตุการณ์ใน hive_config.xml สำหรับรายละเอียดเพิ่มเติม ดูตัวอย่างโค้ดด้านล่าง
-
เพื่อป้องกันการปลอมแปลงแอป แดชบอร์ด Adjust มี SDK Signature เพื่อใช้ฟีเจอร์นี้ คุณต้องตรวจสอบรายละเอียดสัญญา Adjust เพื่อใช้ฟีเจอร์นี้ ให้รับกุญแจที่จำเป็นและเพิ่มลงใน hive_config.xml (
secretId
,info1
,info2
,info3
,info4
).<providers> <!-- (skipped) --> <!-- อย่าตั้งค่าฟิลด์ id ของโหนด Adjust. --> <!-- ฟิลด์ name ของโหนด Adjust ถูกกำหนดให้เป็น "Adjust." --> <!-- ฟิลด์ name ของโหนด event ถูกกำหนดโดยสตูดิโอเกม แต่เมื่อมันถูกตั้งค่าแล้ว มันควรจะเหมือนกันสำหรับฟิลด์ name ของการอ้างอิงการตลาดอื่น ๆ สำหรับคำขอ sendEvent() --> <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> <!-- (skipped) --> </Adjust> </providers>
-
เรียกใช้ Analytics API sendEvent() เพื่อส่งเหตุการณ์ ใช้
event name
ใน hive_config.xml เมื่อคุณส่งเหตุการณ์name
จะถูกใช้เป็นพารามิเตอร์คำขอสำหรับ sendEvent() และvalue
ที่คุณตั้งค่าจะแสดงผลบนแดชบอร์ดของแต่ละการกำหนดค่าAnalytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
การติดตามเหตุการณ์ด้วยตนเองด้วย Airbridge¶
- รับโทเค็นที่จำเป็น สำหรับข้อมูลเกี่ยวกับวิธีการรับโทเค็น โปรดดูที่ คู่มือแดชบอร์ด Airbridge.
- รับ App SDK Token และ App Name จากแดชบอร์ด > การตั้งค่า > การจัดการโทเค็น.
- เพิ่มโทเค็น ชื่อแอป และการตั้งค่าเหตุการณ์ลงใน hive_config.xml โปรดดูที่ ตัวอย่างโค้ด hive_config.xml ด้านล่าง ใน Windows การตั้งค่าโทเค็นและชื่อแอปไม่จำเป็น แต่การตั้งค่า Hive console เป็นสิ่งที่จำเป็น.
- Airbridge ให้บริการ SDK Signature เพื่อป้องกันการปลอมแปลงแอป หากต้องการใช้ฟังก์ชันที่เกี่ยวข้อง คุณต้องตรวจสอบเงื่อนไขสัญญากับ Airbridge ก่อน รับคีย์และเพิ่มเป็น
secretId
และsecret
ใน hive_config.xml. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความปลอดภัยของ SDK signature โปรดดูที่ คู่มือ Airbridge. รองรับเฉพาะ Android และ iOS เท่านั้น ไม่รองรับ Windows. - หากคุณกำลังใช้ Windows, Android และ iOS ร่วมกัน โปรดติดต่อ Airbridge สำหรับการตั้งค่าเริ่มต้น.
- ส่งเหตุการณ์โดยการเรียกใช้ Analytics API sendEvent(). เมื่อส่งเหตุการณ์ ให้ใช้
name
และvalue
ของแท็กevent<
ที่เพิ่มลงใน hive_config.xml.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 Reference: hive.Analytics.sendEventWithAttributes
using hive;
// สร้าง AnalyticsAttributes
var analyticsAttributes = new AnalyticsAttributes();
// คุณสมบัติเฉพาะสำหรับ Airbridge
var airbridgeSpecific = new AirbridgeSpecific();
// การกระทำ
airbridgeSpecific.SetSemanticAction("Tool");
// ป้าย
airbridgeSpecific.SetSemanticLabel("Hammer");
// ค่า
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 Reference: 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 = "Tool";
std::string semanticLabel = "Hammer";
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 Reference: 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("Tool") // การกระทำ
setSemanticLabel("Hammer") // ป้ายชื่อ
setSemanticValue(10.0f) // ค่า
addSemanticAttribute("type", "Warrior") // คุณสมบัติทางความหมาย
addSemanticAttribute("score", 20.0f) // คุณสมบัติทางความหมาย
}
// เพิ่มคุณลักษณะเฉพาะของ Airbridge
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific)
// เพิ่มคุณสมบัติที่กำหนดเอง
analyticsAttributes.addCustomAttribute("key1", "value1")
analyticsAttributes.addCustomAttribute("key2", "value2")
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes)
API Reference: 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("Tool"); // การกระทำ
airbridgeSpecific.setSemanticLabel("Hammer"); // ป้ายชื่อ
airbridgeSpecific.setSemanticValue(10.0f); // ค่า
airbridgeSpecific.addSemanticAttribute("type", "Warrior"); // คุณสมบัติทางความหมาย
airbridgeSpecific.addSemanticAttribute("score", 20.0f); // คุณสมบัติทางความหมาย
// เพิ่มคุณสมบัติเฉพาะของ Airbridge
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific);
// เพิ่มคุณสมบัติที่กำหนดเอง
analyticsAttributes.addCustomAttribute("key1", "value1");
analyticsAttributes.addCustomAttribute("key2", "value2");
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes);
API Reference: 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 Reference: HIVEAnalytics:sendEventWithAttributes
#import HIVEService
// สร้าง AnalyticsAttributes
let analyticsAttributes = AnalyticsAttributes()
// คุณสมบัติเฉพาะสำหรับ Airbridge
let airbridgeSpecific = AirbridgeSpecific()
airbridgeSpecific.setSemanticAction("Tool")
airbridgeSpecific.setSemanticLabel("Hammer")
airbridgeSpecific.setSemanticValue(10.0)
airbridgeSpecific.addSemanticAttribute("type", value: "Warrior")
airbridgeSpecific.addSemanticAttribute("score", 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 Key และ SDK SecretKey จากแดชบอร์ด
- Appsflyer: ไปที่การตั้งค่า AppsFlyer > การตั้งค่าแอปเพื่อรับ Dev key
- Firebase Analytics: ไม่ต้องใช้คีย์
-
ตั้งค่า hive_config.xml ตามคู่มือด้านล่าง สำหรับรายละเอียดเพิ่มเติม ดูตัวอย่างโค้ดด้านล่าง หากคุณใช้การติดตามอ้างอิงของ AppsFlyer กับ Hive SDK iOS (Native, Unity, Unreal) คุณต้องตั้งค่า
itunseConnectAppId
สำหรับ Apple AppID.<providers> <!-- กำหนดสำหรับ Singular --> <!-- ฟิลด์ชื่อของโหนด Singular ถูกกำหนดให้เป็น "Singular." --> <!-- ฟิลด์ชื่อของโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม แต่เมื่อมันถูกตั้งค่าแล้ว มันควรจะเหมือนกันสำหรับฟิลด์ชื่อของการอ้างอิงการตลาดอื่น ๆ ทั้งหมดสำหรับคำขอ sendEvent() --> <!-- ฟิลด์ค่าของโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม --> <Singular name="Singular" id="SDK_KEY" key="SDK_SECRET_KEY"> <events> <event name="TutorialComplete" value="Tutorial Complete"/> <event name="MissionClear" value="Mission Clear"/> </events> </Singular> <!-- กำหนดสำหรับ AppsFlyer --> <!-- ฟิลด์ชื่อของโหนด AppsFlyer ถูกกำหนดให้เป็น "AppsFlyer." --> <!-- อย่าตั้งค่าฟิลด์ id ของโหนด AppsFlyer. --> <!-- ฟิลด์ชื่อของโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม แต่เมื่อมันถูกตั้งค่าแล้ว มันควรจะเหมือนกันสำหรับฟิลด์ชื่อของการอ้างอิงการตลาดอื่น ๆ ทั้งหมดสำหรับคำขอ sendEvent() --> <!-- ฟิลด์ค่าในโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม. --> <AppsFlyer name="AppsFlyer" id="unused" key="DEV_KEY" itunseConnectAppId="909923112"> <events> <event name="TutorialComplete" value="Tutorial Complete"/> <event name="MissionClear" value="Mission Clear"/> </events> </AppsFlyer> <!-- กำหนดสำหรับ Firebase Analytics --> <!-- ฟิลด์ชื่อของโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม แต่เมื่อมันถูกตั้งค่าแล้ว มันควรจะเหมือนกันสำหรับฟิลด์ชื่อของการอ้างอิงการตลาดอื่น ๆ สำหรับคำขอ sendEvent() --> <!-- ฟิลด์ค่าของโหนดเหตุการณ์ถูกกำหนดโดยสตูดิโอเกม --> <firebase> <events> <event name="TutorialComplete" value="TutorialComplete"/> <event name="MissionClear" value="MissionClear"/> </events> </firebase> </providers>
-
เรียกใช้ Analytics API sendEvent() เพื่อส่งเหตุการณ์ ใช้
event name
ใน hive_config.xml เมื่อคุณส่งเหตุการณ์name
จะถูกใช้เป็นพารามิเตอร์คำขอสำหรับ sendEvent() และvalue
ที่คุณตั้งค่าจะแสดงผลบนแดชบอร์ดของแต่ละการอ้างอิงAnalytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
ส่งเหตุการณ์ผ่าน sendEvent()¶
แนะนำให้ส่งเหตุการณ์ติดตามไปยังการระบุเฉพาะเมื่อกิจกรรมของผู้ใช้ตรงตามเงื่อนไขที่กำหนด เช่น การเสร็จสิ้นการสอน เรียกใช้วิธี sendEvent()
ในคลาส Analytics เพื่อส่งเหตุการณ์ติดตาม ในฐานะพารามิเตอร์แรกของ sendEvent()
ให้ป้อนค่าของคุณสมบัติ name
จากองค์ประกอบ <event>
ซึ่งกำหนดไว้ในไฟล์ hive_config.xml
ต่อไปนี้คือตัวอย่างโค้ดที่ส่งเหตุการณ์ TutorialComplete ไปยังการติดตามการตลาดเพื่อแจ้งให้ทราบว่าผู้ใช้ได้ทำการเรียนรู้เสร็จสิ้นแล้ว
API Reference: hive.Analytics.sendEvent
API Reference: Analytics::sendEvent
API Reference: Analytics.sendEvent
API Reference: AnalyticsInterface .sendEvent
API Reference: HIVEAnalytics:sendEvent
API Reference: AnalyticsInterface.sendEvent
การใช้การวัดอุปกรณ์ Google Ads ในสภาพแวดล้อม Firebase¶
ในการวัดการแปลงบนอุปกรณ์ที่ให้โดย Google Ads ในสภาพแวดล้อม Firebase คุณต้องดำเนินการตาม Firebase Google ODM Solution โซลูชันนี้ต้องการที่อยู่อีเมลหรือหมายเลขโทรศัพท์ที่ผู้ใช้ได้ให้ความยินยอมในการให้ ในระหว่างการดำเนินการโซลูชันนี้ หากมีการใช้ Firebase Authentication หรือสภาพแวดล้อมการตรวจสอบสิทธิ์แยกต่างหากที่ผู้พัฒนาแนะนำ SDK Hive จะไม่เก็บที่อยู่อีเมลและจะส่งต่อที่อยู่อีเมลใด ๆ ที่ได้รับในคำตอบหลังจากการตรวจสอบสิทธิ์ไปยัง Firebase API โดยตรง
Note
คู่มือนี้มีไว้สำหรับแอป iOS เท่านั้น แอป Android ไม่จำเป็นต้องมีขั้นตอนแยกต่างหากในการวัดการแปลงในอุปกรณ์ในสภาพแวดล้อม Firebase.
วิธีการดำเนินการ¶
ตลอดทั้งกระบวนการด้านล่างนี้ คุณต้องมั่นใจว่าข้อมูลส่วนบุคคลสำหรับการระบุตัวตนจะต้องไม่รั่วไหลจากอุปกรณ์ของผู้ใช้ไปยังภายนอก
- ดาวน์โหลด Google Firebase ODM Unity Plugin และเพิ่มไปยังโปรเจกต์ Unity ของคุณ
- นำการตรวจสอบสิทธิ์ไปใช้เพื่อรับที่อยู่อีเมล IdP หรือหมายเลขโทรศัพท์หลังจากเข้าสู่ระบบ
- ทำให้ที่อยู่อีเมลหรือหมายเลขโทรศัพท์เป็นมาตรฐาน ตามวิธีที่กำหนดโดย Firebase
- นำการส่งที่อยู่อีเมล/หมายเลขโทรศัพท์ที่เป็นมาตรฐานไปยัง Firebase หรือใช้การส่งค่าที่ถูกแฮชของที่อยู่อีเมล/หมายเลขโทรศัพท์ที่เป็นมาตรฐานไปยัง Firebase แนะนำให้ดู ตัวอย่างโค้ด ด้านล่าง
Note
API ของปลั๊กอินสามารถเรียกใช้ได้ตามลำดับ แต่ การเรียกใช้ครั้งถัดไปจะถูกละเว้นหลังจากถูกเรียกใช้ครั้งเดียวต่อผู้ใช้
ตัวอย่างโค้ด¶
ด้านล่างคือตัวอย่างโค้ดเมื่อใช้ปลั๊กอิน Unity.