에어브릿지 유니티 SDK의 업데이트에 필요한 사항을 확인할 수 있습니다. 현재 버전 이후부터 업데이트 이후 버전까지의 사항을 모두 확인하는 것을 권장합니다.
에어브릿지 유니티 SDK v4.5.0 업데이트 시, 안드로이드 딥링크 Intent Filter 설정이 /Assets/Plugins/Android/AndroidManifest.xml에서 /Assets/Plugins/Android/Airbridge.androidlib/AndroidManifest.xml로 이동했습니다. 기존 위치의 Intent Filter는 수동으로 제거해 주시기 바랍니다.
에어브릿지 유니티 SDK를 v4.0으로 업데이트하면 확인해 주세요.
주의하세요
에어브릿지 유니티 SDK를 v1.x.x에서 v4.0.0으로 업데이트 하는 경우, 기존에 임포트한 아래에 해당하는 폴더들을 먼저 제거하고 에어브릿지 유니티 SDK v4.0.0 패키지를 추가해 주세요.
Assets/Airbridge
Assets/Plugins/Airbridge
Assets/Airbridge/Resources/AirbridgeData.asset 의 키값이 변경되었습니다. 아래와 같이 키값을 변경해 주세요.
AirbridgeUnity.StartTracking 함수가 Airbridge.StartTracking 함수로 대체되었습니다.
- AirbridgeUnity.StartTracking();
+ Airbridge.StartTracking();AirbridgeUnity.StopTracking 함수가 Airbridge.StopTracking 함수로 대체되었습니다.
- AirbridgeUnity.StopTracking();
+ Airbridge.StopTracking();AirbridgeUnity.SetDeeplinkCallback 함수가 Airbridge.SetOnDeeplinkReceived 함수로 대체되었습니다.
public class AirbridgeManager : MonoBehaviour
{
private void Awake()
{
- AirbridgeUnity.SetDeeplinkCallback(gameObject.name);
+ Airbridge.SetOnDeeplinkReceived((string url) =>
+ {
+ // show proper content
+ });
}
- // Method will call by Airbridge when deeplink detected
- private void OnTrackingLinkResponse(string url)
- {
- // show proper content
- }
}안드로이드의 AirbridgeUnity.processDeeplinkData 함수가 AirbridgeUnity.processHandleDeeplink 함수로 대체되었습니다.
package co.ab180.airbridge.unity;
@Override
protected void onResume() {
super.onResume();
- AirbridgeUnity.processDeeplinkData(getIntent());
+ AirbridgeUnity.processHandleDeeplink(getIntent());
}v1.x 에서는 하나의 커스텀 도메인만 입력할 수 있었지만, v4.0 부터는 여러 개의 커스텀 도메인을 입력할 수 있습니다.
주의하세요
기존
AirbridgeEvent.SetTotalValue대신AirbridgeAttribute.VALUE에 값을 입력해 주세요.
totalValue를 사용하고value를 정의하면totalValue가value를 덮어 쓰는 로직은 Unity SDK v4.0.0부터 삭제되었습니다.
AirbridgeUnity.TrackEvent 함수가 Airbridge.TrackEvent 함수로 대체되었습니다.
아래 예시코드를 따라 AirbridgeUnity.TrackEvent 함수를 Airbridge.TrackEvent함수로 변경해 주세요.
- AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.ORDER_COMPLETED);
- // action
- @event.SetAction("Tool");
- // label
- @event.SetLabel("Hammer");
- // value
- @event.SetValue(10);
-
- // semantic attribute (provided by sdk)
- @event.SetCurrency("USD");
-
- List<Airbridge.Ecommerce.Product> products = new List<Airbridge.Ecommerce.Product>();
- Airbridge.Ecommerce.Product plasticHammer = new Airbridge.Ecommerce.Product();
- // semantic attribute value (provided by sdk)
- plasticHammer.SetId("12345");
- // semantic attribute value (not provided by sdk)
- plasticHammer.AddData("name", "PlasticHammer");
- products.Add(plasticHammer);
- @event.SetProducts(products.ToArray());
-
- // semantic attribute (not provided by sdk)
- @event.AddSemanticAttribute("totalQuantity", 1);
-
- // custom attribute
- @event.AddCustomAttribute("promotion", "FirstPurchasePromotion");
+ Airbridge.TrackEvent(
+ category: AirbridgeCategory.ORDER_COMPLETED,
+ semanticAttributes: new Dictionary<string, object>()
+ {
+ // action
+ { AirbridgeAttribute.ACTION, "Tool" },
+ // label
+ { AirbridgeAttribute.LABEL, "Hammer" },
+ // value
+ { AirbridgeAttribute.VALUE, 10 },
+ // semantic attribute (provided by sdk)
+ { AirbridgeAttribute.CURRENCY, "USD" },
+ {
+ AirbridgeAttribute.PRODUCTS, new List<Dictionary<string, object>>()
+ {
+ new Dictionary<string, object>()
+ {
+ // semantic attribute value (provided by sdk)
+ { AirbridgeAttribute.PRODUCT_ID, "12345" },
+ // semantic attribute value (not provided by sdk)
+ { "name", "PlasticHammer" }
+ }
+ }
+ },
+ // semantic attribute (not provided by sdk)
+ { "totalQuantity", 1 }
+ },
+ customAttributes: new Dictionary<string, object>()
+ {
+ // custom attribute
+ { "promotion", "FirstPurchasePromotion" }
+ }
+);주의하세요
AirbridgeEvent클래스는 제거되었습니다.Airbridge.TrackEvent함수의 첫 번째 파라미터에 AirbridgeEvent 생성자에 포함되는category정보가 포함되어야 합니다.Airbridge.TrackEvent함수의 두 번째 파라미터에AirbridgeEvent.SetAction,AirbridgeEvent.SetLabel,AirbridgeEvent.SetValue,Semantic Attributes값들이 포함되어야 합니다.
Airbridge.TrackEvent함수의 세 번째 파라미터에Custom Attributes값들이 포함되어야 합니다.
AirbridgeUnity.SetUser 함수가 Airbridge.SetUser 관련 함수로 대체되었습니다. 유저 정보를 한 번에 설정하는 SetUser 함수는 지원하지 않습니다.
- AirbridgeUser user = new AirbridgeUser();
- user.SetId("personID");
- user.SetEmail("persondoe@airbridge.io");
- user.SetPhoneNumber("1(123)123-1234");
- user.SetAttribute("key", "value");
- user.SetAlias("key", "value");
- AirbridgeUnity.SetUser(user);
+ Airbridge.SetUserID("personID");
+ Airbridge.SetUserEmail("persondoe@airbridge.io");
+ Airbridge.SetUserPhone("1(123)123-1234");
+ Airbridge.SetUserAttribute("key", "value");
+ Airbridge.SetUserAlias("key", "value");AirbridgeUnity.ImpressionTrackingLink 함수가 Airbridge.Impression 함수로 대체되었습니다.
- AirbridgeUnity.ImpressionTrackingLink("https://abr.ge/~~~");
+ Airbridge.Impression(
+ trackingLink: "https://abr.ge/~~~",
+ onSuccess: () =>
+ {
+ // Handle on success
+ },
+ onFailure: (Exception exception) =>
+ {
+ // Handle on failure
+ }
+);AirbridgeUnity.ClickTrackingLink 함수가 Airbridge.Click 함수로 대체되었습니다.
- AirbridgeUnity.ClickTrackingLink("https://abr.ge/~~~");
+ Airbridge.Click(
+ trackingLink: "https://abr.ge/~~~",
+ onSuccess: () =>
+ {
+ // Handle on success
+ },
+ onFailure: (Exception exception) =>
+ {
+ // Handle on failure
+ }
+);AirbridgeUnity.SetOnAttributionReceived 함수가 Airbridge.SetOnAttributionReceived 함수로 대체되었습니다.
public class AirbridgeManager : MonoBehaviour
{
private void Awake()
{
- AirbridgeUnity.SetOnAttributionReceived(gameObject.name);
+ Airbridge.SetOnAttributionReceived((Dictionary<string, object> attributionResult) =>
+ {
+ // using attribution
+ });
}
- // Method will call by Airbridge when attribution result received
- private void OnAttributionResultReceived(string data)
- {
- // using attribution
- }
}- AirbridgeUnity.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
+ Airbridge.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
- AirbridgeUnity.RemoveDeviceAlias("DELETE_THIS_KEY");
+ Airbridge.RemoveDeviceAlias("DELETE_THIS_KEY");
- AirbridgeUnity.ClearDeviceAlias();
+ Airbridge.ClearDeviceAlias();- bool isSDKEnabled = AirbridgeUnity.IsSDKEnabled();
+ bool isSDKEnabled = Airbridge.IsSDKEnabled();AirbridgeUnity.CreateWebInterface 함수가 Airbridge.CreateWebInterfaceScript , Airbridge.HandleWebInterfaceCommand 함수로 대체되었습니다.
private WebViewObject webViewObject;
string postMessageScript;
- AirbridgeWebInterface webInterface;
void Start()
{
string PostMessageGenerator(string arg) =>
$@"
if (window && window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.unityControl) {{
window.webkit.messageHandlers.unityControl.postMessage({arg});
}} else {{
var iframe = document.createElement('IFRAME');
iframe.setAttribute('src', 'unity:' + {arg});
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}}";
- webInterface = AirbridgeUnity.CreateWebInterface(WebViewController.WebToken, (string command) => PostMessageGenerator(command));
- postMessageScript = webInterface.Script;
+ postMessageScript = Airbridge.CreateWebInterfaceScript(WebViewController.WebToken, PostMessageGenerator("payload"));
try
{
webViewObject.Init(
cb: (msg) =>
{
- webInterface.Handle(msg);
+ Airbridge.HandleWebInterfaceCommand(msg);
},
...
ld: (msg) =>
{
webViewObject.EvaluateJS(postMessageScript);
}
...
);
webViewObject.LoadURL("https://...");
}
catch (System.Exception e)
{
...
}
}Airbridge Settings (v1) | Airbridge Settings (v4) | 변경점 |
|---|---|---|
App Name | App Name | - |
App Token | App Token | - |
Log Level | Log Level | - |
iOS URI Scheme | iOS URI Scheme | - |
Android URI Scheme | Android URI Scheme | - |
Custom Domain | Custom Domain | 다중 입력 지원 기능이 추가되었습니다. |
Session Timeout Seconds | Session Timeout Seconds | - |
User Info Hash Enabled | User Info Hash Enabled | - |
Location Collection Enabled | Location Collection Enabled | - |
Track Airbridge Link Only | Track Airbridge Link Only | - |
Auto Start Tracking Enabled | Auto Start Tracking Enabled | - |
Facebook Deferred App Link Enabled | Facebook Deferred App Link Enabled | - |
iOS Tracking Authorize Timeout Seconds | iOS Tracking Authorize Timeout Seconds | - |
Sdk Signature Secret ID | SDK Signature Secret ID | 이름이 변경되었습니다. |
Sdk Signature Secret | SDK Signature Secret | 이름이 변경되었습니다. |
- | Track In Session Life Cycle Event Enabled | 새로운 기능이 추가되었습니다. |
- | Pause Event Transmit On Background Enabled | 새로운 기능이 추가되었습니다. |
- | Clear Event Buffer On Initialize Enabled | 새로운 기능이 추가되었습니다. |
- | SDK Enabled | 새로운 기능이 추가되었습니다. |
- | App Market Identifier | 새로운 기능이 추가되었습니다. |
- | Event Buffer Count Limit | 새로운 기능이 추가되었습니다. |
- | Event Buffer Size Limit In Gibibyte | 새로운 기능이 추가되었습니다. |
- | Event Transmit Interval Seconds | 새로운 기능이 추가되었습니다. |
Meta Install Referrer (Facebook App ID) | Meta Install Referrer (Facebook App ID) | - |
In-App Purchase Environment | - | v4.0.0 에서는 해당 기능을 지원하지 않습니다. |
AirbridgeUnity (v1) | Airbridge (v4) | 변경점 |
|---|---|---|
- | EnableSDK | 새로운 기능이 추가되었습니다. |
- | DisableSDK | 새로운 기능이 추가되었습니다. |
IsSDKEnabled | IsSDKEnabled | - |
StartTracking | StartTracking | - |
StopTracking | StopTracking | - |
- | IsTrackingEnabled | 새로운 기능이 추가되었습니다. |
SetUser | - | User 관련 함수들로 대체되었습니다. |
- | SetUserID | 새로운 기능이 추가되었습니다. |
- | ClearUserID | 새로운 기능이 추가되었습니다. |
- | SetUserEmail | 새로운 기능이 추가되었습니다. |
- | ClearUserEmail | 새로운 기능이 추가되었습니다. |
- | SetUserPhone | 새로운 기능이 추가되었습니다. |
- | ClearUserPhone | 새로운 기능이 추가되었습니다. |
- | SetUserAttribute | 새로운 기능이 추가되었습니다. |
- | RemoveUserAttribute | 새로운 기능이 추가되었습니다. |
- | ClearUserAttributes | 새로운 기능이 추가되었습니다. |
- | SetUserAlias | 새로운 기능이 추가되었습니다. |
- | RemoveUserAlias | 새로운 기능이 추가되었습니다. |
- | ClearUserAlias | 새로운 기능이 추가되었습니다. |
ExpireUser | ClearUser | 이름이 변경되었습니다. |
ClickTrackingLink | Click | 이름이 변경되었습니다. 콜백 기능이 추가되었습니다. |
ImpressionTrackingLink | Impression | 이름이 변경되었습니다. 콜백 기능이 추가되었습니다. |
SetDeeplinkCallback | SetOnDeeplinkReceived | 이름이 변경되었습니다. 값을 람다 형태로 제공받도록 변경되었습니다. |
SetOnAttributionReceived | SetOnAttributionReceived | 값을 람다 형태로 제공받도록 변경되었습니다. |
TrackEvent | TrackEvent | 이벤트 정보를 입력받는 방식이 변경되었습니다. |
SetDeviceAlias | SetDeviceAlias | - |
RemoveDeviceAlias | RemoveDeviceAlias | - |
ClearDeviceAlias | ClearDeviceAlias | - |
RegisterPushToken | RegisterPushToken | - |
CreateWebInterface | - | WebInterface 관련 함수들로 대체되었습니다. |
- | CreateWebInterfaceScript | 새로운 기능이 추가되었습니다. |
- | HandleWebInterfaceCommand | 새로운 기능이 추가되었습니다. |
FetchAirbridgeGeneratedUUID | FetchAirbridgeGeneratedUUID | 콜백 기능이 추가되었습니다. |
FetchDeviceUUID | FetchDeviceUUID | onFailure 콜백이 추가되었습니다. |
StartInAppPurchaseTracking | - | v4.0.0 에서는 해당 기능을 지원하지 않습니다. |
StopInAppPurchaseTracking | - | v4.0.0 에서는 해당 기능을 지원하지 않습니다. |
SetOnInAppPurchaseReceived | - | v4.0.0 에서는 해당 기능을 지원하지 않습니다. |
- | IsUninstallTrackingNotification | 새로운 기능이 추가되었습니다. |
Airbridge.Constants.CATEGORY (v1) | AirbridgeCategory (v4) | 변경점 |
|---|---|---|
SIGN_UP | SIGN_UP | - |
SIGN_IN | SIGN_IN | - |
SIGN_OUT | SIGN_OUT | - |
VIEW_HOME | - | HOME_VIEWED로 대체되었습니다. |
HOME_VIEWED | HOME_VIEWED | - |
VIEW_SEARCH_RESULT | - | SEARCH_RESULTS_VIEWED로 대체되었습니다. |
SEARCH_RESULTS_VIEWED | SEARCH_RESULTS_VIEWED | - |
VIEW_PRODUCT_LIST | - | PRODUCT_LIST_VIEWED로 대체되었습니다. |
PRODUCT_LIST_VIEWED | PRODUCT_LIST_VIEWED | - |
VIEW_PRODUCT_DETAILS | - | PRODUCT_VIEWED로 대체되었습니다. |
PRODUCT_VIEWED | PRODUCT_VIEWED | - |
ADD_TO_CART | - | ADDED_TO_CART로 대체되었습니다. |
ADDED_TO_CART | ADDED_TO_CART | - |
ORDER_COMPLETE | - | ORDER_COMPLETED로 대체되었습니다. |
ORDER_COMPLETED | ORDER_COMPLETED | - |
ADD_PAYMENT_INFO | ADD_PAYMENT_INFO | - |
ADD_TO_WISHLIST | ADD_TO_WISHLIST | - |
INITIATE_CHECKOUT | INITIATE_CHECKOUT | - |
ORDER_CANCELED | ORDER_CANCELED | - |
START_TRIAL | START_TRIAL | - |
SUBSCRIBE | SUBSCRIBE | - |
UNSUBSCRIBE | UNSUBSCRIBE | - |
AD_IMPRESSION | AD_IMPRESSION | - |
AD_CLICK | AD_CLICK | - |
COMPLETE_TUTORIAL | COMPLETE_TUTORIAL | - |
ACHIEVE_LEVEL | ACHIEVE_LEVEL | - |
UNLOCK_ACHIEVEMENT | UNLOCK_ACHIEVEMENT | - |
RATE | RATE | - |
SHARE | SHARE | - |
SCHEDULE | SCHEDULE | - |
SPEND_CREDITS | SPEND_CREDITS | - |
AirbridgeEvent (v1) | AirbridgeAttribute (v4) | 변경점 |
|---|---|---|
SetAction | ACTION | 상수 키 값으로 변경되었습니다. |
SetLabel | LABEL | 상수 키 값으로 변경되었습니다. |
SetValue | VALUE | 상수 키 값으로 변경되었습니다. |
SetTotalValue | - | VALUE로 대체되었습니다. |
SetCurrency | CURRENCY | 상수 키 값으로 변경되었습니다. |
originalCurrency | ORIGINAL_CURRENCY | 상수 키 값으로 변경되었습니다. |
SetProducts | PRODUCTS | 상수 키 값으로 변경되었습니다. |
SetPeriod | PERIOD | 상수 키 값으로 변경되었습니다. |
SetIsRenewal | IS_RENEWAL | 상수 키 값으로 변경되었습니다. |
SetRenewalCount | RENEWAL_COUNT | 상수 키 값으로 변경되었습니다. |
SetProductListId | PRODUCT_LIST_ID | 상수 키 값으로 변경되었습니다. |
SetCartId | CART_ID | 상수 키 값으로 변경되었습니다. |
SetTransactionId | TRANSACTION_ID | 상수 키 값으로 변경되었습니다. |
SetTransactionType | TRANSACTION_TYPE | 상수 키 값으로 변경되었습니다. |
SetTransactionPairedEventCategory | TRANSACTION_PAIRED_EVENT_CATEGORY | 상수 키 값으로 변경되었습니다. |
SetTransactionPairedEventTimestamp | TRANSACTION_PAIRED_EVENT_TIMESTAMP | 상수 키 값으로 변경되었습니다. |
SetTotalQuantity | TOTAL_QUANTITY | 상수 키 값으로 변경되었습니다. |
SetQuery | QUERY | 상수 키 값으로 변경되었습니다. |
SetInAppPurchased | IN_APP_PURCHASED | 상수 키 값으로 변경되었습니다. |
SetContributionMargin | CONTRIBUTION_MARGIN | 상수 키 값으로 변경되었습니다. |
SetOriginalContributionMargin | ORIGINAL_CONTRIBUTION_MARGIN | 상수 키 값으로 변경되었습니다. |
SetListId | LIST_ID | 상수 키 값으로 변경되었습니다. |
SetRateId | RATE_ID | 상수 키 값으로 변경되었습니다. |
SetRate | RATE | 상수 키 값으로 변경되었습니다. |
SetMaxRate | MAX_RATE | 상수 키 값으로 변경되었습니다. |
SetAchievementId | ACHIEVEMENT_ID | 상수 키 값으로 변경되었습니다. |
SetSharedChannel | SHARED_CHANNEL | 상수 키 값으로 변경되었습니다. |
SetDatetime | DATE_TIME | 상수 키 값으로 변경되었습니다. |
SetDescription | DESCRIPTION | 상수 키 값으로 변경되었습니다. |
SetIsRevenue | IS_REVENUE | 상수 키 값으로 변경되었습니다. |
SetPlace | PLACE | 상수 키 값으로 변경되었습니다. |
SetScheduleId | SCHEDULE_ID | 상수 키 값으로 변경되었습니다. |
SetType | TYPE | 상수 키 값으로 변경되었습니다. |
SetLevel | LEVEL | 상수 키 값으로 변경되었습니다. |
SetScore | SCORE | 상수 키 값으로 변경되었습니다. |
- | AD_PARTNERS | 새로운 기능이 추가되었습니다. |
- | IS_FIRST_PER_USER | 새로운 기능이 추가되었습니다. |
Airbridge.Ecommerce.Product (v1) | AirbridgeAttribute (v4) | 변경점 |
|---|---|---|
SetId | PRODUCT_ID | 상수 키 값으로 변경되었습니다. |
SetName | PRODUCT_NAME | 상수 키 값으로 변경되었습니다. |
SetPrice | PRODUCT_PRICE | 상수 키 값으로 변경되었습니다. |
SetQuantity | PRODUCT_QUANTITY | 상수 키 값으로 변경되었습니다. |
SetCurrency | PRODUCT_CURRENCY | 상수 키 값으로 변경되었습니다. |
SetPosition | PRODUCT_POSITION | 상수 키 값으로 변경되었습니다. |
SetCategoryId | PRODUCT_CATEGORY_ID | 상수 키 값으로 변경되었습니다. |
SetCategoryName | PRODUCT_CATEGORY_NAME | 상수 키 값으로 변경되었습니다. |
SetBrandId | PRODUCT_BRAND_ID | 상수 키 값으로 변경되었습니다. |
SetBrandName | PRODUCT_BRAND_NAME | 상수 키 값으로 변경되었습니다. |
AirbridgeUnity (v1) | AirbridgeUnity (v4) | 변경점 |
|---|---|---|
processDeeplinkData | processHandleDeeplink | 이름이 변경되었습니다. |
AirbridgeData.asset (v1) | AirbridgeData.asset (v4) |
|---|---|
iosUriScheme | iOSURIScheme |
public class AirbridgeManager : MonoBehaviour
{
private void Awake()
{
- AirbridgeUnity.SetDeeplinkCallback(gameObject.name);
+ Airbridge.SetOnDeeplinkReceived((string url) =>
+ {
+ // show proper content
+ });
}
- // Method will call by Airbridge when deeplink detected
- private void OnTrackingLinkResponse(string url)
- {
- // show proper content
- }
}package co.ab180.airbridge.unity;
@Override
protected void onResume() {
super.onResume();
- AirbridgeUnity.processDeeplinkData(getIntent());
+ AirbridgeUnity.processHandleDeeplink(getIntent());
}- AirbridgeEvent @event = new AirbridgeEvent(Airbridge.Constants.CATEGORY.ORDER_COMPLETED);
- // action
- @event.SetAction("Tool");
- // label
- @event.SetLabel("Hammer");
- // value
- @event.SetValue(10);
-
- // semantic attribute (provided by sdk)
- @event.SetCurrency("USD");
-
- List<Airbridge.Ecommerce.Product> products = new List<Airbridge.Ecommerce.Product>();
- Airbridge.Ecommerce.Product plasticHammer = new Airbridge.Ecommerce.Product();
- // semantic attribute value (provided by sdk)
- plasticHammer.SetId("12345");
- // semantic attribute value (not provided by sdk)
- plasticHammer.AddData("name", "PlasticHammer");
- products.Add(plasticHammer);
- @event.SetProducts(products.ToArray());
-
- // semantic attribute (not provided by sdk)
- @event.AddSemanticAttribute("totalQuantity", 1);
-
- // custom attribute
- @event.AddCustomAttribute("promotion", "FirstPurchasePromotion");
+ Airbridge.TrackEvent(
+ category: AirbridgeCategory.ORDER_COMPLETED,
+ semanticAttributes: new Dictionary<string, object>()
+ {
+ // action
+ { AirbridgeAttribute.ACTION, "Tool" },
+ // label
+ { AirbridgeAttribute.LABEL, "Hammer" },
+ // value
+ { AirbridgeAttribute.VALUE, 10 },
+ // semantic attribute (provided by sdk)
+ { AirbridgeAttribute.CURRENCY, "USD" },
+ {
+ AirbridgeAttribute.PRODUCTS, new List<Dictionary<string, object>>()
+ {
+ new Dictionary<string, object>()
+ {
+ // semantic attribute value (provided by sdk)
+ { AirbridgeAttribute.PRODUCT_ID, "12345" },
+ // semantic attribute value (not provided by sdk)
+ { "name", "PlasticHammer" }
+ }
+ }
+ },
+ // semantic attribute (not provided by sdk)
+ { "totalQuantity", 1 }
+ },
+ customAttributes: new Dictionary<string, object>()
+ {
+ // custom attribute
+ { "promotion", "FirstPurchasePromotion" }
+ }
+);- AirbridgeUser user = new AirbridgeUser();
- user.SetId("personID");
- user.SetEmail("persondoe@airbridge.io");
- user.SetPhoneNumber("1(123)123-1234");
- user.SetAttribute("key", "value");
- user.SetAlias("key", "value");
- AirbridgeUnity.SetUser(user);
+ Airbridge.SetUserID("personID");
+ Airbridge.SetUserEmail("persondoe@airbridge.io");
+ Airbridge.SetUserPhone("1(123)123-1234");
+ Airbridge.SetUserAttribute("key", "value");
+ Airbridge.SetUserAlias("key", "value");- AirbridgeUnity.ImpressionTrackingLink("https://abr.ge/~~~");
+ Airbridge.Impression(
+ trackingLink: "https://abr.ge/~~~",
+ onSuccess: () =>
+ {
+ // Handle on success
+ },
+ onFailure: (Exception exception) =>
+ {
+ // Handle on failure
+ }
+);- AirbridgeUnity.ClickTrackingLink("https://abr.ge/~~~");
+ Airbridge.Click(
+ trackingLink: "https://abr.ge/~~~",
+ onSuccess: () =>
+ {
+ // Handle on success
+ },
+ onFailure: (Exception exception) =>
+ {
+ // Handle on failure
+ }
+);public class AirbridgeManager : MonoBehaviour
{
private void Awake()
{
- AirbridgeUnity.SetOnAttributionReceived(gameObject.name);
+ Airbridge.SetOnAttributionReceived((Dictionary<string, object> attributionResult) =>
+ {
+ // using attribution
+ });
}
- // Method will call by Airbridge when attribution result received
- private void OnAttributionResultReceived(string data)
- {
- // using attribution
- }
}- AirbridgeUnity.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
+ Airbridge.SetDeviceAlias("ADD_YOUR_KEY", "AND_YOUR_VALUE");
- AirbridgeUnity.RemoveDeviceAlias("DELETE_THIS_KEY");
+ Airbridge.RemoveDeviceAlias("DELETE_THIS_KEY");
- AirbridgeUnity.ClearDeviceAlias();
+ Airbridge.ClearDeviceAlias();private WebViewObject webViewObject;
string postMessageScript;
- AirbridgeWebInterface webInterface;
void Start()
{
string PostMessageGenerator(string arg) =>
$@"
if (window && window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.unityControl) {{
window.webkit.messageHandlers.unityControl.postMessage({arg});
}} else {{
var iframe = document.createElement('IFRAME');
iframe.setAttribute('src', 'unity:' + {arg});
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}}";
- webInterface = AirbridgeUnity.CreateWebInterface(WebViewController.WebToken, (string command) => PostMessageGenerator(command));
- postMessageScript = webInterface.Script;
+ postMessageScript = Airbridge.CreateWebInterfaceScript(WebViewController.WebToken, PostMessageGenerator("payload"));
try
{
webViewObject.Init(
cb: (msg) =>
{
- webInterface.Handle(msg);
+ Airbridge.HandleWebInterfaceCommand(msg);
},
...
ld: (msg) =>
{
webViewObject.EvaluateJS(postMessageScript);
}
...
);
webViewObject.LoadURL("https://...");
}
catch (System.Exception e)
{
...
}
}도움이 되었나요?