Android Shuttle 사용법 - skpdi/sentinel-document GitHub Wiki

Sentinel 로그정의서 페이지에서 생성한 Android용 Shuttle 라이브러리 사용법 입니다.

Android용 Shuttle은 Java로 개발되었습니다.

난독화 관련

Android APK 난독화 시에는, Shuttle 을 난독화 대상에서 반드시 제외해야 합니다.

-keep class com.skplanet.pdp.sentinel.shuttle.** { *; }

사용법

Shuttle jar 파일을 클래스패스에 포함하고 아래처럼 사용할 수 있습니다.

Java 예제

// Shuttle 인스턴스를 생성합니다.
SampleSentinelShuttle shuttle = new SampleSentinelShuttle();

// Header 또는 Body에 값을 기록하기 위해 같은 이름을 가진 setter 메소드를 이용할 수 있습니다.
// 예를 들어 `page_id` 값을 기록해야 한다면 `page_id` 메소드를 이용하면 됩니다. 
shuttle.page_id("/main/card/list")
       .action_id("tap.my_card")
       .card_num("2012-3XXX-XXXX-XXXX")
       .card_company("Hana SK")
       .expired_date("MM/YY");

// 또는 `setBodyOf` 메소드를 이용해서 한번에 세팅할 수 있습니다. 
// 이 경우 메소드 이름처럼 *Body* 만 세팅되고, 메소드 이름에 나와있는 *KEY* 헤더값이 자동 세팅됩니다. 
// 'setBodyOf' 메소드를 이용할 경우, 이전에 입력했던 모든 body 값을 삭제한 다음 인자로 받은 body 값을 새로 입력합니다.
// (이 예제에서는 `page_id`, `action_id` 가 `main_card_list`, `tap_my_card` 로 세팅)
shuttle.setBodyOfMain_card_list__tap_my_card(
                                        "2012-3XXX-XXXX-XXXX", 
                                        null /* 값을 기록하고 싶지 않은 경우 null 입력 */,
                                        "MM/YY"
);

// session_id 헤더 값을 기록하고, 나머지 Body 값을 setBodyOf 메소드를 이용해서 기록하는 경우
shuttle.session_id("AF0EF")
       .setBodyOfMain_card_list__tap_my_card(
                                         "2012-3XXX-XXXX-XXXX", 
                                         null ,
                                         "MM/YY"
       );

Rake Android 에 값을 기록한 Shuttle 을 넘겨주려면 다음처럼 사용합니다. (Rake-Android API 참고)

rake.track(shuttle.toJSONObject());

디버깅을 위해 toJSONString() 메소드를 사용할 수 있습니다.

Log.d(shuttle.toJSONString());

Kotlin 예제

// Shuttle 인스턴스를 생성합니다.
var shuttle = new SampleSentinelShuttle()

// Header 또는 Body에 값을 기록하기 위해 같은 이름을 가진 setter 메소드를 이용할 수 있습니다.
// 예를 들어 `page_id` 값을 기록해야 한다면 `page_id` 메소드를 이용하면 됩니다. 
shuttle.page_id("/main/card/list")
       .action_id("tap.my_card")
       .card_num("2012-3XXX-XXXX-XXXX")
       .card_company("Hana SK")
       .expired_date("MM/YY")

// 또는 `setBodyOf` 메소드를 이용해서 한번에 세팅할 수 있습니다. 
// 이 경우 메소드 이름처럼 *Body* 만 세팅되고, 메소드 이름에 나와있는 *KEY* 헤더값이 자동 세팅됩니다. 
// 'setBodyOf' 메소드를 이용할 경우, 이전에 입력했던 모든 body 값을 삭제한 다음 인자로 받은 body 값을 새로 입력합니다.
// (이 예제에서는 `page_id`, `action_id` 가 `main_card_list`, `tap_my_card` 로 세팅)
shuttle.setBodyOfMain_card_list__tap_my_card(
                                        "2012-3XXX-XXXX-XXXX", 
                                        null /* 값을 기록하고 싶지 않은 경우 null 입력 */,
                                        "MM/YY"
)

// session_id 헤더 값을 기록하고, 나머지 Body 값을 setBodyOf 메소드를 이용해서 기록하는 경우
shuttle.session_id("AF0EF")
       .setBodyOfMain_card_list__tap_my_card(
                                         "2012-3XXX-XXXX-XXXX", 
                                         null ,
                                         "MM/YY"
       )

Rake Android 에 값을 기록한 Shuttle 을 넘겨주려면 다음처럼 사용합니다. (Rake-Android API 참고)

rake?.track(shuttle.toJSONObject())

디버깅을 위해 toJSONString() 메소드를 사용할 수 있습니다.

Log.d(shuttle.toJSONString())

⚠️ **GitHub.com Fallback** ⚠️