목차
|
* 프로모션 UI의 열림(open) 혹은 닫힘(close) 상태 및 기타 상태에 대한 콜백의 응답 값 * iOS Native, C Plugin typedef enum _MERCURY_RESULT
{ // 전면 배너, 새소식, 공지사항 MERCURY_OPEN = 1, // 전면 배너 열림 MERCURY_CLOSE = 2, // 전면 배너 닫힘 MERCURY_FORCED_OPEN = 3, // 새소식 페이지 열림 MERCURY_FORCED_CLOSE = 4, // 새소식 페이지 닫힘 MERCURY_NOTICE_OPEN = 5, // 공지사항 페이지 열림 MERCURY_NOTICE_CLOSE = 6, // 공지사항 페이지 닫힘 // 커스텀 보드, 커스텀 뷰 MERCURY_CUSTOM_OPEN = 7, // 커스텀 보드 열림 MERCURY_CUSTOM_CLOSE = 8, // 커스텀 보드 닫힘 MERCURY_CUSTOM_BOARD_OPEN = MERCURY_CUSTOM_OPEN, MERCURY_CUSTOM_BOARD_CLOSE = MERCURY_CUSTOM_CLOSE, MERCURY_CUSTOM_VIEW_OPEN = 9, // 커스텀 뷰 열림 MERCURY_CUSTOM_VIEW_CLOSE = 10, // 커스텀 뷰 닫힘 // 리뷰 팝업 MERCURY_REVIEW_OPEN = 11, // 리뷰 팝업 열림 MERCURY_REVIEW_CLOSE = 12, // 리뷰 팝업 닫힘 // 게임종료 팝업 (Android Only) MERCURY_MOREGAMES_OPEN = 13, // 게임종료 팝업 열림 MERCURY_MOREGAMES_CLOSE = 14, // 게임종료 팝업 닫힘 MERCURY_MOREGAMES_CLOSE_WITH_APP_TERMINATION = 15, // 게임종료 팝업 닫힘 및 사용자가 앱 종료하기 버튼 선택함 알림 // 네트워크 에러 MERCURY_NETWORK_DISCONNECT = 16 // 네트워크 접속장애 알림 // YouTube playback MERCURY_START_PLAYBACK = 17 // YouTube 동영상 재생 시작 MERCURY_FINISH_PLAYBACK = 18 // YouTube 동영상 재생 종료 // 프로모션 페이지 뒤로가기 알림 (history back) MERCURY_MAIN_GOBACK = 19, // 새소식 페이지 뒤로가기 알림 MERCURY_NOTICE_GOBACK = 20, // 공지사항 페이지 뒤로가기 알림 MERCURY_CUSTOM_BOARD_GOBACK = 21, // 커스텀 보드 뒤로가기 알림 MERCURY_CUSTOM_VIEW_GOBACK = 22 // 커스텀 뷰 뒤로가기 알림 } MERCURY_RESULT; * Android Native public static final int MERCURY_FULL_BANNER_OPENED = 1; public static final int MERCURY_CUSTOM_OPENED = 7; public static final int MERCURY_CUSTOM_BOARD_OPENED = MERCURY_CUSTOM_OPENED; public static final int MERCURY_REVIEW_OPENED = 11; public static final int MERCURY_MOREGAMES_OPENED = 13; public static final int MERCURY_NETWORK_DISCONNECTED = 16; public static final int MERCURY_VIDEO_PROMOTION_START = 17; public static final int MERCURY_MAIN_PAGE_GOBACK = 19; * Unity Plugin
// 전면 배너, 새소식, 공지사항
public const int MERCURY_OPEN = 1; // 전면 배너 열림 // 커스텀 보드, 커스텀 뷰 public const int MERCURY_CUSTOM_BOARD_OPEN = MERCURY_CUSTOM_OPEN; public const int MERCURY_CUSTOM_VIEW_OPEN = 9; // 커스텀 뷰 열림 // 리뷰 팝업 // 게임종료 팝업 (Android-Only) // 네트워크 에러 // Youtube playback // 프로모션 페이지 뒤로가기 알림 (history back) |
* 데이터 콜백으로 전달될 수 있는 상태 값 typedef enum _MERCURY_CUSTOM_RESULT
{ MERCURY_SUCCESS = 0, MERCURY_FAILED = -1 MERCURY_INVALID_PARAM = -2 } MERCURY_CUSTOM_RESULT; * Unity Plugin
public const int MERCURY_SUCCESS = 0; * Android native
public static final int MERCURY_SUCCESS = 0; |
* 프로모션 페이지 노출 요청 타입 값 * iOS Native, C Plugin typedef enum _MERCURY_SHOW_TYPE // 전면 배너 (웹뷰 타입) // 전면 배너 (이미지 타입) // 새소식 및 공지사항 // 공지사항만 // 커스텀 보드 및 뷰 // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999) } MERCURY_SHOW_TYPE; * Unity Plugin // 전면 배너 (웹뷰 타입) // 전면 배너 (이미지 타입) // 새소식 및 공지사항 // 공지사항만 // 커스텀 보드 및 뷰 // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999) * Android Native public static final int MERCURY_SHOW_EVENT_LEGACY = -9; public static final int MERCURY_SHOW_EVENT = -11; public static final int MERCURY_SHOW_NOTICE_ONLY = -16; public static final int MERCURY_SHOW_CUSTOM_BASE = 100000; public static final int MERCURY_SHOW_CUSTOM_VIEW_BASE = MERCURY_SHOW_CUSTOM_BOARD_MAX; |
* badge 처리 여부 확인을 위해 요청 및 반환되는 타입 값 * iOS Native, C Plugin typedef enum _MERCURY_BADGE_TARGET MERCURY_BADGE_FOR_EVENT = -20, // 전면 배너 // 커스텀 보드 및 뷰 MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE = MERCURY_BADGE_FOR_CUSTOM_BASE, // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999) } MERCURY_BADGE_TARGET; * Unity Plugin // Mercury Badge Target // Custom board & view public const int MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE = MERCURY_BADGE_FOR_CUSTOM_BASE; public const int MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE = MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX; * Android Native public static final int MERCURY_BADGE_FOR_FULL_BANNER = -20; public static final int MERCURY_BADGE_FOR_CUSTOM_BASE = 100000; public static final int MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE = MERCURY_BADGE_FOR_CUSTOM_BASE; public static final int MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE = MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX; |
* 요청한 badge의 현재 상태 타입 값 (C2S.19.6 이후 더이상 사용되지 않음) * iOS Native, C Plugin typedef enum _MERCURY_BADGE_TYPE MERCURY_BADGE_TYPE_NONE = -24, } MERCURY_BADGE_TYPE;
public const int MERCURY_BADGE_TYPE_NONE = -24;
public static final int MERCURY_BADGE_TYPE_NONE = -24; |
- Mercury 모듈 콜백을 등록합니다.
- MercuryCB는 int형 상태나 결과를 반환합니다.
void |
in/out | Type | Name | Description |
---|---|---|---|
in | MercuryCB | callback |
Callback을 받는 함수입니다. |
- 프로모션 배너 UI를 노출합니다.
- MERCURY_SHOW_TYPE 에 따라 전면배너, 새소식, 공지사항, 커스텀 보드, 커스텀 뷰를 노출합니다.
- MercurySetCallback를 설정하였다면 프로모션 배너 노출 및 종료 시 MERCURY_RESULT 에 대한 콜백 값이 전달됩니다.
- mq_redirect 배너(다이렉트 배너)를 노출하려는 경우 MERCURY_SHOW_TYPE은 -12, additionalInfo 데이터로 Json 형태의 String 데이터를 추가합니다. mq_redirect 값은 새소식 내 배너의 이벤트 번호 입니다.
(ex : “{“mq_redirect”:”321321”}” )
- mq_redirect 배너 호출 시 “header”:”off” 데이터를 추가하면 페이지 상단에 헤더가 나타나지 않습니다.
(ex : “{“mq_redirect”:”321321”,”header”:”off”}” )
- additionalInfo를 사용하지 않는 경우 빈 String 데이터(“‘) 혹은 null로 호출합니다.
void |
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
로그인된 유저의 uid |
in | MERCURY_SHOW_TYPE | mercuryShowType |
프로모션 배너 노출 타입 |
in | const char* | additionalInfo |
mq_redirect와 같은 추가 정의된 데이터 |
- 프로모션 배너 정보를 Json 형태의 String 데이터로 콜백을 통해 전달합니다.
- 새소식, 공지사항, 커스텀 보드 및 뷰의 정보를 반환합니다. 각 배너의 badge 정보도 포함하고 있습니다.
- MercuryShowEx를 통해 프로모션 배너를 노출하고 있지 않은 경우, 해당 API 호출로 받은 콜백 데이터를 사용하여 자체 웹뷰를 통해 노출할 수 있습니다. 콜백 데이터로 전달받은 postString 데이터를 웹뷰 호출 시 post body에 추가하여 콜백 데이터 내의 url을 호출합니다.
- postString 데이터가 있어야 웹뷰 cookie의 영향을 받지 않고 배너가 정상 노출됩니다.
* iOS Native, C Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Unity Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Android Native
int / MERCURY_RESULT 값 (0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
로그인된 유저의 uid |
in | int | viewID |
MERCURY_SHOW_TYPE 값 |
in | MercuryCBWIthData | customViewCallback |
구현한 콜백 함수 |
- 앱 리뷰를 유도하는 팝업을 노출합니다. (Hive 리뷰 팝업)
- MercurySetCallback를 설정하였다면 팝업 노출 및 종료 시 MERCURY_RESULT 에 대한 콜백 값이 전달됩니다.
- 팝업 노출 여부는 프로모션 서버에서 판단하며, 사용자의 응답이 서버에 기록됩니다.
- 팝업 내 버튼은 다음 동작을 따릅니다.
* iOS Native, C Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Unity Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Android Native
int / MERCURY_RESULT 값 (0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
로그인된 사용자의 uid |
in | const char* | vid |
로그인된 사용자의 vid (C2S 개별모듈에서 사용되지 않습니다. 빈 String 값(“”)을 사용바랍니다.) |
in | const char* | did |
ActiveUser 모듈에서 부여받은 단말의 did |
- Google PlayStore, iOS AppStore 한정 OS가 제공하는 별점 및 리뷰를 남길 수 있는 인게임 리뷰 팝업을 노출합니다.
- 별도의 콜백이 전달되지 않습니다.
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
로그인된 사용자의 uid |
in | const char* | vid |
로그인된 사용자의 vid (C2S 개별모듈에서 사용되지 않습니다. 빈 String 값(“”)을 사용바랍니다.) |
in | const char* | did |
ActiveUser 모듈에서 부여받은 단말의 did |
- (Android-Only) 게임 종료 팝업을 노출합니다.
- 사용자가 Android back 버튼 등을 통해 게임 종료 시 노출되도록 사용될 수 있는 팝업입니다. (게임 종료 시 해당 기능을 호출하도록 구현)
- MercurySetCallback를 설정하였다면 팝업 노출 및 종료 시 MERCURY_RESULT 에 대한 콜백 값이 전달됩니다.
* iOS Native, C Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Unity Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Android Native
int / MERCURY_RESULT 값 (0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
로그인된 사용자의 uid |
in | const char* | vid |
로그인된 사용자의 vid (C2S 개별모듈에서 사용되지 않습니다. 빈 String 값(“”)을 사용바랍니다.) |
in | const char* | did |
ActiveUser 모듈에서 부여받은 단말의 did |
void |
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
UID. |
void |
in/out | Type | Name | Description |
---|---|---|---|
in | int | isUsingStaging |
테스트 서버 사용 여부를 설정합니다. 기본옵션은 false입니다. |
void |
in/out | Type | Name | Description |
---|---|---|---|
in | int | isLog |
Android Log 설정. 기본 false. iOS에서는 debug library 사용. |
- Mercury 모듈 버전을 반환합니다.
- C2S.19.8.1 패키지 이후 모든 모듈 버전이 패키지 버전과 동일한 값을 갖습니다. (ex : C2S.19.8.1).
* iOS Native |
- 파라메터로 입력한 badgeTarget에 대해서 badge로 표시해야할 여부를 반환합니다.
- badge는 프모로션 배너를 호출하는 버튼에 앱에서 ‘new’ 와 같은 표시를 할 수 있도록 지원되는 값 입니다.
- 파라메터로 입력한 MERCURY_SHOW_TYPE이 MercuryCB으로 동일하게 전달된다면 badge 표시 가능한 상태 입니다. 만약, MercuryCB으로 -23 (MERCURY_BADGE_TARGET.MERCURY_BADGE_FOR_NONE) 이 전달되었다면 badge 표시를 하지 않아도 되는 상태입니다.
- MercurySetCallback 호출로 콜백이 설정되어 있어야 합니다.
void |
in/out | Type | Name | Description |
---|---|---|---|
in | const int | badgeTarget | MERCURY_SHOW_TYPE 값 |
Badge Type Enum |
in/out | Type | Name | Description |
---|---|---|---|
in | const int | badgeTarget |
|
- UserAcquisition 친구 초대 링크 및 초대 메시지 데이터를 콜백으로 반환합니다.
- UserAcquisition 데이터는 프로모션 서버(Hive 콘솔)에 등록되어 있어야 합니다.
- 해당 API 호출 시 additionalInfo 데이터로 uatoken 값이 필요하며 이 값은 프로모션 서버 담당자분께 발급받아 사용이 필요합니다.
MERCURY_RESULT 값
(0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | uid |
|
in | const char* | additionalInfo |
|
in | MercuryCBWithData | callbackWithData |
|
- UserAcquisition 친구 초대 링크 및 초대 메시지(파라메터에 입력된 데이터)를 특정 외부 애플리케이션에 전달하도록 합니다.
- 외부 애플리케이션 실행 외에 링크와 메시지를 클립보드에 복사하는 기능을 제공합니다.
* iOS Native, C Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Unity Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Android Native
int / MERCURY_RESULT 값 (0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | urlLink |
|
in | const char* | shareMessage |
|
* iOS Native, C Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Unity Plugin
int / MERCURY_RESULT 값 (0 : 호출 성공)
* Android Native
int / MERCURY_RESULT 값 (0 : 호출 성공)
in/out | Type | Name | Description |
---|---|---|---|
in | const char* | campaignType |
|
in | const char* | bannerType |
|
in | MercuryCBWithData | bannerInfoCallback |
|
- 전면 배너를 이미지 배너로 기본(default) 사용하도록 설정합니다.
- 해당 API를 호출하면 전면 배너는 기본적으로 이미지 배너로 노출되며, 해당 API 미호출 시 기본은 웹뷰 배너 노출입니다.
void
- (Android-Only) 프로모션 다이렉트(mq_redirect) 배너 노출 시 C2S 개별모듈 내 HiveUiActivity 가 아닌 게임앱의 Activity 위에 노출되도록 설정 기능을 합니다.
- HiveUiActivity를 사용하지 않도록 할 경우 C2S 개별모듈이 제공하는 UI 테마나 생명주기를 일부 이용할 수 없습니다.
- 해당 API를 호출하지 않을 경우 default는 HiveUiActivity를 통해 프로모션 배너가 노출됩니다.
- 특별한 경우가 아니면 해당 API를 사용 권장하지 않습니다. 사용이 필요한 경우 플랫폼 클라이언트팀으로 문의바랍니다.
void
in/out | Type | Name | Description |
---|---|---|---|
in | int | isOn |
|
typedef void |
in/out | Type | Name | Description |
---|---|---|---|
in | MERCURY_RESULT | result |
프로모션 API 요청에 대한 결과 |
// iOS / Wrapper mercury callback 함수 예시
void mercuryCB(MERCURY_RESULT result) { switch(result) { case MERCURY_OPEN: NSLog(@"MERCURY_OPEN"); break; case MERCURY_CLOSE: NSLog(@"MERCURY_CLOSE"); break; case MERCURY_FORCED_OPEN: NSLog(@"MERCURY_FORCED_OPEN"); break; case MERCURY_FORCED_CLOSE: NSLog(@"MERCURY_FORCED_CLOSE"); break; case MERCURY_NETWORK_DISCONNECT: NSLog(@"MERCURY_NETWORK_DISCONNECT"); break; case MERCURY_START_PLAYBACK: NSLog(@"MERCURY_START_PLAYBACK"); // set game sound volume off break; case MERCURY_FINISH_PLAYBACK: NSLog(@"MERCURY_FINISH_PLAYBACK"); // set game sound volume on break; default: break; } } |
- MERCURY_RESULT 값에 해당하는 프로모션 UI의 열림(open) 혹은 닫힘(close) 상태 및 기타 상태, API 호출에 대한 콜백의 응답을 받을 수 있는 콜백
- API 호출 시 활용할 수 있는 데이터가 반영되는 경우 데이터를 포함하여 응답 받을 수 있는 콜백
typedef void |
in/out | Type | Name | Description |
---|---|---|---|
in | MERCURY_RESULT | result |
프로모션 API 요청에 대한 결과 |
in | const char* | jsonData |
프로모션 API가 반환하는 활용 가능한 데이터 (Json 형태) |
// C Plugin 함수 예시
void mercuryCBWithData(MERCURY_RESULT result, const char* jsonData) { NSLog(@"Mercury callback with data : %s", jsonData); switch(result) { case MERCURY_SUCCESS: { if(jsonData == NULL) return; // CString 파싱 NSString *convertStr = [NSString stringWithUTF8String:jsonData]; NSError *error = nil; NSDictionary *dataDict = [NSJSONSerialization JSONObjectWithData:[convertStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&error]; if(error) { NSLog(@"%@", [error localizedDescription]); return; } NSLog(@"Parsed dictionary = %@", dataDict); // customViewInfo 콜백 NSDictionary *customViewInfo = [dataDict objectForKey:@"customviewinfo"]; if(customViewInfo) { // 뱃지 정보 // badgetype = new; // expire = 24; (min) // showtype = 200001; // startdate = 1434070800; (sec : interval since1970) // term = 30; (min) NSDictionary *badgeInfo = [customViewInfo objectForKey:@"badge"]; NSLog(@"Badge info : %@", badgeInfo); // URL 정보 얻어오기 NSString *urlStr = [customViewInfo objectForKey:@"url"]; NSURL *url = [NSURL URLWithString:urlStr]; NSLog(@"URL info : %@", url.absoluteString); // Cookies 정보 얻어오기 // (iOS Mercury v2.12.7 이상( Android Mercury v2.12.6 이상)) // (해당 버전부터는 각 OS가 제공하는 Cookie를 사용하지 않기 때문에 Cookie에서 취급되었던 데이터를 post 데이터로 전송해야 한다. 때문에 Cookies에 있는 값을 얻은 후 Mercury 뷰 호출 시 꼭 post 데이터로 넣어서 요청해야 한다.) NSDictionary *cookiesDict = [customViewInfo objectForKey:@"cookies"]; NSLog(@"cookies info : %@", cookiesDict); // Test Webview Loading WebviewTestViewController *webViewController = [[WebviewTestViewController alloc] initWithNibName:@"WebviewTestViewController" bundle:[NSBundle mainBundle]]; [viewControllerSharedInstance presentViewController:webViewController animated:YES completion:^{ NSURL *webURL = [NSURL URLWithString:@"http://test.mercury.com2us.com/test/printCookie"]; NSURLRequest *request = [NSURLRequest requestWithURL:webURL]; webViewController.customURL = url; webViewController.cookiesDict = cookiesDict; [webViewController.webView loadRequest:request]; }]; } // uainfo 콜백 NSDictionary *uainfo = [dataDict objectForKey:@"uainfo"]; if(uainfo) { // 초대 정보 // invite_link = https://ua.withhive.com/ko/ua1585188c?t=1569567736; // invite_message = 최초 접속 시, 무조건 5성 소환권 지급! // result_code = 0 // result_message = success NSString* urlLink = uainfo[@"invite_link"]; NSString* message = uainfo[@"invite_message"]; CS_MercuryRequestUALinkShare([urlLink UTF8String], [message UTF8String]); } } break; case MERCURY_FAILED: break; default: break; } } // iOS Native 함수 예시
- (IBAction)openCustomURL:(id)sender { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:self.customURL]; // cookie 값 post 데이터에 추가 NSError* error = nil; NSMutableDictionary* jsonData = [[NSMutableDictionary alloc]init]; [jsonData setObject:self.cookiesDict forKey:@"cookies"]; NSLog(@"webView jsonBody : %@", jsonData); NSData *dataJSon = [NSJSONSerialization dataWithJSONObject:jsonData options:0 error:&error]; // Make url request. [request setHTTPBody:dataJSon]; [request setHTTPMethod:@"POST"]; [self.webView loadRequest:request]; } /**
* Android Mercury 모듈의 mercuryGetCustomViewInfo API를 호출하여 커스텀뷰 관련 정보 및 cookies 정보를 받는 예 * (Java 코드로 작성되었습니다.) */ Mercury libMercury; // Mercury 클래스 객체 JSONObject cookiesJson; // 쿠키 데이터를 임시 관리할 객체 String uid = “123456789”; int viewId = 0; //… Mercury 모듈 초기화 등의 로직은 생략 … // [1] // FnMercuryCBWithData 라는 예제 클래스를 구현한 예 // (FnMercuryCBWithData 클래스는 MercuryCBWithData 콜백을 처리하는 역할을 합니다.) private static class FnMercuryCBWithData implements MercuryCBWithData { @Override public void mercuryCallBackWithData(int result, String jsonData) { // TODO Auto-generated method stub if(result == Mercury.MERCURY_SUCCESS) { try { JSONObject jsonObj = new JSONObject(jsonData); // TODO : jsonData에서 게임앱에서 필요한 데이터를 수집합니다. // 그리고 Android Mercury v2.12.6 이상부터는 “cookies” 키 데이터가 추가로 전달되고, // 해당 키 값을 머큐리의 커스텀 뷰 자체 구현 노출 시 포함시켜 호출합니다. JSONObject jsonCustomViewInfo = jsonObj.getJSONObject(“customviewinfo”); cookiesJson = jsonCustomViewInfo.getJSONObject(“cookies”); // 쿠키 데이터를 객체에 보관 } catch(JSONException e) { e.printStackTrace(); } } } } // [2] // getMercuryCustomViewInfo 라는 예제 메서드를 구현한 예 // (getMercuryCustomViewInfo 메서드는 커스텀뷰 정보 API를 호출하는 역할을 합니다.) public void getMercuryCustomViewInfo() { // mercuryGetCustomViewInfo API 호출 libMercury.mercuryGetCustomViewInfo(uid, viewId, new FnMercuryCBWithData()); } // [3-1] // 커스텀 뷰 정보 응답 결과 예 (C2S.19.6 미만) // (위 Java 코드의 public void mercuryCallBackWithData(int result, String jsonData) 에서 jsonData의 예) /* {"customviewinfo":{"origin":{"error":0,"errormsg":"Success.","count":5,"show":"1","type":"0","webview":[{"pid":"238803","webview_type":"fullbanner","board":"custom","url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","image_url":"","down_url":"","action":"none","margin":0,"wratio":9,"hratio":16,"cpi_type":0,"act":"init","showtype":"-11"},{"pid":"236272","webview_type":"fullbanner","board":"custom","url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","image_url":"","down_url":"","action":"none","margin":0,"wratio":9,"hratio":16,"cpi_type":0,"act":"init","showtype":"-11"},{"pid":"236275","webview_type":"fullbanner","board":"custom","url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","image_url":"","down_url":"","action":"none","margin":0,"wratio":9,"hratio":16,"cpi_type":0,"act":"init","showtype":"-11"},{"pid":"236274","webview_type":"fullbanner","board":"custom","url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","image_url":"","down_url":"","action":"none","margin":0,"wratio":9,"hratio":16,"cpi_type":0,"act":"init","showtype":"-11"},{"pid":"236271","webview_type":"fullbanner","board":"custom","url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","image_url":"","down_url":"","action":"none","margin":0,"wratio":9,"hratio":16,"cpi_type":0,"act":"init","showtype":"-11"}],"badge":[],"use_cutout":true},"url":"https:\/\/m-mercury.qpyou.cn\/news\/v1_banner","cookies":{"peppermint_version":"Hive v.2.7.11","appid":"com.com2us.hivesdk.normal.freefull.google.global.android.common","device":"SM-N920K","platform":"android","os_version":"7.0","hub_ck2":"88e865a0e736f7c4869341c01c7d0cb64ba191dd08237b999629952580dba425tvMgqodTWou3Tg8mLpa\/iQ==","hub_ck3":"6b377893cde771696e2e62a903c4fa42a8379b748c8c810536199558c6b75f38pBe+3\/LDhtYwzkLeut61SjpvcWo\/2vZNyM\/C\/SBvSWU=","did":"541821123","enable_cookie":"no","language":"ko","device_country":"kr","device_model":"SM-N920K","promotion_version":"2.12.7","app_version":"1.18.0","app_version_code":"60","orient":"1","top_type":"event","vid":"129442100","additionalInfo":"","mcc":"450","mnc":"08","forced":"off","advertising_id":"8003f869-36fa-48e6-99f9-fcb5025e7d4c","imei":"352460074750977","is_limit_ad_tracking":"0","hive_country":"KR","timezone":null,"game_language":"ko","server_id":"KR","analytics_id":"gjkDXPyQNYaWQ5bNf6qqdg=="}}} */ // [3-2] // 커스텀 뷰 정보 응답 결과 예 (C2S.19.6 이상) // (위 Java 코드의 public void mercuryCallBackWithData(int result, String jsonData) 에서 jsonData의 예) /* { “customviewinfo” : { “origin”:{“webview:[...], “count”:.., “result_code”:.., “result_message”:”..”, “use_cutout”:..}, “showtype”:”..”, “postString”:{...}, “url”:”..” } } */ // [4] // showCustomViewWithData 라는 예제 메서드를 구현한 예 // (showCustomViewWithData 메서드는 커스텀뷰를 자체 구성한 데이터로 호출하는 역할을 합니다.) public void showCustomViewWithData() { activity.runOnUiThread(new Runnable() { @Override public void run() { JSONObject jsonData = new JSONObject(); // TODO : 게임앱에서 customview 노출 시 필요한 데이터를 셋팅합니다. // 그리고 추가로 Android Mercury v2.12.6 이상을 쓰는 경우 mercuryGetCustomViewInfo API에서 응답받은 cookies 데이터를 넣어주어야 합니다. try { jsonData.put(“cookies”, cookiesJson); // 추가로 cookies 데이터를 셋팅, 가장 상위 depth에 cookies키가 존재하면 됩니다. } catch (Exception e) { e.printStackTrace(); } // “웹뷰에서 커스텀 뷰를 노출합니다.” // Webview 객체 구현 생략 // targetURL는 커스텀 뷰 호출에 사용되는 GCP 프로모션 서버와 약속된 프로토콜 url 입니다. webView.postUrl(targetURL, jsonData.toString().getBytes()); } }); } |