고급 옵션

문서

고급 옵션

구형 기기에서 설치 리퍼러 수집하기

참고: Google은 install_referrer 인텐트 브로드캐스트를 더 이상 사용하지 않습니다. 참조하세요: 아직도 인스톨 리퍼러 브로드캐스트를 사용하시나요? 2020년 3월 1일까지 플레이 리퍼러 API로 전환하세요.

인스톨 리퍼러는 Singular가 사기 시도를 감지하고 분석하는 데 도움을 줄 뿐만 아니라 어트리뷰션을 결정하는 가장 정확한 도구입니다. 이는 사용자가 앱을 설치하기 전에 클릭한 광고를 가리키는 구글 플레이 스토어에서 제공하는 식별자입니다.

최신 버전의 구글 플레이 스토어가 설치된 기기에서, Singular SDK는 자동으로 인스톨 리퍼러 값을 수집합니다(Singular는 최신 구글 플레이 리퍼러 API와 연동되어 있기 때문에).

구형 기기에서 인스톨 리퍼러를 수집하려면 다음과 같이 하세요:

기존 인스톨 리퍼러 리시버가 있는 경우:

앱에 이미 안드로이드에서 INSTALL_REFERRER를 수신하는 BroadcastReceiver가 있을 가능성이 높습니다.

그렇다면 BroadcastReceiver의 onReceive 메서드로 이동하여 다음 줄을 추가하세요:

java
new SingularInstallReceiver().onReceive(context, intent);

예를 들어 기존 수신기의 이름이 MyCustomInstallReceiver인 경우 다음과 같이 표시되어야 합니다:

java
public class MyCustomInstallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Pass install referrer information on to Singular

        new SingularInstallReceiver().onReceive(context, intent);
        // ...

    }
}

다른 설치 리퍼러 리시버가 없는 경우:

앱에 설치 리퍼러 리시버가 없는 경우, 매니페스트 파일의 <application> 태그에 다음을 추가하여 Singular SDK가 유일한 리시버를 등록하도록 할 수 있습니다:

xml
<receiver android:exported="true" android:name="com.singular.sdk.SingularInstallReceiver">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

수동으로 세션 관리하기

안드로이드 API 14(아이스크림 샌드위치) 이상의 경우, Singular SDK가 자동으로 세션 관리를 처리할 수 있습니다. 앱의 최소 SDK 버전이 14 이상인 경우 세션 관리를 위해 추가 구성이 필요하지 않습니다.

세션 시간 초과 수정

기본적으로 앱이 백그라운드에서 60초 이상 실행된 후 포그라운드로 돌아오면 SDK는 새 세션을 등록합니다.

타임아웃 값을 변경하려면 SDK를 초기화하기 전에 SingularConfig에서 withSessionTimeoutInSec(<초 단위의 타임아웃>)을 사용합니다.

예를 들어

java
// Set the session timeout to 120 seconds

SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withSessionTimeoutInSec(120); 

수동 세션 관리

앱의 minSdkVersion이 14 미만인 경우, 각 활동에서 Singular의 SDK 두 가지 세션 처리 메서드인 onActivityPausedonActivityResumed를 호출하여 세션을 수동으로 관리해야 합니다.

참고: 다른 모든 활동이 파생되는 사용자 지정 공통 기본 활동 클래스가 있는 경우, 공통 활동의 'onResume 및 onPause 메서드'에서 onActivityResumed 및 onActivityPaused를 호출할 수 있습니다.

Singular.onActivityResumed 메서드
설명 활동의 onResume 메서드 내에서 이 메서드를 호출하여 Singular 세션을 관리합니다.
서명 public static void onActivityResumed()
사용 예시
java
@Override
protected void onResume() {
    super.onResume();
    Singular.onActivityResumed();
    .... //other code if any
}
Singular.onActivityPaused 메서드
설명 활동의 onPause 메서드 내에서 이 메서드를 호출하여 Singular 세션을 관리합니다.
서명 public static void onActivityPaused()
사용 예시
java
@Override
protected void onPause() {
    super.onPause();
    Singular.onActivityPaused();
    .... //other code if any
}

자바Script 인터페이스 사용

Singular는 앱의 자바Script 코드 내에서 Singular를 호출하기 위해 사용할 수 있는 자바Script 인터페이스를 제공합니다.

예를 들어, 자바Script 인터페이스를 설정하면 다음과 같이 자바Script 코드에서 Singular로 이벤트를 보낼 수 있습니다:

이벤트 예시

javascript
SingularInterface.event('event');
SingularInterface.event('test',
    JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));

이 인터페이스는 다음 SDK 메서드를 지원합니다:

  • setCustomUserID
  • unsetCustomUserID
  • event
  • revenue

자바Script 인터페이스를 활성화하려면 기본 활동에 다음 코드 줄을 추가하세요. 여기서 'myWebView'는 웹뷰의 이름입니다.

java
SingularJSInterface singularJSInterfaceInstance = new SingularJSInterface(this);
singularJSInterfaceInstance.setWebViewId(R.id.webview);
myWebView.addjavascriptInterface(singularJSInterfaceInstance, "SingularInterface");

참고:

  • 웹뷰가 두 개 이상 있는 경우 각 웹뷰에 대해 이 작업을 수행합니다.
  • 애플리케이션의 onCreate 메서드에 코드를 배치하는 것이 좋습니다.

onCreate 메서드는 다음과 같이 보일 수 있습니다:

java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView myWebView = (WebView) this.findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setjavaScriptEnabled(true);
    myWebView.loadUrl("file:///android_asset/index.html");

    SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET");
    Singular.init(this, config);
    SingularJSInterface singularJSInterfaceInstance = 
        new SingularJSInterface(this);
    singularJSInterfaceInstance.setWebViewId(R.id.webview);
    myWebView.addjavascriptInterface(singularJSInterfaceInstance,
        "SingularInterface");
}

OAID(오픈 광고 ID) 수집하기

구글 플레이를 사용하지 않는 국가에서는 안드로이드 기기에 구글 광고 ID(GAID, Singular형 AIFA라고도 함)가 없습니다. 대신 기기에서 발생하는 세션 및 이벤트를 추적하는 데 사용할 수 있는 OAID(개방형 광고 식별자)라는 식별자를 제공할 수 있습니다.

OAID는 현재 화웨이 및 모바일 보안 연합(MSA)에 속한 브랜드에서 제공하는 디바이스에서 제공됩니다.

앱에서 OAID를 수집하려면 먼저 MSA SDK와 Huawei OAID SDK를 연동해야 합니다. 두 SDK를 모두 연동해야 OAID를 제공하는 모든 플랫폼에서 OAID를 수집할 수 있습니다.

그런 다음 Singular SDK가 추적에 OAID를 사용하도록 하려면 Singular를 초기화하기 전에 구성 개체에서 withOAIDCollection에 대한 호출을 추가하세요.

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
    .withOAIDCollection();
Singular.init(context, config);

그러면 Singular SDK가 디바이스에 OAID가 있는지 여부와 식별자를 수집하는 데 사용해야 하는 OAID SDK를 자동으로 감지합니다.


IMEI 번호 수집

앱이 구글 플레이를 사용하지 않는 국가에서 제공되는 경우, 기기에는 구글 광고 ID가 없습니다. 이 경우 대신 디바이스 IMEI(국제 모바일 장비 식별 번호)를 수집할 수 있습니다.

참고: Google Play 서비스를 사용하는 경우에는 Google Play 서비스 계약에 위배되므로 IMEI 번호를 수집해서는 안 됩니다.

IMEI 번호를 수집하려면 다음과 같이 하세요:

앱의 AndroidManifest.xml 파일에 android.permission.READ_PHONE_STATE 권한을 추가합니다:

xml
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

다음과 같은 코드를 추가하여 디바이스의 IMEI 번호를 가져옵니다:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

String imei = null;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    imei = telephonyManager.getImei();
} else {
    imei = telephonyManager.getDeviceId();
}

다음 방법 중 하나를 사용하여 IMEI 번호를 Singular로 전송합니다:

권장: 다음 예제에서와 같이 Singular SDK를 초기화하기 전에 withIMEI를 사용하여 SingularConfig에서 IMEI 번호를 설정합니다. 이렇게 하면 첫 번째 세션부터 Singular에서 IMEI 번호를 사용할 수 있습니다.

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
  .withIMEI("537769845792516");
Singular.init(context, config);

SDK 초기화 후 코드의 어느 지점에서든 IMEI 번호를 설정하려면 setIMEI를 호출하세요.

Singular.setIMEI 메서드
설명 디바이스의 IMEI 번호를 Singular로 전송합니다.
서명 public void setIMEI(string IMEIString)
사용 예제
java
Singular.setIMEI(IMEIString);