React Native SDK - 基本的な統合

ドキュメント

前提条件

Singular React Native SDK をインストールする前に、以下の前提条件の手順を完了し、スムーズな統合プロセスを確保してください。

必須の前提条件:

  • 計画手順の完了:Singular SDKの統合:計画と前提条件」のガイドに従ってください。これらの手順は、Singular SDKを統合する際に必須です。
  • React Nativeのバージョン:React Nativeのバージョンを確認してください(自動リンクには0.59以上が推奨されます)。
  • Expo ユーザー:Expo を使用している場合は、SDK がネイティブモジュールを必要とするため、ネイティブコードのカスタマイズに精通していることを確認してください。

インストール

SDKパッケージのインストール

npm を使用して、Singular React Native SDK をプロジェクトに追加します。この SDK は、 iOS および Android 向けのネイティブ Singular SDK への JavaScript バインディングを提供します。 Android。

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
  • Expoプロジェクト:SDKをインストールした後、 プラグインの設定に追加してください:
    app.json
    {
      "expo": {
        "plugins": ["singular-react-native"]
      }
    }

    その後、Expoの ネイティブコードのカスタマイズガイドに従ってアプリを再ビルドしてください。


プラットフォーム設定

iOSの設定

CocoaPodsの依存関係を有効にし、SDKが 正しく機能するように、iOS固有の設定を完了してください。

注:Expoを使用してビルドしている場合、iOSの設定は 自動的に処理されます。このセクションはスキップしてください。

CocoaPodsの依存関係をインストールする

プロジェクトのルートディレクトリから次のコマンドを実行し、 必要な iOS 依存関係をインストールします:

bash
cd ios && pod install

Androidの設定

Singular Mavenリポジトリ、 必要な権限、および依存関係を追加するようにAndroidビルドファイルを設定します。

注:Expoを使用してビルドしている場合、Androidの設定は 自動的に処理されます。このセクションはスキップしてください。

Mavenリポジトリの追加

SDKの依存関係解決を有効にするため、プロジェクトの build.gradle ファイルにSingular Mavenリポジトリを追加します。

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

必要な権限の追加

コア SDK 機能を有効にするため、AndroidManifest.xml ファイルの <manifest> タグの下にこれらの権限を追加してください。

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" />

重要: Kids SDK を統合する場合は、 com.google.android.gms.permission.AD_ID 権限を除外してください。 この権限は、標準アプリでの GAID 収集には必要ですが、 13歳未満の子供を対象とするアプリでは省略する必要があります。

Samsung Galaxy Storeのサポート

Samsung Galaxy Storeからのインストールリファラー追跡を有効にするには、 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")
}

ProGuardの設定

リリース用APKをビルドする際、ProGuard(またはR8)によってSDKの クラスが削除または難読化される可能性があります。Singularの機能を維持するために、以下のkeepルールを追加してください。

重要:React Native Androidのリリースビルドでは、ProGuardはデフォルトで有効になっています。 適切なkeepルールが設定されていない場合、 本番環境でSDKが正しく機能しない可能性があります。

  1. ProGuard ファイルの場所:プロジェクト内の android/app/proguard-rules.pro に移動します。
  2. keepルールの追加:以下のルールを ファイルの末尾に追加してください:
    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/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

SDKの初期化

基本的な初期化

  1. 認証情報の取得Singularアカウントに ログインし、 [Developer Tools] > [SDK Integration] > [SDK Keys] に移動して、SDKキーとシークレットを確認してください。
  2. 設定の作成:認証情報を使用して、 SingularConfig オブジェクト、またはTurboModule API用のプレーンオブジェクトをインスタンス化します。
  3. 設定の追加:必要に応じて設定 メソッドをチェーン(レガシー)するか、 configオブジェクトにプロパティを 直接追加します(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/js/NativeSingular';

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

Direct TurboModule API:
NativeSingular TurboModule APIを使用する場合、設定は 単純なJavaScriptオブジェクトと直接的なイベントエミッターの セットアップに簡素化されます。これは、New Architecture (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/js/NativeSingular';
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 Reporting API Keyは絶対に使用しないでください。SDK統合 ページに記載されているSDK固有の認証情報のみを使用してください。誤った認証情報を使用すると、データがSingularに送信されなくなります。

詳細設定

Google Ads iOS 統合コンバージョン測定に必要な設定

アプリで iOS 14.5 以降のユーザーを対象とした Google Ads キャンペーンを実行している場合、iOS 統合コンバージョン 測定 (ICM) をサポートするために、追加の SDK 設定手順が必要です。これには以下が含まれます:

  • GoogleのOn-Device Measurement (ODM) SDKの統合
  • Singular iOS SDK v12.8.1 以降への更新(Unityの場合はv5.5.0 以降、Flutter/Cordovaの場合はv1.8.0 以降、React Nativeの場合はv3.9.0 以降)
  • -ObjC リンカーフラグの追加および SingularConfig でのenableOdmWithTimeoutInterval の有効化

注: enableOdmWithTimeoutIntervalを有効にすると、 SDKの初期化が遅延し、 ディープリンクのコールバックが延期される可能性があります。 再作業を避けるため、SDKの初期実装時にこの設定を完了させてください。

iOS ICMの技術要件の詳細を参照