Mercury (프로모션 1.0) 

 

목차

  • 1 상수 및 자료형
    • 1.1 MERCURY_RESULT
    • 1.2 MERCURY_CUSTOM_RESULT
    • 1.3 MERCURY_SHOW_TYPE
    • 1.4 MERCURY_BADGE_TARGET
    • 1.5 MERCURY_BADGE_TYPE
      • Deprecated
  • 2 함수
    • 2.1 void CS_MercurySetCallBack(MercuryCB callback)
    • 2.2 void CS_MercuryShowEx(const char* uid, MERCURY_SHOW_TYPE mercuryShowType, const char* additionalInfo)
    • 2.3 int CS_MercuryGetCustomViewInfo(const char* uid, int viewID, MercuryCBWIthData customViewCallback)
    • 2.4 int CS_MercuryShowReviewPopup(const char* uid, const char* vid, const char* did)
    • 2.5 int CS_MercuryShowNativeReviewPopup(const char* uid, const char* vid, const char* did)
    • 2.6 int CS_MercuryShowMoregamesPopup(const char* uid, const char* vid, const char* did)
    • 2.7 void CS_MercurySetUid(const char* uid)
      • Deprecated
    • 2.8 void CS_MercurySetIsUsingStaging(int isUsingStaging)
      • Deprecated
    • 2.9 void CS_MercurySetLog(int isLog)
      • Deprecated
    • 2.10 const char* CS_MercuryGetVersion()
    • 2.11 void CS_MercuryGetBadge(const int badgeTarget)
    • 2.12 int CS_MercuryGetBadgeType(const int badgeTarget)
      • Deprecated
    • 2.13 int CS_MercuryRequestUAInfo(const char* uid, const char* additionalInfo, MercuryCBWithData callbackWithData)
    • 2.14 int CS_MercuryRequestUALinkShare(const char* urlLink, const char* shareMessage)
    • 2.15 int CS_MercuryGetBannerInfo(const char* campaignType, const char* bannerType, MercuryCBWithData bannerInfoCallback)
    • 2.16 void CS_MercuryInitImageLoader()
    • 2.17 void CS_MercurySetBannerOnGameWindow(int isON)
  • 3 콜백 함수
    • 3.1 typedef void (*MercuryCB)(MERCURY_RESULT result)
    • 3.2 typedef void (*MercuryCBWithData)(MERCURY_RESULT result, const char* additionalInfo)

상수 및 자료형

MERCURY_RESULT

* 프로모션 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_FULL_BANNER_CLOSED         = 2;
public static final int       MERCURY_MAIN_PAGE_OPENED             = 3;
public static final int       MERCURY_MAIN_PAGE_CLOSED              = 4;
public static final int       MERCURY_NOTICE_ONLY_OPENED         = 5;
public static final int       MERCURY_NOTICE_ONLY_CLOSED          = 6;

public static final int       MERCURY_CUSTOM_OPENED                   = 7;
public static final int       MERCURY_CUSTOM_CLOSED                   = 8;

public static final int       MERCURY_CUSTOM_BOARD_OPENED    = MERCURY_CUSTOM_OPENED;
public static final int       MERCURY_CUSTOM_BOARD_CLOSED     = MERCURY_CUSTOM_CLOSED;
public static final int       MERCURY_CUSTOM_VIEW_OPENED        = 9;
public static final int       MERCURY_CUSTOM_VIEW_CLOSED         = 10;

public static final int       MERCURY_REVIEW_OPENED        = 11;
public static final int       MERCURY_REVIEW_CLOSED                = 12;

public static final int       MERCURY_MOREGAMES_OPENED      = 13;
public static final int       MERCURY_MOREGAMES_CLOSED       = 14;
public static final int       MERCURY_MOREGAMES_CLOSED_WITH_APP_TERMINATION  = 15;

public static final int       MERCURY_NETWORK_DISCONNECTED   = 16;

public static final int       MERCURY_VIDEO_PROMOTION_START    = 17; 
public static final int       MERCURY_VIDEO_PROMOTION_FINISH    = 18; 

public static final int       MERCURY_MAIN_PAGE_GOBACK               = 19;
public static final int       MERCURY_NOTICE_ONLY_GOBACK           = 20;
public static final int       MERCURY_CUSTOM_BOARD_GOBACK     = 21;
public static final int       MERCURY_CUSTOM_VIEW_GOBACK         = 22;

 
* Unity Plugin
 
   // 전면 배너, 새소식, 공지사항

   public const int MERCURY_OPEN                          = 1;        // 전면 배너 열림
   public const int MERCURY_CLOSE                        = 2;        // 전면 배너 닫힘
   public const int MERCURY_FORCED_OPEN         = 3;        // 새소식 페이지 열림
   public const int MERCURY_FORCED_CLOSE       = 4;        // 새소식 페이지 닫힘
   public const int MERCURY_NOTICE_OPEN           = 5;        // 공지사항 페이지 열림
   public const int MERCURY_NOTICE_CLOSE         = 6;        // 공지사항 페이지 닫힘

   // 커스텀 보드, 커스텀 뷰
   public const int MERCURY_CUSTOM_OPEN         = 7;        // 커스텀 보드 열림
   public const int MERCURY_CUSTOM_CLOSE       = 8;        // 커스텀 보드 닫힘

   public const int MERCURY_CUSTOM_BOARD_OPEN      = MERCURY_CUSTOM_OPEN;
   public const int MERCURY_CUSTOM_BOARD_CLOSE    = MERCURY_CUSTOM_CLOSE;

   public const int MERCURY_CUSTOM_VIEW_OPEN          = 9;          // 커스텀 뷰 열림
   public const int MERCURY_CUSTOM_VIEW_CLOSE        = 10;        // 커스텀 뷰 닫힘

   // 리뷰 팝업
   public const int MERCURY_REVIEW_OPEN           = 11;       // 리뷰 팝업 열림 알림
   public const int MERCURY_REVIEW_CLOSE         = 12;       // 리뷰 팝업 닫힘 알림

   // 게임종료 팝업 (Android-Only)
   public const int MERCURY_MOREGAMES_OPEN       = 13;      // 게임종료 팝업 열림
   public const int MERCURY_MOREGAMES_CLOSE     = 14;      // 게임종료 팝업 닫힘
   public const int MERCURY_MOREGAMES_CLOSE_WITH_APP_TERMINATION  = 15;    // 게임종료 팝업 닫힘 및 사용자가 앱 종료하기 버튼 선택함 알림

   // 네트워크 에러
   public const int MERCURY_NETWORK_DISCONNECT  = 16;           // 네트워크 접속장애 알림

   // Youtube playback
   public const int MERCURY_START_PLAYBACK              = 17;           // Youtube 동영상 재생 시작
   public const int MERCURY_FINISH_PLAYBACK              = 18;           // Youtube 동영상 재생 종료

   // 프로모션 페이지 뒤로가기 알림 (history back)
   public const int MERCURY_MAIN_PAGE_GOBACK             = 19;       // 새소식 페이지 뒤로가기 알림
   public const int MERCURY_NOTICE_ONLY_GOBACK         = 20;       // 공지사항 페이지 뒤로가기 알림
   public const int MERCURY_CUSTOM_BOARD_GOBACK    = 21;       // 커스텀 보드 뒤로가기 알림
   public const int MERCURY_CUSTOM_VIEW_GOBACK        = 22;       // 커스텀 뷰 뒤로가기 알림

 
MERCURY_CUSTOM_RESULT

* 데이터 콜백으로 전달될 수 있는 상태 값

* iOS Native, C Plugin

    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;
public const int MERCURY_FAILED = -1;
public const int MERCURY_INVALID_PARAM = -2;


* Android native

public static final int    MERCURY_SUCCESS                = 0;
public static final int    MERCURY_FAILED                     = -1;
public static final int    MERCURY_INVALID_PARAM     = -2;

 
MERCURY_SHOW_TYPE

* 프로모션 페이지 노출 요청 타입 값

* iOS Native, C Plugin

typedef enum _MERCURY_SHOW_TYPE
{

   // 전면 배너 (웹뷰 타입)
   MERCURY_SHOW_EVENT_LEGACY                     = -9,

   // 전면 배너 (이미지 타입)
   MERCURY_SHOW_EVENT                                      = -11,

   // 새소식 및 공지사항
   MERCURY_SHOW_NOTICE_TOP                            = -12,      // 새소식 (C2S.19.6 미만 : 공지사항 상단 배치)
   MERCURY_SHOW_NOTICE_BOTTOM                    = -13,      // 새소식 (C2S.19.6 미만 : 공지사항 하단 배치)
   MERCURY_SHOW_FORCED_NOTICE_TOP           = -14,      // 새소식 + 오늘 하루 안보기 무시 (C2S.19.6 미만 : 공지사항 상단 배치)
   MERCURY_SHOW_FORCED_NOTICE_BOTTOM   = -15,      // 새소식 + 오늘 하루 안보기 무시 (C2S.19.6 미만 : 공지사항 하단 배치) 

   // 공지사항만
   MERCURY_SHOW_NOTICE_ONLY                          = -16,      // 공지사항만 표시
   MERCURY_SHOW_FORCED_NOTICE_ONLY         = -17,      // 공지사항만 표시 + 오늘 하루 안보기 무시  

   // 커스텀 보드 및 뷰
   // 커스텀 보드 번호 (Hive 콘솔 정의 범위 : 100000 ~ 299999)
   MERCURY_SHOW_CUSTOM_BASE                        = 100000,
   MERCURY_SHOW_CUSTOM_BOARD_BASE         = MERCURY_SHOW_CUSTOM_BASE,|
   MERCURY_SHOW_CUSTOM_BOARD_MAX           = MERCURY_SHOW_CUSTOM_BASE + 200000,

   // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999)
   MERCURY_SHOW_CUSTOM_VIEW_BASE             = MERCURY_SHOW_CUSTOM_BOARD_MAX,
   MERCURY_SHOW_CUSTOM_VIEW_MAX              = MERCURY_SHOW_CUSTOM_VIEW_BASE + 200000

} MERCURY_SHOW_TYPE;


* Unity Plugin

   // 전면 배너 (웹뷰 타입)
   public const int MERCURY_SHOW_EVENT_LEGACY           = -9;      // 새소식 (C2S.19.6 미만 : 공지사항 상단 배치)

   // 전면 배너 (이미지 타입)
   public const int MERCURY_SHOW_EVENT                            = -11;      // Full Banner

   // 새소식 및 공지사항
   public const int MERCURY_SHOW_NOTICE_TOP                            = -12;      // 새소식 (C2S.19.6 미만 : 공지사항 상단 배치)
   public const int MERCURY_SHOW_NOTICE_BOTTOM                    = -13;      // 새소식 (C2S.19.6 미만 : 공지사항 하단 배치)
   public const int MERCURY_SHOW_FORCED_NOTICE_TOP           = -14;      // 새소식 + 오늘 하루 안보기 무시 (C2S.19.6 미만 : 공지사항 상단 배치)
   public const int MERCURY_SHOW_FORCED_NOTICE_BOTTOM   = -15;      // 새소식 + 오늘 하루 안보기 무시 (C2S.19.6 미만 : 공지사항 하단 배치)

   // 공지사항만
   public const int MERCURY_SHOW_NOTICE_ONLY                          = -16;      // 공지사항만 표시
   public const int MERCURY_SHOW_FORCED_NOTICE_ONLY         = -17;      // 공지사항만 표시 + 오늘 하루 안보기 무시  

   // 커스텀 보드 및 뷰
   // 커스텀 보드 번호 (Hive 콘솔 정의 범위 : 100000 ~ 299999)
   public const int MERCURY_SHOW_CUSTOM_BASE                        = 100000;
   public const int MERCURY_SHOW_CUSTOM_BOARD_BASE         = MERCURY_SHOW_CUSTOM_BASE;
   public const int MERCURY_SHOW_CUSTOM_BOARD_MAX           = MERCURY_SHOW_CUSTOM_BASE + 200000;

   // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999)
   public const int MERCURY_SHOW_CUSTOM_VIEW_BASE             = MERCURY_SHOW_CUSTOM_BOARD_MAX;
   public const int MERCURY_SHOW_CUSTOM_VIEW_MAX               = MERCURY_SHOW_CUSTOM_VIEW_BASE + 200000;

 

* Android Native

   public static final int       MERCURY_SHOW_EVENT_LEGACY        = -9;
   public static final int       MERCURY_GET_BADGE_LIST                  = -10;

   public static final int       MERCURY_SHOW_EVENT                                      = -11;
   public static final int       MERCURY_SHOW_NOTICE_TOP                           = -12;
   public static final int       MERCURY_SHOW_NOTICE_BOTTOM                   = -13;
   public static final int       MERCURY_SHOW_FORCED_NOTICE_TOP          = -14;
   public static final int       MERCURY_SHOW_FORCED_NOTICE_BOTTOM  = -15;

   public static final int       MERCURY_SHOW_NOTICE_ONLY                         = -16;
   public static final int       MERCURY_SHOW_FORCED_NOTICE_ONLY        = -17;

   public static final int       MERCURY_SHOW_CUSTOM_BASE                       = 100000;
   public static final int       MERCURY_SHOW_FORCED_CUSTOM_BASE      = 200000;
   public static final int       MERCURY_SHOW_CUSTOM_BOARD_BASE        = MERCURY_SHOW_CUSTOM_BASE;
   public static final int       MERCURY_SHOW_CUSTOM_BOARD_MAX          = MERCURY_SHOW_CUSTOM_BOARD_BASE + 200000;

   public static final int       MERCURY_SHOW_CUSTOM_VIEW_BASE            = MERCURY_SHOW_CUSTOM_BOARD_MAX;
   public static final int       MERCURY_SHOW_CUSTOM_VIEW_MAX              = MERCURY_SHOW_CUSTOM_VIEW_BASE + 200000;

MERCURY_BADGE_TARGET

badge 처리 여부 확인을 위해 요청 및 반환되는 타입 값

* iOS Native, C Plugin

typedef enum _MERCURY_BADGE_TARGET
{

   MERCURY_BADGE_FOR_EVENT                = -20,       // 전면 배너
   MERCURY_BADGE_FOR_NOTICE              = -21,       // 새소식 및 공지사항
   MERCURY_BADGE_FOR_NOTICE_ONLY  = -22,       // 공지사항만
   MERCURY_BADGE_FOR_NONE                 = -23,       // badge 상태 없음

   // 커스텀 보드 및 뷰
   // 커스텀 보드 번호 (Hive 콘솔 정의 범위 : 100000 ~ 299999)
   MERCURY_BADGE_FOR_CUSTOM_BASE                  = 100000,
   MERCURY_BADGE_FOR_CUSTOM                              = MERCURY_BADGE_FOR_CUSTOM_BASE,
   MERCURY_BADGE_FOR_CUSTOM_MAX                    = MERCURY_BADGE_FOR_CUSTOM_BASE + 200000,

   MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE    = MERCURY_BADGE_FOR_CUSTOM_BASE,
   MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX      = MERCURY_BADGE_FOR_CUSTOM_MAX,  

   // 커스텀 뷰 번호 (Hive 콘솔 정의 범위 : 300000 ~ 499999)
   MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE        = MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX,
   MERCURY_BADGE_FOR_CUSTOM_VIEW_MAX          = MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE + 200000

} MERCURY_BADGE_TARGET;


* Unity Plugin

   // Mercury Badge Target
   public const int MERCURY_BADGE_FOR_EVENT        = -20;       // Badge for 'Full banner'
   public const int MERCURY_BADGE_FOR_NOTICE       = -21;       // Badge for 'Main page'
   public const int MERCURY_BADGE_FOR_NOTICE_ONLY  = -22;       // Badge for 'Notice Only'
   public const int MERCURY_BADGE_FOR_NONE         = -23;       // Badge not found

   // Custom board & view
   // Base <= target < MAX
   public const int MERCURY_BADGE_FOR_CUSTOM_BASE  = 100000;
   public const int MERCURY_BADGE_FOR_CUSTOM       = MERCURY_BADGE_FOR_CUSTOM_BASE;
   public const int MERCURY_BADGE_FOR_CUSTOM_MAX   = MERCURY_BADGE_FOR_CUSTOM_BASE + 200000;

   public const int MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE  = MERCURY_BADGE_FOR_CUSTOM_BASE;
   public const int MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX   = MERCURY_BADGE_FOR_CUSTOM_MAX;

   public const int MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE  = MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX;
   public const int MERCURY_BADGE_FOR_CUSTOM_VIEW_MAX   = MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE + 200000;


* Android Native

public static final int    MERCURY_BADGE_FOR_FULL_BANNER  = -20;
public static final int    MERCURY_BADGE_FOR_MAIN_PAGE       = -21;
public static final int       MERCURY_BADGE_FOR_NOTICE_ONLY  = -22;
public static final int       MERCURY_BADGE_FOR_NONE       = -23;

public static final int     MERCURY_BADGE_FOR_CUSTOM_BASE  = 100000;
public static final int     MERCURY_BADGE_FOR_CUSTOM       = MERCURY_BADGE_FOR_CUSTOM_BASE;
public static final int     MERCURY_BADGE_FOR_CUSTOM_MAX   = MERCURY_BADGE_FOR_CUSTOM_BASE + 200000;

public static final int     MERCURY_BADGE_FOR_CUSTOM_BOARD_BASE  = MERCURY_BADGE_FOR_CUSTOM_BASE;
public static final int     MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX   = MERCURY_BADGE_FOR_CUSTOM_MAX;

public static final int     MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE  = MERCURY_BADGE_FOR_CUSTOM_BOARD_MAX;
public static final int     MERCURY_BADGE_FOR_CUSTOM_VIEW_MAX   = MERCURY_BADGE_FOR_CUSTOM_VIEW_BASE + 200000;

MERCURY_BADGE_TYPE

요청한 badge의 현재 상태 타입 값 (C2S.19.6 이후 더이상 사용되지 않음)

* iOS Native, C Plugin

typedef enum _MERCURY_BADGE_TYPE
{

   MERCURY_BADGE_TYPE_NONE     = -24,
   MERCURY_BADGE_TYPE_NEW      = -25,
   MERCURY_BADGE_TYPE_MAX      = -26

} MERCURY_BADGE_TYPE;


* Unity Plugin

   public const int MERCURY_BADGE_TYPE_NONE = -24;
   public const int MERCURY_BADGE_TYPE_NEW = -25;
   public const int MERCURY_BADGE_TYPE_MAX = -26;


* Android Native

public static final int    MERCURY_BADGE_TYPE_NONE          = -24;
public static final int       MERCURY_BADGE_TYPE_NEW       = -25;
public static final int       MERCURY_BADGE_TYPE_MAX       = -26; 

 

함수

void CS_MercurySetCallBack(MercuryCB callback)

void

 

in/out Type Name Description
in MercuryCB callback

Callback을 받는 함수입니다.

 

void CS_MercuryShowEx(const char* uid, MERCURY_SHOW_TYPE mercuryShowType, const char* additionalInfo)

 

void

in/out Type Name Description
in const char* uid

로그인된 유저의 uid

in MERCURY_SHOW_TYPE mercuryShowType

프로모션 배너 노출 타입

in const char* additionalInfo

mq_redirect와 같은 추가 정의된 데이터

 

int CS_MercuryGetCustomViewInfo(const char* uid, int viewID, MercuryCBWIthData customViewCallback)

* 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

구현한 콜백 함수

 

int CS_MercuryShowReviewPopup(const char* uid, const char* vid, const char* did)

* 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

 

int CS_MercuryShowNativeReviewPopup(const char* uid, const char* vid, const char* did)
* 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

 

int CS_MercuryShowMoregamesPopup(const char* uid, const char* vid, const char* did)

* 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 CS_MercurySetUid(const char* uid) (Deprecated, C2S.19.6)

void

in/out Type Name Description
in const char* uid

UID.

 

void CS_MercurySetIsUsingStaging(int isUsingStaging) (Deprecated, C2S.19.6)
 

void

in/out Type Name Description
in int isUsingStaging

테스트 서버 사용 여부를 설정합니다. 기본옵션은 false입니다.

true : 테스트 서버로 접속
false : 상용 서버로 접속

 

void CS_MercurySetLog(int isLog) (Deprecated, C2S.19.6)

void

in/out Type Name Description
in int isLog

Android Log 설정. 기본 false. iOS에서는 debug library 사용.

 

const char* CS_MercuryGetVersion()

* iOS Native
const char* / Mercury 모듈 버전 값
* Unity Plugin
string / Mercury 모듈 버전 값
* Android Native
String / Mercury 모듈 버전 값

 

void CS_MercuryGetBadge(const int badgeTarget)

void

in/out Type Name Description
in const int badgeTarget MERCURY_SHOW_TYPE 값

 

int CS_MercuryGetBadgeType(const int badgeTarget) (Deprecated, C2S.19.6)

Badge Type Enum

in/out Type Name Description
in const int badgeTarget
  • badgeTarget으로는 _MERCURY_BADGE_TARGET에 해당하는 값을 넘긴다.

 

int CS_MercuryRequestUAInfo(const char* uid, const char* additionalInfo, MercuryCBWithData callbackWithData)

MERCURY_RESULT 값
(0 : 호출 성공)

in/out Type Name Description
in const char* uid
  • 로그인한 사용자의 uid
in const char* additionalInfo
  • 해당 API 호출을 위한 json 형태의 부가 정보
    (ex : “{“uatoken”:”asdf1234qwer5678”}” )

in MercuryCBWithData callbackWithData
  • 구현된 콜백 함수
  • (ex :  "{
    "uainfo":{"result_code":"0","result_message":"success","invite_message":"HIVE SDK에 초대합니다. 함께 플레이 하면 즐거움이 두 배!","invite_link":"http:\/\/test-ua.withhive.com\/ko\/ua685c?t=1571650561"}
    }"  )

 

int CS_MercuryRequestUALinkShare(const char* urlLink, 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* urlLink
  • 공유할 url 정보
in const char* shareMessage
  • 공유할 초대 메시지

 

int CS_MercuryGetBannerInfo(const char* campaignType, const char* bannerType, MercuryCBWithData bannerInfoCallback)

* 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
  • 캠패인 타입
    (all : 모든 타입, event : 이벤트 타입, notice : 공지 타입, cross : 크로스 타입(C2S.20.3.2 이상))

in const char* bannerType
  • 배너 타입
    (great : 대배너, small : 일반 배너, rolling : 롤링 배너)

in MercuryCBWithData bannerInfoCallback
  • 구현한 콜백 함수
  • ex)"{"bannerinfo":[{"type_banner":"great","start_date":"2019-07-16 11:47:00","image":"https:\/\/image-glb.qpyou.cn\/\/hivepromotion\/banner\/1907\/4733_1563245291_ja.gif","link":"http:\/\/promotion.qpyou.cn\/news\/direct\/236275","end_date":"2029-08-03 11:47:00","type_link":"webview","pid":"236275"}]}

 

void CS_MercuryInitImageLoader()

void

 

void CS_MercurySetBannerOnGameWindow(int isOn)

void

in/out Type Name Description
in int isOn
  • HiveUiActivity 혹은 게임앱의 Activity 사용 여부
    (0 : HiveUiActivity 사용, 1 : 게임앱의 Activity 사용)

 

 

콜백 함수

typedef void (*MercuryCB)(MERCURY_RESULT result)

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;
           
    }
}
typedef void (*MercuryCBWithData)(MERCURY_RESULT result, const char* jsonData)

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());

                }
        });
}