React Native SDK - 기본 연동

문서

전제 조건

원활한 연동 프로세스를 위해 Singular React Native SDK를 설치하기 전에 다음 필수 단계를 완료하세요.

필수 전제 조건:


설치

SDK 패키지 설치하기

npm을 사용하여 프로젝트에 Singular React Native SDK를 추가합니다. 이 SDK는 iOS 및 Android용 네이티브 Singular SDK에 대한 자바Script 바인딩을 제공합니다.

NPM을 통해 설치하기

  1. 터미널을 엽니다: 프로젝트의 루트 디렉토리로 이동합니다.
  2. 패키지를 설치합니다: 다음 명령을 실행하여 프로젝트에 SDK를 추가합니다:
    bash
    npm install singular-react-native --save

네이티브 모듈 연결하기

SDK를 연결하는 방법은 React Native 버전과 Expo 사용 여부에 따라 다릅니다.

  • React Native 0.60 이상: SDK가 자동으로 링크됩니다. 추가 단계가 필요하지 않습니다.
  • React Native 0.59 이상: 네이티브 브리지 코드를 수동으로 연결합니다:
    bash
    react-native link singular-react-native
  • 엑스포 프로젝트: SDK를 설치한 후 플러그인 구성에 추가합니다:
    app.json
    {
      "expo": {
        "plugins": ["singular-react-native"]
      }
    }

    그런 다음 Expo의 사용자 지정 네이티브 코드 가이드를 사용하여 앱을 다시 빌드합니다.


플랫폼 구성

iOS 구성

코코아팟 종속성을 활성화하고 적절한 SDK 기능을 보장하기 위해 iOS 관련 설정을 완료합니다.

참고: Expo로 빌드하는 경우 iOS 구성은 자동으로 처리됩니다. 이 섹션을 건너뛰세요.

CocoaPods 종속성 설치

프로젝트의 루트 디렉토리에서 다음 명령을 실행하여 필요한 iOS 종속 요소를 설치합니다:

bash
cd ios && pod install

안드로이드 구성

Singular Maven 리포지토리, 필수 권한 및 종속성을 추가하도록 Android 빌드 파일을 구성합니다.

참고: Expo로 빌드하는 경우 Android 구성은 자동으로 처리됩니다. 이 섹션은 건너뛰세요.

Maven 리포지토리 추가

프로젝트의 build.gradle 파일에 Singular Maven 리포지토리를 추가하여 SDK 종속성 해결을 활성화합니다.

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

필수 권한 추가

<manifest> 태그 아래에 AndroidManifest.xml 파일에 이러한 권한을 추가하여 핵심 SDK 기능을 사용하도록 설정합니다.

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

중요: 키즈 SDK를 연동하는 경우 com.google.android.gms.permission.AD_ID 권한을 제외하세요. 이 권한은 표준 앱의 GAID 수집에 필요하지만 13세 미만 어린이를 대상으로 하는 앱의 경우 생략해야 합니다.

삼성 갤럭시 스토어 지원

삼성 갤럭시 스토어에서 설치 리퍼러 추적을 사용하려면 AndroidManifest.xml 에 다음을 추가합니다:

AndroidManifest.xml
<queries>
   <package android:name="com.sec.android.app.samsungapps" />
</queries>

전이적 종속성

Gradle 구성에서 Singular SDK에 대한 전이 종속성을 비활성화한 경우 이러한 필수 종속성을 수동으로 추가하세요:

app/build.gradle
dependencies {
    // Required for install referrer tracking
    implementation("com.android.installreferrer:installreferrer:2.2")

    // Required for App Set ID
    implementation("com.google.android.gms:play-services-appset:16.0.0")
}

프로가드 구성

릴리스 APK를 빌드할 때 ProGuard(또는 R8)는 SDK 클래스를 제거하거나 난독화할 수 있습니다. 이러한 유지 규칙을 추가하여 Singular 기능을 유지하세요.

이것이 중요한 이유: ProGuard는 React Native Android 릴리스 빌드에서 기본적으로 활성화됩니다. 적절한 유지 규칙이 없으면 SDK가 프로덕션 환경에서 제대로 작동하지 않을 수 있습니다.

  1. ProGuard 파일을 찾습니다: 프로젝트에서 android/app/proguard-rules.pro 로 이동합니다.
  2. 유지 규칙을 추가합니다: 파일에 다음 규칙을 추가합니다:
    proguard-rules.pro
    # Preserve Singular SDK classes
    -keep class com.singular.sdk.** { *; }
    
    # Preserve Android Install Referrer library
    -keep public class com.android.installreferrer.** { *; }
    
    # Uncomment if using Singular revenue tracking with Google Play Billing Library
    #-keep public class com.android.billingclient.** { *; }

SDK 연동

개인정보 보호 규정 준수: Singular SDK를 구현할 때 GDPR, CCPA, COPPA 등을 포함한 운영 지역의 개인정보 보호법을 준수하세요. SDK 옵트인 및 옵트아웃 사례를 참조하세요.

호환성 참고 사항: Singular React Native SDK v4.0+는 레거시 Bridge 및 TurboModule 아키텍처를 모두 지원합니다. 대부분의 개발자는 마이그레이션이나 리팩터링이 필요하지 않습니다. React Native 및/또는 SDK를 업그레이드하면 이전 코드와 새 코드가 모두 정상적으로 작동합니다. 직접 TurboModule API를 활용하려면 아래의 새로운 초기화 예제를 참조하세요.

SDK 클래스 가져오기

기본 애플리케이션 파일(일반적으로 App.tsx 또는 App.js)의 맨 위에 있는 Singular SDK 클래스를 가져옵니다.

New ArchitectureOld Architecture

// Direct TurboModule API initialization (React Native 0.76+)

// Import Native API and EventEmitter
import NativeSingular from 'singular-react-native/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';

SDK 초기화

기본 초기화

  1. 자격 증명을 가져옵니다: Singular 계정에로그인하고 개발자 도구 > SDK 연동 > SDK 키로이동하여 SDK 키와 비밀 번호를 찾습니다.
  2. 구성 만들기: 자격 증명을 사용하여 SingularConfig 객체 또는 TurboModule API용 일반 객체를 인스턴스화합니다.
  3. 구성 추가하기: 선택적으로 구성 메서드를 연결하거나 (레거시 ) 구성 객체에서 직접 속성을 추가합니다 (TurboModule).
  4. SDK 초기화: Singular.init() 또는 NativeSingular.init() 을 호출하여 SDK를 시작합니다.

초기화 예제

앱 시작 시 한 번 실행되도록 앱의 엔트리 포인트(일반적으로 useEffect 훅 내에서)에서 SDK를 초기화합니다.

New ArchitectureOld Architecture

// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/jsNativeSingular';

export default function App() {
  useEffect(() => {
    const config: SingularConfig = {
      apikey: 'YOUR_SDK_KEY',
      secret: 'YOUR_SDK_SECRET',
      enableLogging: true,
      logLevel: 3,
    };

    NativeSingular.init(config);

  }, []);
  
  return (
    // Your app components
  );
}

직접 TurboModule API:
NativeSingular TurboModule API를 사용하는 경우 구성이 일반 자바Script 객체와 직접 이벤트 이미터 설정으로 간소화됩니다. 이 방법은 새 아키텍처(React Native 0.76 이상)를 대상으로 하는 앱에만 권장됩니다. 그 외의 모든 앱은 호환성을 극대화하기 위해 래퍼(SingularConfig/Singular.init)를 계속 사용해야 합니다.

고급 구성 예제

init() 을 호출하기 전에 구성 메서드를 체인화하여 초기화 중에 여러 SDK 기능을 구성합니다.

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';

export default function App() {
  useEffect(() => {
    const config: SingularConfig = {
      apikey: 'YOUR_SDK_KEY',
      secret: 'YOUR_SDK_SECRET',
      customUserId: 'user_123456',
      limitDataSharing: false,
      waitForTrackingAuthorizationWithTimeoutInterval: 300
    };

    NativeSingular.init(config);

    // Register event listener
    const emitter = new NativeEventEmitter(NativeSingular);
    emitter.addListener('SingularLinkHandler', (params) => {
      console.log('Singular: Deep link:', params.deeplink);
      console.log('Singular: Passthrough:', params.passthrough);
      console.log('Singular: Is deferred:', params.isDeferred);
      console.log('Singular: urlParameters:', params.urlParameters);
    });

  }, []);
  
  return (
    // Your app components
  );
}

구성 참조: 사용 가능한 구성 옵션의 전체 목록은 React Native SDK 구성 참조를 참조하세요.

중요: Singular 보고 API 키를 사용하지 마세요. SDK 연동 페이지의 SDK별 자격 증명만 사용하세요. 잘못된 자격 증명을 사용하면 데이터가 Singular에 도달하지 못합니다.