Flutter 3.X.X migration guide
변경사항
기존에 2.X.X 버전 에 있던 있던 event 전송 API 가 삭제 되고 아래의 API 로 대체 되었습니다.
static void trackEvent(String category, [ AirbridgeEventOption? option ]) {
event.trackEvent(category, option);
}option 정보는 null 일 수 있고 해당 정보에 action, label, value, customAttributes, semanticAttributes 사용이 가능합니다.
이벤트 설정 에서 자세한 내용을 확인하세요.
2.X.X 버전을 사용하신다면 아래의 Flutter SDK 사용 가이드를 확인 바랍니다.
이벤트 전송 관련 된 API 가 변경 되어 이벤트 전송에 따른 코드를 아래와 같이 변경이 필요합니다.
2.X.X 에서 아래의 method 를 사용 중이라면 trackEvent(String category, [ AirbridgeEventOption? option ]) 로 전환 해야 합니다.
사용자 이벤트 전송 바로가기
회원가입
- Airbridge.event.send(SignUpEvent(user: user));
+ Airbridge.state.setUser(User(
+ ID: ...,
+ email: ...,
+ phone: ...,
+ alias: {},
+ attributes: {},
+ ));
+ Airbridge.trackEvent(AirbridgeCategory.SIGN_UP, option);Airbridge.event.send(SignUpEvent(user: user)) 를 사용하고 있다면 변경이 필요합니다.
매개변수로 전달 하던 user 정보를 Airbridge.state.setUser() 에 채워주고 Airbridge.trackEvent(AirbridgeCategory.SIGN_UP, option) 으로 SIGN_UP 이벤트를 전달합니다.
로그인
- Airbridge.event.send(SignInEvent(user: user));
+ Airbridge.state.setUser(User(
+ ID: ...,
+ email: ...,
+ phone: ...,
+ alias: {},
+ attributes: {},
+ ));
+ Airbridge.trackEvent(AirbridgeCategory.SIGN_IN, option);Airbridge.event.send(SignInEvent(user: user)) 를 사용하고 있다면 변경이 필요합니다.
매개변수로 전달 하던 user 정보를 Airbridge.state.setUser() 에 채워주고 Airbridge.trackEvent(AirbridgeCategory.SIGN_IN, option) 으로 SIGN_IN 이벤트를 전달합니다.
로그아웃
- Airbridge.event.send(SignOutEvent());
+ Airbridge.trackEvent(AirbridgeCategory.SIGN_OUT, option);
+ Airbridge.state.setUser(User());Airbridge.event.send(SignOutEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.SIGN_OUT, option) 으로 SIGN_OUT 이벤트를 전달하고,
Airbridge.state.setUser(()) 에 빈객체를 전달하여 현재 유저정보를 비워주세요.
이커머스 이벤트 전송 바로가기
홈 화면 조회
- Airbridge.event.send(ViewHomeEvent(
- option: ...
- ));
+ Airbridge.trackEvent(AirbridgeCategory.HOME_VIEW, option);Airbridge.event.send(ViewHomeEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.HOME_VIEW, option) 으로 HOME_VIEW 이벤트를 전달합니다.
상품 상세 조회
- Airbridge.event.send(ViewProductDetailEvent(
- option: ...,
- products: ...,
- ));
+ Airbridge.event.trackEvent(
+ AirbridgeCategory.PRODUCT_DETAILS_VIEW,
+ AirbridgeEventOption(
+ semanticAttributes: {
+ AirbridgeAttributes.PRODUCTS: [{
+ AirbridgeProduct.PRODUCT_ID: '1',
+ AirbridgeProduct.NAME: 'product A',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 1,
+ AirbridgeProduct.QUANTITY: 1,
+ },
+ ]
+ }
+ ));Airbridge.event.send(ViewProductDetailEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.PRODUCT_DETAILS_VIEW, option) 으로 PRODUCT_DETAILS_VIEW 이벤트를 전달합니다.
기존 api 의 매개변수에 값을 option 에 객체에 담아서 전달 한다.
product=>semanticAttributes.[AirbridgeAttributes.PRODUCTS]
상품 리스트 조회
- Airbridge.event.send(ViewProductListEvent(
- option: ...,
- listID: ...,
- products: ...,
- ));
+ Airbridge.event.trackEvent(
+ AirbridgeCategory.PRODUCT_DETAILS_VIEW,
+ AirbridgeEventOption(
+ semanticAttributes: {
+. AirbridgeAttributes.PRODUCT_LIST_ID: 'ID-1234567890',
+ AirbridgeAttributes.PRODUCTS: [{
+ AirbridgeProduct.PRODUCT_ID: '1',
+ AirbridgeProduct.NAME: 'product A',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 1,
+ AirbridgeProduct.QUANTITY: 1,
+ }, {
+ AirbridgeProduct.PRODUCT_ID: '2',
+ AirbridgeProduct.NAME: 'product B',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 2,
+ AirbridgeProduct.QUANTITY: 1,
+ },
+ ]
+ }
+ ));Airbridge.event.send(ViewProductListEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.PRODUCT_LIST_VIEW, option) 으로 PRODUCT_LIST_VIEW 이벤트를 전달합니다.
기존 api 의 매개변수에 값을 option 에 객체에 담아서 전달 한다.
listID=>semanticAttributes.[AirbridgeAttributes.PRODUCT_LIST_ID]
product=>semanticAttributes.[AirbridgeAttributes.PRODUCTS]
검색결과 조회
- Airbridge.event.send(ViewSearchResultEvent(
- option: ...,
- query: ...,
- products: ...,
- ));
+ Airbridge.event.trackEvent(
+ AirbridgeCategory.PRODUCT_DETAILS_VIEW,
+ AirbridgeEventOption(
+ semanticAttributes: {
+ AirbridgeAttributes.QUERY: 'query-viewSearchResult',
+ AirbridgeAttributes.PRODUCTS: [{
+ AirbridgeProduct.PRODUCT_ID: '1',
+ AirbridgeProduct.NAME: 'product A',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 1,
+ AirbridgeProduct.QUANTITY: 1,
+ }, {
+ AirbridgeProduct.PRODUCT_ID: '2',
+ AirbridgeProduct.NAME: 'product B',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 2,
+ AirbridgeProduct.QUANTITY: 1,
+ },
+ ]
+ }
+ ));Airbridge.event.send(ViewSearchResultEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.SEARCH_RESULT_VIEW, option) 으로 SEARCH_RESULT_VIEW 이벤트를 전달합니다.
기존 api 의 매개변수에 값을 option 에 객체에 담아서 전달 한다.
query=>semanticAttributes.[AirbridgeAttributes.QUERY]
product=>semanticAttributes.[AirbridgeAttributes.PRODUCTS]
장바구니 담기
- Airbridge.event.send(AddToCartEvent(
- option: ...,
- cartID: ...,
- products: ...,
- currency: ...,
- totalValue: 30000,
- ));
+ Airbridge.event.trackEvent(
+ AirbridgeCategory.ADD_TO_CART,
+ AirbridgeEventOption(
+ semanticAttributes: {
+ AirbridgeAttributes.CART_ID: 'ID-1234567890',
+ AirbridgeAttributes.CURRENCY: 'KRW',
+ AirbridgeAttributes.TOTAL_VALUE: 2000000,
+ AirbridgeAttributes.PRODUCTS: [{
+ AirbridgeProduct.PRODUCT_ID: '1',
+ AirbridgeProduct.NAME: 'product A',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 1,
+ AirbridgeProduct.QUANTITY: 1,
+ }, {
+ AirbridgeProduct.PRODUCT_ID: '2',
+ AirbridgeProduct.NAME: 'product B',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 2,
+ AirbridgeProduct.QUANTITY: 1,
+ },
+ ]
+ }
+ ));Airbridge.event.send(AddToCartEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.ADD_TO_CART, option) 으로 ADD_TO_CART 이벤트를 전달합니다.
기존 api 의 매개변수에 값을 option 에 객체에 담아서 전달 한다.
cartID=>semanticAttributes.[AirbridgeAttributes.CART_ID]
product=>semanticAttributes.[AirbridgeAttributes.PRODUCTS]
currency=>semanticAttributes.[AirbridgeAttributes.CURRENCY]
totalValue=>semanticAttributes.[AirbridgeAttributes.TOTAL_VALUE]
결제
- Airbridge.event.send(PurchaseEvent(
- option: ...,
- cartID: ...,
- products: ...,
- currency: ...,
- totalValue: 30000,
- ));
+ Airbridge.event.trackEvent(
+ AirbridgeCategory.ORDER_COMPLETED,
+ AirbridgeEventOption(
+ semanticAttributes: {
+ AirbridgeAttributes.TRANSACTION_ID: 'transactionID-purchase',
+ AirbridgeAttributes.IN_APP_PURCHASED: true,
+ AirbridgeAttributes.CURRENCY: 'KRW',
+ AirbridgeAttributes.TOTAL_VALUE: 50000,
+ AirbridgeAttributes.PRODUCTS: [{
+ AirbridgeProduct.PRODUCT_ID: '1',
+ AirbridgeProduct.NAME: 'product A',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 1,
+ AirbridgeProduct.QUANTITY: 1,
+ }, {
+ AirbridgeProduct.PRODUCT_ID: '2',
+ AirbridgeProduct.NAME: 'product B',
+ AirbridgeProduct.PRICE: 1000000,
+ AirbridgeProduct.CURRENCY: 'KRW',
+ AirbridgeProduct.POSITION: 2,
+ AirbridgeProduct.QUANTITY: 1,
+ },
+ ]
+ }
+ ));Airbridge.event.send(PurchaseEvent()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(AirbridgeCategory.ORDER_COMPLETED, option) 으로 ORDER_COMPLETED 이벤트를 전달합니다.
기존 api 의 purchaseEvent 의 매개변수에 값을 option 에 객체에 담아서 전달 한다.
transactionID=>semanticAttributes.[AirbridgeAttributes.TRANSACTION_ID]
product=>semanticAttributes.[AirbridgeAttributes.PRODUCTS]
isInAppPurchase=>semanticAttributes.[AirbridgeAttributes.IN_APP_PURCHASED]
totalValue=>semanticAttributes.[AirbridgeAttributes.TOTAL_VALUE]
사용자 이벤트
- Airbridge.event.send(Event(
- category: ...,
- option: ...,
- ));
+ Airbridge.trackEvent(category, option);Airbridge.event.send(Event()) 를 사용하고 있다면 변경이 필요합니다.
Airbridge.trackEvent(category, option) 으로 이벤트를 전달합니다.
