이벤트 수동 추적¶
Hive SDK에서는 자동으로 추적하는 이벤트(Install, Open, Update, Purchase) 외에도 필요한 이벤트를 각 어트리뷰션 대시보드에 등록하여 수동으로 추적할 수 있습니다. 예를 들어 게임 튜토리얼 완료 시(TutorialComplete) 또는 특정 미션 달성 시(MissionClear)와 같이 특정한 상황을 추적할 수 있습니다. 이벤트 수동 추적은 이벤트 자동 추적 설정을 완료한 다음에 진행해야 합니다.
Adjust로 이벤트 수동으로 추적하기¶
- 원하는 커스텀 이벤트를 Adjust 대시보드에 등록하고 앱 토큰과 이벤트 토큰을 얻어야 합니다. 앱 토큰은 대시보드 메인에서, 이벤트 토큰은 대시보드 > All Settings > Events에서 확인합니다. 토큰 발급 방법에 대해서는 Adjust에서 제공하는 대시보드 안내를 참고하세요.
- 앱 토큰과 이벤트 토큰을 hive_config.xml에 추가합니다. 아래 예제 코드를 참고하세요.
- Adjust 대시보드에서는 앱 스푸핑 방지를 위한 SDK Signature V3를 제공합니다. SDK Signature를 사용하려면 Adjust와의 계약 사항을 확인해야 합니다.
<providers>
<!-- (코드 생략) -->
<!-- Adjust 노드 id 필드는 설정하지 않습니다. -->
<!-- Adjust 노드 name 필드는 "Adjust" 고정값입니다. -->
<!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.-->
<!-- HiveSDK v4 25.0.0부터 Adjust v5를 적용하면서 id, secretId, info1~4 키 설정은 더이상 사용하지 않습니다. -->
<Adjust name="Adjust" key="APP_TOKEN">
<events>
<event name="TutorialComplete" value="TutorialComplete_EVENT_TOKEN" />
<event name="MissionClear" value="MissionClear_EVENT_TOKEN" />
</events>
<!-- (코드 생략) -->
</Adjust>
</providers>
<event>
태그를 사용합니다. <event>
태그 값 중 name
은 API 호출 시 파라미터로 사용되며, value
는 해당 어트리뷰션의 대시보드에서 확인할 수 있습니다. Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
Airbridge로 이벤트 수동으로 추적하기¶
- 필요한 토큰을 발급받습니다. 토큰 발급 방법에 대해서는 Airbridge에서 제공하는 대시보드 안내를 참고하세요.
- 대시보드 > 설정 > 토큰 관리에서 App SDK Token과 App Name을 받습니다.
- hive_config.xml에 토큰과 앱 이름 및 이벤트 설정을 추가합니다. 아래의 hive_config.xml 예제 코드를 참고하세요. Windows 에서는 토큰과 앱 이름 설정은 필요하지 않고 Hive 콘솔 설정이 필요합니다.
- Airbridge에서는 앱 스푸핑 방지를 위한 SDK Signature를 제공합니다. 관련 기능을 사용하려면 우선 Airbridge와의 계약 사항을 확인해야 합니다. 키를 발급받아 hive_config.xml의
secretId
,secret
값으로 추가하세요. SDK 시그니처 보안 정보에 대한 자세한 내용은 에어브릿지 가이드를 참고하세요. Android, iOS에서만 지원하며 Windows에서는 지원하지 않습니다. - Windows와 Android, iOS를 함께 적용하는 경우, 사전 설정과 관련해 Airbridge에 문의하세요.
- Analytics API sendEvent()를 호출하여 이벤트를 전송합니다. 이벤트 전송 시, hive_config.xml에 추가한
<event>
태그를 사용합니다.<event>
태그 값 중name
은 API 호출 시 파라미터로 사용되며,value
는 해당 어트리뷰션의 대시보드에서 확인할 수 있습니다.Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
hive_config.xml 예제 코드¶
<providers>
<!-- (코드 생략) -->
<!-- Airbridge 설정하기 -->
<!--Airbridge 노드 name 필드는 "Airbridge" 고정값입니다. -->
<!--Airbridge 노드 id 필드는 설정하지 않습니다. -->
<!-- event 노드 name, value 필드는 게임사에서 임의로 설정합니다. -->
<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>
Singular, Appsflyer, Firebase Analytics로 이벤트 수동 추적하기¶
Singular, Appsflyer, Firebase Analytics 어트리뷰션으로 이벤트 수동 추적하는 방법을 설명합니다.
- 아래와 같이 각 어트리뷰션의 대시보드에서 필요한 키를 발급받습니다. 키 발급 방법에 대해서는 각 어트리뷰션에서 제공하는 대시보드 가이드를 참고하세요.
- Singular: 대시보드에서 SDK Key와 SDK SecretKey를 받습니다.
- Appsflyer: 대시보드 > 앱 설정에서 Dev 키를 받습니다.
- Firebase Analytics: 키 발급이 필요하지 않습니다.
- hive_config.xml 파일을 아래의 예제와 같이 수정합니다. 특히, Hive SDK Native iOS 혹은 Unity Android & iOS 및 Unreal Engine Android & iOS에서 Appsflyer 어트리뷰션을 사용하는 경우, Apple AppID 설정을 위해
itunseConnectAppId
값을 설정합니다.<providers> <!-- Singular 설정하기 --> <!-- Singular 노드 name 필드는 "Singular" 고정값입니다. --> <!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--> <!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --> <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 노드 name 필드는 "AppsFlyer" 고정값입니다. --> <!-- AppsFlyer 노드 id 필드는 설정하지 않습니다. --> <!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--> <!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --> <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 설정하기 --> <!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--> <!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --> <firebase> <events> <event name="TutorialComplete" value="TutorialComplete" /> <event name="MissionClear" value="MissionClear" /> </events> </firebase> </providers>
- Analytics API sendEvent()를 호출하여 이벤트를 전송합니다. 이벤트 전송 시, hive_config.xml에 추가한
<event>
태그 값을 전달 인자로 사용하여 이벤트를 전송합니다.<event>
태그 값 중name
은 API 호출 시 파라미터로 사용되며,value
는 해당 어트리뷰션의 대시보드에서 확인할 수 있습니다.Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
sendEvent()로 이벤트 전송하기¶
어트리뷰션에 유저의 행동을 추적하는 이벤트를 전송하는 방법을 설명합니다.
어트리뷰션에 추적 이벤트 전송 시, 유저의 모든 행동을 추적하기 보다는 '튜토리얼 완료'와 같이 유저의 행동이 특정 조건을 만족시켰을 때 전송하는 것을 권장합니다.
유저 행동 추적 이벤트를 전송하려면 Analytics API의 sendEvent()
함수를 호출하세요. sendEvent()
함수의 첫 번째 파라미터 값은 hive_config.xml 설정 파일에 정의한 <event>
요소의 name
속성 값으로 입력합니다.
유저가 튜토리얼을 완료 시, 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
sendEventWithAttributes()로 추가 어트리뷰트 전송하기¶
sendEvent()
대신 sendEventWithAttributes()
함수를 호출하는 경우, 사용자가 정의한 어트리뷰트를 추가하여 전송할 수 있습니다.
sendEventWithAttributes()
함수의 첫 번째 파라미터 값은 hive_config.xml 설정 파일에 정의한 <event>
요소의 name
속성 값으로 입력합니다.
커스텀 어트리뷰트 추가하기¶
addCustomAttribute()
를 호출하여 Hive SDK에서 지원하는 모든 마케팅 어트리뷰션(Airbridge, Adjust, Appsflyer, Singular, Firebase Analytics)에 커스텀 어트리뷰트를 추가하여 전송할 수 있습니다.
Note
커스텀 어트리뷰트(Custom Attribute)란 사용자가 정의한 속성으로 String, Int, Float, Double, Boolean 데이터 형식을 지원합니다. 단, Adjust로 전송하는 경우 데이터 형식과 관계 없이 모든 데이터 형식을 String으로 변환하여 전송합니다.
커스텀 어트리뷰트 추가하여 전송하는 예제 코드는 아래와 같습니다.
API Reference: hive.Analytics.sendEventWithAttributes
using hive;
// Create AnalyticsAttributes
var analyticsAttributes = new AnalyticsAttributes();
// Add Custom Attribute
analyticsAttributes.AddCustomAttribute("key1", "value1");
analyticsAttributes.AddCustomAttribute("key2", "value2");
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes);
#include "HiveAnalytics.h"
// Create AnalyticsAttributes
FHiveAnalyticsAttributes AnalyticsAttributes;
// Add Custom Attribute
TSharedPtr<FJsonValue> CustomJsonValue1 = MakeShareable(new FJsonValueString("value1"));
AnalyticsAttributes.AddCustomAttribute(TEXT("key1"), CustomJsonValue1);
TSharedPtr<FJsonValue> CustomJsonValue2 = MakeShareable(new FJsonValueString("value2"));
AnalyticsAttributes.AddCustomAttribute(TEXT("key2"), CustomJsonValue2);
FHiveAnalytics::SendEventWithAttributes(strEventName, AnalyticsAttributes);
API Reference: Analytics::sendEventWithAttributes
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Create AnalyticsAttributes
AnalyticsAttributes analyticsAttributes;
// Add Custom Attribute
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
// Create AnalyticsAttributes
val analyticsAttributes = AnalyticsAttributes()
// Add Custom Attribute
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;
// Create AnalyticsAttributes
AnalyticsAttributes analyticsAttributes = new AnalyticsAttributes();
// Add Custom Attribute
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];
[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
// Create AnalyticsAttributes
let analyticsAttributes = AnalyticsAttributes()
// Add Custom Attribute
analyticsAttributes.addCustomAttribute("key1", value: "value1")
analyticsAttributes.addCustomAttribute("key2", value: "value2")
AnalyticsInterface.sendEventWithAttributes("Quest Complete", attributes: analyticsAttributes)
Airbridge에 시맨틱 어트리뷰트 전송하기¶
Airbridge에 추가 어트리뷰트 전송 시, 커스텀 어트리뷰트 외에도 아래와 같은 시맨틱 어트리뷰트를 추가하여 전송할 수 있습니다.
- 액션(Action), 라벨(Label): Airbridge 리포트에서 그룹바이로 활용할 수 있는 정보를 수집합니다.
- 밸류(Value): 매출 분석에 활용하는 정보를 수집합니다.
- 시맨틱 어트리뷰트(Semantic Attribute): Airbridge에서 미리 정의한 어트리뷰트입니다.
- 미리 정의한 어트리뷰트 이외의 어트리뷰트 문자열을 입력하는 경우 수집되지 않을 수 있습니다.
- 시맨틱 어트리뷰트의 데이터 형식에 맞지 않는 데이터가 있는 이벤트는 수집되지 않습니다. 시맨틱 어트리뷰트마다 데이터 형식이 다르기 때문에 주의해야 합니다.
- 데이터 형식이 string인 시맨틱 어트리뷰트는 최대 1024자까지 허용합니다. 데이터 형식이 int, float인 시맨틱 어트리뷰트는 최대 64비트까지 허용합니다.
API Reference: hive.Analytics.sendEventWithAttributes
using hive;
// Create AnalyticsAttributes
var analyticsAttributes = new AnalyticsAttributes();
// Specific Attribute for Airbridge
var airbridgeSpecific = new AirbridgeSpecific();
// Action
airbridgeSpecific.SetSemanticAction("Tool");
// Label
airbridgeSpecific.SetSemanticLabel("Hammer");
// Value
airbridgeSpecific.SetSemanticValue(10);
// Semantic Attribute
airbridgeSpecific.AddSemanticAttribute("type", "Warrior");
airbridgeSpecific.AddSemanticAttribute("score", 20);
// Add Airbridge Specific Attribute
analyticsAttributes.AddModuleSpecificAttributes(airbridgeSpecific);
// Add Custom Attribute
analyticsAttributes.AddCustomAttribute("key1", "value1");
analyticsAttributes.AddCustomAttribute("key2", "value2");
Analytics.sendEventWithAttributes("Quest Complete", analyticsAttributes);
#include "HiveAnalytics.h"
// Create AnalyticsAttributes
FHiveAnalyticsAttributes AnalyticsAttributes;
// Specific Attribute for Airbridge
FHiveAirbridgeSpecific AirbridgeSpecific;
// Action
AirbridgeSpecific.SetSemanticAction(TEXT("Tool"));
// Label
AirbridgeSpecific.SetSemanticLabel(TEXT("Hammer"));
// Value
AirbridgeSpecific.SetSemanticValue(10.0);
// Semantic Attribute
TSharedPtr<FJsonValue> SemanticJsonValue1 = MakeShared<FJsonValueString>(TEXT("Warrior"));
AirbridgeSpecific.AddSemanticAttribute(TEXT("type"), SemanticJsonValue1);
TSharedPtr<FJsonValue> SemanticJsonValue2 = MakeShared<FJsonValueNumber>(20);
AirbridgeSpecific.AddSemanticAttribute(TEXT("score"), SemanticJsonValue2);
// Add Airbridge Specific Attribute
AnalyticsAttributes.AddModuleSpecificAttribute(AirbridgeSpecific);
// Add Custom Attribute
TSharedPtr<FJsonValue> CustomJsonValue1 = MakeShareable(new FJsonValueString("value1"));
AnalyticsAttributes.AddCustomAttribute(TEXT("key1"), CustomJsonValue1);
TSharedPtr<FJsonValue> CustomJsonValue2 = MakeShareable(new FJsonValueString("value2"));
AnalyticsAttributes.AddCustomAttribute(TEXT("key2"), CustomJsonValue2);
FHiveAnalytics::SendEventWithAttributes(strEventName, AnalyticsAttributes);
API Reference: Analytics::sendEventWithAttributes
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
// Create AnalyticsAttributes
AnalyticsAttributes analyticsAttributes;
// Specific Attribute for Airbridge
AirbridgeSpecific airbridgeSpecific;
std::string semanticAction = "Tool";
std::string semanticLabel = "Hammer";
double semanticValue = 10.0;
// Action
airbridgeSpecific.setSemanticAction(semanticAction);
// Label
airbridgeSpecific.setSemanticLabel(semanticLabel);
// Value
airbridgeSpecific.setSemanticValue(semanticValue);
// Semantic Attribute
airbridgeSpecific.addSemanticAttribute("type", picojson::value("Warrior"));
airbridgeSpecific.addSemanticAttribute("score", picojson::value(20.0f));
// Add Airbridge Specific Attribute
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific);
// Add Custom Attribute
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
// Create AnalyticsAttributes
val analyticsAttributes = AnalyticsAttributes()
// Specific Attribute for Airbridge
val airbridgeSpecific = AirbridgeSpecific().apply {
setSemanticAction("Tool") // Action
setSemanticLabel("Hammer") // Label
setSemanticValue(10.0) // Value
addSemanticAttribute("type", "Warrior") // Semantic Attribute
addSemanticAttribute("score", 20.0f) // Semantic Attribute
}
// Add Airbridge Specific Attribute
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific)
// Add Custom Attribute
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;
// Create AnalyticsAttributes
AnalyticsAttributes analyticsAttributes = new AnalyticsAttributes();
// Specific Attribute for Airbridge
AirbridgeSpecific airbridgeSpecific = new AirbridgeSpecific();
airbridgeSpecific.setSemanticAction("Tool"); // Action
airbridgeSpecific.setSemanticLabel("Hammer"); // Label
airbridgeSpecific.setSemanticValue(10.0); // Value
airbridgeSpecific.addSemanticAttribute("type", "Warrior"); // Semantic Attribute
airbridgeSpecific.addSemanticAttribute("score", 20.0f); // Semantic Attribute
// Add Airbridge Specific Attribute
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific);
// Add Custom Attribute
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.0];
[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
// Create AnalyticsAttributes
let analyticsAttributes = AnalyticsAttributes()
// Specific Attribute for 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)
// Add Airbridge Specific Attribute
analyticsAttributes.addModuleSpecificAttribute(airbridgeSpecific)
// Add Custom Attribute
analyticsAttributes.addCustomAttribute("key1", value: "value1")
analyticsAttributes.addCustomAttribute("key2", value: "value2")
AnalyticsInterface.sendEventWithAttributes("Quest Complete", attributes: analyticsAttributes)
Firebase 환경에서 Google Ads Ondevice Measurement 적용하기¶
Firebase 환경에서 Google Ads가 제공하는 기기 내 전환을 측정하려면 Firebase Google ODM 솔루션을 적용해야 합니다. 이 솔루션을 사용하려면 사용자가 제공 동의한 이메일 주소 또는 전화번호가 필요합니다. 이 솔루션을 적용하는 과정에서 Firebase Authentication 또는 개발사가 별도로 도입한 인증 환경을 구현했을 때, Hive SDK는 이메일 주소를 수집하지 않으며 인증 후 얻는 응답값에 이메일 주소가 있다면 이를 Firebase API에 그대로 전달만 합니다.
Note
이 가이드는 iOS앱만을 대상으로 합니다. Android앱은 Firebase 환경에서 기기 내 전환 측정을 위한 별도 과정이 필요하지 않습니다.
적용 방법¶
아래 전체 과정에서 개인 식별 정보가 사용자 기기에서 외부로 유출되지 않도록 해야 합니다.
- Google Firebase ODM Unity 플러그인을 다운로드 후 Unity 프로젝트에 추가합니다.
- 로그인 후 로그인한 IdP 이메일 주소 또는 전화번호를 얻도록 인증을 구현합니다.
- 이메일 주소 또는 전화번호를 Firebase에서 정의한 방법대로 정규화합니다.
- 정규화한 이메일 주소/전화번호를 Firebase에 전달하도록 구현합니다. 또는 정규화한 이메일 주소/전화번호를 해싱한 값을 Firebase에 전달하도록 구현합니다. 아래 예제 코드를 참고하세요.
Note
플러그인 API는 순차적으로 호출할 수 있지만, 사용자별로 한 번 호출하면 후속 호출은 사실상 무시됩니다.
예제 코드¶
다음은 Unity 플러그인 사용 시 예제 코드입니다.