React Native SDK: 기본 연동

 

프로젝트에 SDK 추가하기

프로젝트에 싱글 리액트 SDK를 추가하려면 다음과 같이 하세요:

  1. 프로젝트의 루트 디렉토리에서 터미널을 엽니다.
  2. 다음 명령을 사용하여 프로젝트에 SDK 패키지를 다운로드합니다:

    npm install singular-react-native --save
  3. React Native 0.60 이상을 사용하는 경우 Singular 패키지가 프로젝트에 자동으로 링크됩니다.

    React Native 버전 0.59 이하를 사용하는 경우 다음을 실행하여 Singular 패키지의 네이티브 브리지 코드를 프로젝트에 연결하세요:

    react-native link singular-react-native

전제 조건 설정

iOS 전제 조건

프로젝트의 루트 디렉토리에서 다음 명령을 실행합니다:

cd ios; pod install

안드로이드 필수 구성 요소

모든 프로젝트의 build.gradle 파일의 모든 프로젝트 섹션에서 앱의 Maven 저장소에 다음을 추가합니다:

allprojects {
  repositories {
    maven { url 'https://maven.singular.net/' }
  }
}

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 이 권한은 Google Play 리퍼러 데이터를 검색하는 데 필요합니다. --> <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
<!-- 이 권한은 Google 라이선싱 API에서 데이터를 검색하는 데 필요합니다. --> <uses-permission android:name="com.android.vending.CHECK_LICENSE" />

앱 빌드가 Android 12/API 레벨 31 이상을 대상으로 하는 경우 Google 광고 ID에 액세스할 수 있는 권한을 추가합니다:

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Singular SDK에 대한 전이 종속성을 비활성화한 경우 앱에 다음을 추가합니다. build.gradle.

implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.0'

SDK 초기화

참고: 싱귤러 SDK를 구현할 때 GDPR, CCPA, COPPA를 포함하되 이에 국한되지 않는 비즈니스를 운영하는 지역에서 제정된 다양한 개인정보 보호법을 준수해야 합니다. 자세한 내용은 SDK 옵트인 및 옵트아웃 사례를 참조하세요.

SDK 초기화 코드는 앱을 열 때마다 호출되어야 합니다. 이는 모든 싱귤러 어트리뷰션 기능의 전제 조건이며, 새 사용자 세션을 싱귤러로 전송하기도 합니다. 세션은 사용자 리텐션을 계산하는 데 사용됩니다.

필수 클래스 가져오기

App.js 파일에 다음 코드를 추가하여 싱귤러 및 싱귤러컨피그 클래스를 가져옵니다.

import {Singular, SingularConfig, Events, Attributes} from 'singular-react-native';

SDK 구성 및 초기화

  1. Singular SDK를 초기화하기 전에 SingularConfig 객체를 만들어야 합니다. 이 객체에는 SDK 키와 SDK 비밀 번호가 포함되어 있습니다(Singular 계정에 로그인한 후 "개발자 도구 > SDK 통합 > SDK 키"로 이동하여 얻을 수 있습니다).
  2. 선택적으로 다양한 SDK 기능을 활성화하는 설정을 추가할 수 있습니다.
  3. 메타 인스톨 리퍼러 어트리뷰션 지원

    '메타 인스톨 리퍼러' 어트리뷰션을 활성화하는 데 필요한 SDK 구성입니다:

    1. 싱귤러 구성 개체에서 페이스북 앱 ID를 입력합니다.
      // META 설치 리퍼러를 활성화하려면
      config.withFacebookAppId("여기에 Facebook 앱 ID를 입력하세요.");
    앱의 Facebook 앱 ID는 어디에서 찾을 수있나요?
  4. 그런 다음 init 메서드를 사용하여 SDK를 초기화하면서 SingularConfig 객체를 전달합니다

const config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
  
 // 선택적 설정:
// 초기화 시 사용자 ID를 알고 있는 경우 설정하기 config.withCustomUserId("274e9db5c836093499df921be5b7f32001d49c50");
// 메타 설치 리퍼러를 사용하려면 다음과 같이 하세요.
config.withFacebookAppId("INSERT YOUR FACEBOOK APP ID HERE");

// 딥링킹 사용
config.withSingularLinks(callBackFunction); Singular.init(config);
Singular.init 메서드
설명 Singular SDK를 초기화합니다.
사용 예시
Singular.init(config);

SingularConfig 옵션

".with" 메서드 설명
withCustomUserId(user_id) 싱귤러에 사용자 ID를 전송합니다(자세히 알아보기).
withFacebookAppId(FACEBOOK_APP_ID)

참고: 메타 인스톨 리퍼러 어트리뷰션을 활성화하려면 싱귤러 구성 개체에 페이스북 앱 ID를 제공하세요.

withSingularLinks(callBackFunction) 딥링킹 활성화(자세히 알아보기)
withSessionTimeoutInSec(seconds) 세션 타임아웃 수정(자세히 알아보기)

싱귤러에 사용자 ID 보내기(선택 사항)

싱귤러 SDK 방법을 사용하여 내부 사용자 ID를 싱귤러에 전송할 수 있습니다.

참고: 싱귤러의 크로스 디바이스 솔루션을 사용하는 경우, 모든 플랫폼에서 사용자 ID를 수집해야 합니다.

  • 사용자 ID는 모든 식별자가 될 수 있으며 PII(개인 식별 정보)를 노출해서는 안 됩니다. 예를 들어 사용자의 이메일 주소, 사용자 이름 또는 전화번호를 사용해서는 안 됩니다. 싱귤러는 퍼스트 파티 데이터에만 고유한 해시값을 사용할 것을 권장합니다.
  • 또한 Singular에 전달되는 사용자 ID 값은 모든 플랫폼(웹/모바일/PC/콘솔/오프라인)에서 캡처한 내부 사용자 ID와 동일해야 합니다.
  • Singular는 사용자 수준 내보내기, ETL 및 내부 BI 포스트백(구성된 경우)에 사용자 ID를 포함합니다. 사용자 ID는 퍼스트 파티 데이터이며, Singular는 이를 다른 당사자와 공유하지 않습니다.
  • 싱귤러 SDK 메서드로 설정한 사용자 ID 값은 unsetCustomUserId 메서드를 사용하여 설정 해제하거나 앱을 제거할 때까지 지속됩니다. 앱을 닫거나 다시 시작해도 사용자 ID는 설정이 해제되지 않습니다.

사용자 ID를 설정하려면 setCustomUserId 메서드를 사용합니다. 설정을 해제하려면(예: 사용자가 계정에서 '로그아웃'하는 경우) unsetCustomUserId 으로 전화하세요.

참고: 여러 사용자가 하나의 디바이스를 사용하는 경우 로그인 및 로그아웃할 때마다 사용자 ID를 설정하고 설정 해제하는 로그아웃 플로우를 구현하는 것이 좋습니다.

앱이 열릴 때 사용자 ID를 이미 알고 있는 경우 Singular SDK를 초기화하기 전에 setCustomUserId 으로 전화하세요. 이렇게 하면 싱귤러가 첫 번째 세션부터 사용자 ID를 가질 수 있습니다. 그러나 일반적으로 사용자가 등록하거나 로그인을 수행할 때까지 사용자 ID를 사용할 수 없습니다. 이 경우 등록 흐름이 완료된 후 setCustomUserId 으로 호출하세요.

Singular.setCustomUserId 메서드
설명 사용자 ID를 Singular로 보냅니다.
Signature static setCustomUserId(customUserId)
사용 예제
Singular.setCustomUserId("custom_user_id");
Singular.unsetCustomUserId 메서드
설명 Singular에 전송된 사용자 ID를 설정 해제합니다.
Signature 정적 불설정 사용자 아이디()
사용 예제
Singular.unsetCustomUserId();

선택 사항입니다: 사용자 정의 사용자 ID 장치 매핑

중요: 이 고급 엔터프라이즈 기능은 예외적인 경우에만 사용할 수 있습니다.이 기능을 구현하기 전에 싱귤러의 솔루션 엔지니어와 상담하세요.

싱귤러는 서버 간 연동을 통해 추가 모바일 이벤트 추적 데이터를 수신할 수 있습니다. 이 기능을 활용하려면 사용자 ID를 Singular의 모바일 디바이스 추적 식별자에 매핑해야 합니다.

참고: 이 메서드는 싱귤러 SDK를 초기화한 후 또는 사용자 ID를 확보한 후 가능한 한 빨리 호출하세요.

싱귤러.설정 디바이스 커스텀 유저 아이디 메서드
설명 사용자 지정 사용자 ID를 로그인과 동일하게 설정하고 이를 Singular의 추적 식별자에 매핑합니다.
서명 static setDeviceCustomUserId(customUserId)
사용 예시
Singular.setDeviceCustomUserId("CustomUserId");

앱 트래킹 투명성 동의 처리하기

iOS 14.5부터는 추적을 위해 기기의 IDFA에 액세스하기 전에 사용자 동의를 요청해야 합니다(ATTrackingManager 사용).

사용자에게 동의를 요청하기 전에 Singular SDK를 초기화하려는 경우, 사용자 동의를 기다리기 위해 지정된 시간 간격 동안 SDK가 IDFA 없이 이벤트를 실행하지 못하도록 지연시킬 수 있습니다.

이렇게 하려면 다음 예제에서와 같이 waitForTrackingAuthorizationWithTimeoutInterval옵션을 사용하여 Singular SDK를 초기화합니다:

const config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
  
// SKAdNetwork 활성화
config.withSkAdNetworkEnabled(true);
  
// 이벤트를 보내기 전에 추적 승인을 위해 5분간 기다립니다.
config.withWaitForTrackingAuthorizationWithTimeoutInterval(300);
  
Singular.init(config);

이벤트 추적

싱귤러는 인앱 이벤트에 대한 데이터를 수집하여 캠페인의 성과를 분석하고 KPI를 측정하는 데 도움을 줄 수 있습니다. 예를 들어, 게임 앱에서 사용자 로그인, 등록, 튜토리얼 완료 또는 레벨 업에 대한 데이터를 수집하고자 할 수 있습니다.

싱귤러는 다양한 표준 이벤트를 지원합니다. 일반적으로 사용되는 이러한 이벤트는 보고 및 최적화를 위해 애드 네트워크에서 지원하는 경우가 많습니다. 또 다른 장점은 표준 이벤트 이름을 사용하면 수동으로 정의할 필요 없이 Singular가 자동으로 인식하여 이벤트 목록에 추가한다는 것입니다. 가능하면 표준 이벤트를 사용하는 것이 좋습니다.

싱귤러로 전송되는 이벤트 목록(함께 제공되는 속성 포함)은 UA/마케팅/비즈니스 팀에서 조직의 마케팅 KPI를 기반으로 작성해야 합니다. 비즈니스 팀은 인앱 이벤트 추적 방법의 가이드를 따를 수 있습니다: 싱귤러 어트리뷰션 고객을 위한 가이드.

추적하는 각 이벤트마다 다양한 어트리뷰트를 전달할 수 있습니다. 이벤트별 권장 표준 어트리뷰트를 참조하세요.

코드에서 이벤트 또는 eventWithArgs 메서드를 사용하여 싱귤러에 이벤트를 전송합니다.

참고: 표준 이벤트의 경우, 이벤트의 React N ative SDK에 표시된 대로 이벤트의 React Native 이름을 사용하세요: 표준 이벤트 및 어트리뷰트 목록( 예: sngLogin)을 참조하세요.

사용자 정의 이벤트의 경우, 조직에서 측정하려는 이벤트 중 Singular의 표준 이벤트와 일치하지 않는 이벤트는 사용자 정의 이름 (최대 32자)을 사용합니다. 최적화 목적으로 싱귤러로부터 이벤트를 수신할 수 있는 애드 네트워크 파트너와의 호환성을 위해 영어로 된 이름을 사용하는 것이 좋습니다.

Singular.event 메서드
설명 이벤트 이름을 전달하여 사용자 이벤트를 Singular에 보고합니다.
사용 예시
/* 표준 이벤트 로그인 보내기 */
Singular.event(sngLogin);
Singular.eventWithArgs 메서드
설명 이벤트 이름과 추가할 추가 정보를 맵/객체 형태로 전달하여 Singular에 사용자 이벤트를 보고합니다.
사용 예시
/* 권장 속성을 사용하여 표준 이벤트 콘텐츠 보기를 보냅니다. */
Singular.eventWithArgs(sngContentView, {
sngAttrContentType: 'PrivacyController',
sngAttrContentId: '130',
sngAttrContent: 'GDPR Opt-Out Options'
});

구매 추적

싱귤러는 앱을 통해 얻은 수익에 대한 데이터를 수집하여 캠페인의 성과와 ROI를 분석하는 데 도움을 줄 수 있습니다. 싱귤러는 보고서, 로그 내보내기 및 포스트백에서 데이터를 사용할 수 있도록 합니다.

싱귤러에 수익 이벤트를 보고할 때는 안드로이드 또는 iOS의 인앱 구매(IAP) 프로세스에서 반환된 구매 개체를 전달하는 것이 좋습니다. 이렇게 하면 싱귤러가 거래의 모든 세부 정보를 가져와서 싱귤러 보고서의 데이터를 더욱 풍부하게 만들 수 있습니다. 또한, 싱귤러는 인앱 사기 방지와 관련하여 트랜잭션의 유효성을 검사하는 데 사용할 수 있는 트랜잭션 영수증을 Google로부터 받습니다.

React Native에서 구매 객체 전달하기

이 방법을 사용하려면 앱에서 트랜잭션을 관리하기 위해 React Native의 인앱 구매 패키지를사용해야 합니다.

Singular.inAppPurchase 메서드
설명 싱귤러에 IAP 이벤트를 보고합니다.
사용 예시
// 단품 구매 클래스 가져오기 추가
import {
   Singular,
   SingularConfig,
   SingularIOSPurchase,
   SingularAndroidPurchase,
  } from 'singular-react-native';
  
  let singularPurchase = null;
  
  if (Platform.OS === 'ios') {
   singularPurchase = new SingularIOSPurchase(
     product.revenue,
     product.currency,
     purchase.productId,
     purchase.transactionId,
     purchase.transactionReceipt,
   );
  } else if (Platform.OS === 'android'){
   singularPurchase = new SingularAndroidPurchase(
     product.revenue,
     product.currency,
     purchase.transactionReceipt,
     purchase.signatureAndroid,
   );
  }
  
  Singular.inAppPurchase('report iap', singularPurchase);

참고: 통화를 세 글자로 된 ISO 4217 통화 코드로 전달하세요(예: "USD," "EUR", "INR").

네이티브 코드를 사용하여 구매 개체 전달

리액트 네이티브 인앱 구매 패키지를 사용하지 않는 경우에도 구매 객체와 함께 수익 이벤트를 싱귤러로 보낼 수 있지만, 네이티브 iOS 및 안드로이드 코드를 사용해야 합니다.

참고: 통화를 세 글자로 된 ISO 4217 통화 코드로 전달하세요(예: "USD," "EUR", "INR").

iOS

iapComplete:트랜잭션 메서드
설명 모든 세부 정보를 포함하여 Singular에 IAP 이벤트를 보고하고, 선택적으로 이벤트 이름을 추가합니다.
사용 예시
// 거래 세부 정보를 Singular에 보고합니다.
[Singular iapComplete:transaction];
  
// 사용자 지정 이름을 사용하여 거래 세부 정보를 Singular에 보고합니다.
[Singular iapComplete:transaction withName:@"MyCustomRevenue"];

안드로이드

안드로이드의 IAP 기능을 활용하려면 먼저 앱에 다음을 추가하세요. build.gradle 파일에 다음을 추가합니다:

implementation 'com.singular.sdk:singular_sdk:9.+
Singular.revenue 메서드
설명 구글 빌링 라이브러리에서 수신한 구매 객체를 사용하여 수익 이벤트를 싱귤러에 보고합니다.
사용 예시
Singular.revenue("USD", 5.50, purchase);
Singular.customRevenue 메서드
설명 이벤트의 사용자 지정 이름과 Google 청구 라이브러리에서 수신한 구매 개체를 사용하여 수익 이벤트를 Singular에 보고합니다.
사용 예시
Singular.customRevenue("MyCustomRevenue", 
"USD", 5.50, purchase);

구매 개체 없이 수익 이벤트 보고하기

위에서 설명한 방식으로 수익 이벤트를 보고하는 것을 강력히 권장하지만, 통화와 거래 금액만 전달하여 Singular에 수익 이벤트를 보낼 수도 있습니다. 이 경우 Singular는 구매 영수증을 받지 못하며 거래의 유효성을 검사할 수 없다는 점에 유의하세요.

더 읽어보기...
Singular.revenue 메서드
설명 수익 통화 및 금액과 함께 수익 이벤트를 Singular에 보고합니다.
사용 예시
Singular.revenue("USD", 5.50);
Singular.customRevenue 메서드
설명 수익 통화와 금액, 이벤트의 사용자 지정 이름과 함께 수익 이벤트를 Singular에 보고합니다.
사용 예시
Singular.customRevenue("MyCustomRevenue", "USD", 5.50);

참고: 통화를 세 글자로 된 ISO 4217 통화 코드(예: "USD," "EUR", "INR")로 전달하세요.

하이브리드 이벤트 추적(고급)

싱귤러는 앱에 연동된 싱귤러 SDK를 통해 모든 이벤트와 구매을 전송할 것을 권장합니다. 그러나 Singular는 다른 소스에서 이벤트와 구매을 수집할 수 있습니다.

싱귤러 SDK에서 전송되지 않은 모든 이벤트는 싱귤러의 서버 간 이벤트 문서 요구사항을준수해야 하며, 이벤트의 정확한 어트리뷰션을 위해 일치하는 기기 식별자를 제공해야 합니다.

중요:

서버 간 이벤트 요청에 사용된 디바이스 식별자가 Singular에서 일치하는 디바이스 식별자가 없는 경우 불일치가 발생할 수 있습니다. 다음과 같은 가능성에 유의하세요:

  • 이벤트 요청이 앱 세션에서 싱귤러 SDK가 디바이스 식별자를 기록하기 '전에 ' 수신된 경우, 이벤트 요청은 알 수 없는 디바이스에 대한 '첫 번째 세션'으로 간주되며, 싱귤러는 해당 디바이스를 오가닉 어트리뷰션으로 어트리뷰션합니다.
  • 싱귤러 SDK가 디바이스 식별자를 기록했지만, 싱귤러 SDK 식별자가 서버 간 이벤트 요청에 지정된 디바이스 식별자와 다른 경우, 이벤트는 잘못 어트리뷰션됩니다.

하이브리드 이벤트 추적 가이드

내부 서버에서 이벤트 보내기

싱귤러는 서버에서 수익에 대한 데이터를 수집하여 캠페인의 성과와 ROI를 분석하는 데 도움을 줄 수 있습니다.

요구사항:

  • 인앱 등록 또는 로그인 이벤트에서 디바이스 식별자를 캡처하여 전달하고 이 데이터를 서버의 사용자 ID와 함께 저장하세요. 디바이스 식별자는 사용자에 따라 변경될 수 있으므로 사용자가 앱 세션을 생성할 때 식별자를 업데이트해야 합니다. 이렇게 하면 서버 측 이벤트가 올바른 디바이스에 어트리뷰션되도록 보장할 수 있습니다.
  • 서버 측 이벤트는 플랫폼별로 다르므로 디바이스 플랫폼과 일치하는 디바이스 식별자(예: iOS 디바이스의 경우 IDFA 또는 IDFV)로만 전송해야 합니다.
  • 싱귤러 내부 BI 포스트백 메커니즘을 사용하여 이벤트를 내부 엔드포인트로 실시간으로 푸시하여 서버 측의 데이터 집합을 업데이트할 수 있습니다. 내부 BI 포스트백 FAQ를 참조하세요.
  • 자세한 내용은 서버 간 통합 가이드의 "수익 추적 " 섹션을 검토하세요.
수익 제공업체에서 이벤트 보내기
RevenueCat 또는 adapty와 같은 타사 제공업체는 구매 및 구독 수익을 Singular에 제공할 수 있습니다.

이러한 파트너를 활성화하는 방법에 대한 자세한 내용은 아래 링크를 참조하세요.

세그먼트에서 이벤트 보내기

세그먼트에서 싱귤러 SDK와 병행하여 싱귤러에 이벤트를 보내려면 세그먼트에 "클라우드 모드" 대상을 추가해야 합니다. 여기에서 가이드를 따르세요.

딥링킹 지원 추가

딥링크는앱 내의 특정 콘텐츠로 연결되는 링크입니다. 사용자가 앱이 설치된 기기에서 딥링크를 클릭하면 앱이 열리고 특정 제품이나 경험이 표시됩니다.

단일 추적 링크에는 딥링킹뿐만 아니라 디퍼드 딥링킹도포함될 수 있습니다(자세한 내용은 딥링킹FAQ 및 단일 링크 FAQ참조).

아래 지침은 방법을 보여줍니다:

  1. 앱이 열리도록 유도한 추적 링크에 액세스합니다,
  2. 딥링크 목적지를 읽고
  3. 적절한 콘텐츠를 표시합니다.

참고: 이 문서에서는 조직에서 2019년에 출시된 싱귤러의 새로운 추적 링크 기술인 싱귤러 링크를사용한다고 가정합니다.

이전 싱귤러 고객은 싱귤러의 이전 트래킹 링크를 사용하고 있을 수 있습니다. 링크 생성 [레거시 트래킹 링크]를 참조하세요.

싱글 링크 활성화

iOS 및 Android에서 싱글 링크를 사용 설정하려면 싱글 링크 전제 조건을 참조하세요.

단일 링크 처리

싱귤러 SDK는 앱이 열리게 된 추적 링크의 세부 정보를 읽을 수 있는 핸들러 메커니즘을 제공합니다.

핸들러를 사용하려면 다음과 같이 하세요:

  1. 호출 withSingularLinks 를 호출합니다. 그러면 싱귤러 링크 핸들러가 등록됩니다.
  2. 처리기 내에서 아래 예시와 같이 SingularLinksParams 객체를 수신하는 콜백 함수를 호출하거나 정의합니다. SingularLinksParams 객체에는 다음 필드가 포함됩니다:
    • deeplink - 쿼리 매개변수에 제공된 딥링크 주소 _dl 쿼리 매개변수에 제공된 딥링크 주소. 사용자에게 적합한 제품이나 경험을 표시하기 위해 파싱해야 하는 필드입니다.
    • passthrough - 모든 매개 변수는 _p 쿼리 매개변수에 포함된 모든 매개변수입니다.
    • isDeferred - 디퍼드 딥링크인 경우 참입니다.
    • urlParameters - 단일 추적 링크의 모든 쿼리 문자열 매개변수를 반환합니다.
      • 모든 쿼리 문자열 매개변수를 _forward_params=1 키/값 쌍을 싱귤러 트래킹 링크에 추가해야 모든 쿼리 문자열 파라미터를 SDK에서 사용할 수 있습니다.
const config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
  config.withSingularLink(singularLinksParams => {
      const deeplink = singularLinksParams.deeplink;
      const passthrough = singularLinksParams.passthrough;
      const isDeferred = singularLinksParams.isDeferred;
      const urlParameters = singularLinksParams.urlParameters;
      
      // 여기에 코드를 추가하여 딥링크를 처리하세요.
  });
  //...
  Singular.init(config);

전제 조건 설정

iOS 전제 조건

프로젝트의 AppDelegate.m에 다음을 추가합니다:

// AppDelegate.m 상단
  #import <Singular-React-Native/SingularBridge.h>
  
  - (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // didFinishLaunchingWithOptions 내부 추가 [SingularBridge startSessionWithLaunchOptions:launchOptions]; return YES; } // 앱 델리게이트에 이 메서드 추가 - (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id> * _Nullable))restorationHandler{ [SingularBridge startSessionWithUserActivity:userActivity]; return YES; }

안드로이드 전제 조건

프로젝트의 MainActivity.java에 다음을 추가합니다:


// 클래스 상단에 있는 가져오기의 일부로 추가하기
import android.content.Intent;
import net.singular.react_native.SingularBridgeModule;
  
// Add to the MainActivity class
  @Override
  public void onNewIntent(Intent intent) {
    if(intent.getData() != null) {
      setIntent(intent);
      super.onNewIntent(intent);
      SingularBridgeModule.onNewIntent(intent);
    }
  }

소개: SKAdNetwork 및 SKAN

SKAdNetwork는최종 사용자의 개인정보를 침해하지 않으면서 모바일 인스톨을 어트리뷰션하기 위한 Apple의 새로운 프레임워크입니다. 싱귤러의 새로운 버전의 iOS SDK는 최소한의 엔지니어링 노력으로 SKAdNetwork를 원활하게 구현할 수 있도록 지원합니다. 이 SKAdNetwork 구현은 SK광고네트워크의 원활한 구현을 위해 싱귤러가 개발한 표준인 SKAN을 기반으로 합니다.

싱귤러의 SKAdNetwork 구현에 대한 전체 가이드는 iOS SDK SKAdNetwork 구현 가이드를 참조하세요.

SK애드네트워크 트래킹 활성화하기

앱에 SKAdNetwork 추적을 활성화하려면, 싱귤러를 초기화하기 전에 skAdNetworkEnabled 설정 옵션을 켜세요:

const config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');

// SKAdNetwork 활성화
config.withSkAdNetworkEnabled(true);

// 전환 값이 업데이트될 때 콜백에 등록하세요.
config.conversionValueUpdatedHandler(value => {
	console.log(`Updated conversion value: ${value}`);
  });

Singular.init(config);

전환 값 업데이트 처리

관리 모드

기본적으로 SKAdNetwork 구현은 싱귤러 서버 측에서 직접 전환 값을 관리합니다.

이를 통해 클라이언트 측 코드를 수정하지 않고도 싱귤러 플랫폼을 통해 전환 값을 설정하고 변경할 수 있어 유연성을 극대화할 수 있습니다.

이 서버 측 관리 모드는 SKAdNetwork 타이머를 처리하는 데도 도움이 됩니다. SKAdNetwork에 등록한 시점부터 24시간 이내에 전환 값을 업데이트할 수 있습니다. 전환 값을 업데이트하기 위해 호출하면 타이머가 24시간 더 연장됩니다. 따라서 전환 이벤트를 선택할 때 해당 업데이트 기간 내에 이벤트가 발생하는지 확인해야 합니다. 관리 모드에서는 앱의 새 버전을 릴리스하지 않고도 언제든지 전환 이벤트 구성을 변경할 수 있습니다.

수동 모드

앱 코드에서 직접 전환 값을 업데이트하려면 SDK를 초기화할 때 withManualSkanConversionManagement를 호출하세요:

const config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
// SKAdNetwork 활성화
config.withSkAdNetworkEnabled(true);

// 수동 전환 값 업데이트 사용
config.withManualSkanConversionManagement();

Singular.init(config);

그런 다음, 앱의 라이프사이클에서 필요할 때마다 skanUpdateConversionValue 메서드를 사용하여 전환 값을 업데이트합니다:

skanUpdateConversionValue 메서드 (자바스크립트)
설명 SKAdNetwork 전환 값을 수동으로 업데이트합니다.
시그니처 Singular.skanUpdateConversionValue(conversionValue)
사용 예시
// 가입 이벤트 발생
Singular.event("SignUp");

// 전환값을 7로 업데이트
Singular.skanUpdateConversionValue(7);

참고: 초기화 시 SDK를 수동 업데이트하도록 설정하지 않은 경우, skanUpdateConversionValue 메서드는 작동하지 않습니다.

전환 값 검색하기

현재 전환 값을 가져오려면 skanGetConversionValue 메서드를 사용합니다. 이 메서드는 관리 모드와 수동 모드 모두에서 작동합니다.

skanGetConversionValue 메서드(자바스크립트)
설명 싱글 SDK가 추적하는 현재 전환 값을 가져옵니다.
시그니처 Singular.skanGetConversionValue()
사용 예시
const conversionValue = Singular.skanGetConversionValue();

 

짧은 리퍼러 링크 생성

참고: 이 기능은 SDK 버전 3.1.8 이상에서 사용할 수 있습니다.

짧은 링크를 사용하면 매개변수로 가득 찬 긴 단수 링크를 공유하기에 편리한 더 짧고 안전한 링크로 변환할수 있습니다.

일반적으로 앱 사용자가 친구와 공유하여 앱을 사용하도록 초대할 수 있도록 짧은 링크를 동적으로 생성하고 싶을 것입니다.

짧은 링크를 만들려면 다음이 필요합니다:

  • 앱 다운로드로 연결되는 단일 링크 ( 단일 링크 FAQ 참조).
  • 링크에 동적으로 추가하려는 모든 매개변수 (옵션 목록은 링크 매개변수 추적참조).
  • 링크를 공유한 사용자의 새 앱 설치를 추적할 수 있도록 하려면 추천 사용자의 이름과 ID를 입력합니다.

아래 예시와 같이 짧은 링크를 생성하려면 createReferrerShortLink 메서드를 사용합니다.

Singular.createReferrerShortLink (
    "https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com",
    "John Doe", // 추천인 이름
    "aq239897", // 추천인 ID
    {"channel": "sms"}, // 링크에 추가하려는 모든 매개변수
    (shortLinkURL,error) => {
      /* shortLinkURL이 null이 아닌 경우 여기에 공유 로직을 추가합니다. 오류가 발생한 경우 오류의 원인에 따라 함수에 전달된 매개변수를 다시 시도/중단/수정하는 로직을 추가합니다. */
    }
)

삭제 추적

싱귤러가 앱의 앱 제거를 추적하도록 하려면 다음과 같이 하세요:

  1. 먼저, 앱 삭제 추적 설정하기 [안드로이드][iOS]에 자세히 설명된 대로 싱귤러 플랫폼에서 앱을 구성합니다.
  2. 원하는 방법을 사용하여 React Native에서 APNS/FCM 토큰을 검색합니다.
  3. 아래 예시와 같이 APNS/FCM 토큰을 전달하여 setUninstallToken 메서드를 호출합니다. 디바이스 플랫폼에 따라 올바른 토큰을 전달해야 합니다.
Singular.setUninstallToken 메서드
설명 앱 제거를 추적할 수 있도록 싱귤러에 APNS/FCM 토큰을 전송합니다.
사용 예시
if (Platform.OS === 'ios') {
  Singular.setUninstallToken(apnsToken);
} else if (Platform.OS === 'android'){
  Singular.setUninstallToken(fcmToken);
}

세션 타임아웃 수정하기

Singular는 개인정보 보호 기능을 제공하여 GDPR 및 CCPA(캘리포니아 소비자 개인정보 보호법)와 같은 소비자 개인정보 보호법을 준수하는 파트너와 협력할 수 있도록 지원합니다. 이러한 파트너는 최종 사용자가 개인 정보 공유에 동의한 경우 알림을 받기를 원합니다.

데이터 공유 제한

사용자에게 정보 공유에 대한 동의를 요청하는 방법을 구현한 경우, limitDataSharing 메서드를 사용하여 사용자의 선택 사항을 Singular에 알려주세요:

  • 사용자가 정보 공유에 동의(옵트인)했음을 표시하려면 limitDataSharing:NO를 사용합니다.
  • 사용자가 동의하지 않은 경우 limitDataSharing:YES를 사용합니다.

싱귤러는"사용자 개인정보 포스트백"에서 제한데이터공유를 사용할 뿐만 아니라 관련 규정을 준수하기 위해 이 정보를 필요로 하는 파트너에게 전달합니다. 자세한 내용은"사용자 개인정보 및 데이터 공유 제한"을 참조하세요.

참고: 이 방법의 사용은 선택 사항이지만, 사용자가 옵트인했음을 구체적으로 고지한 경우에만 파트너가 싱귤러와 공유하는 어트리뷰션 정보가 있을 수 있습니다.

Singular.limit데이터 공유 방법
서명 Singular.limitDataSharing(shouldLimitDataSharing)
설명 개인 데이터 공유에 대한 사용자 동의(옵트인)를 Singular에 알립니다.
사용 예시
// 사용자가 데이터 공유에 동의했습니다.
Singular.limitDataSharing(false);

 

GDPR 준수를 위한 추가 방법

Singular SDK는 GDPR 정책을 준수하고 추적에 대한 사용자 동의 또는 비동의를 Singular에 알리는 데 도움이 되는 몇 가지 방법을 제공합니다.

Singular.trackingOptIn 메서드
설명 추적에 대한 사용자 동의(옵트인)를 Singular에 알립니다.
사용 예시
Singular.trackingOptIn();
Singular.stopAllTracking 메서드
설명

이 앱에서 이 사용자에 대한 모든 추적 활동을 중지합니다.

중요: 이렇게 하면 앱을 다시 시작한 후에도 Singular SDK가 효과적으로 비활성화됩니다. SDK를 다시 활성화하는 유일한 방법은 resumeAllTracking을 호출하는 것입니다.

사용 예시
Singular.stopAllTracking();
Singular.resumeAllTracking 메서드
설명 이 앱에서 이 사용자에 대한 활동을 다시 추적합니다.
사용 예시
Singular.resumeAllTracking();
Singular.isAllTrackingStopped 메서드
설명 이 앱에서 이 사용자의 추적 상태를 확인합니다. 추적이 중지된 경우 true를 반환합니다.
사용 예시
Singular.isAllTrackingStopped();