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バインディングを提供します。

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の構成

Androidビルドファイルを構成して、Singular Mavenリポジトリ、必要なパーミッション、および依存関係を追加します。

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

Maven リポジトリの追加

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

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

必要なパーミッションの追加

コア SDK 機能を有効にするために、<manifest> タグの下のAndroidManifest.xml ファイルにこれらのパーミッションを追加します。

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からのインストールリファラートラッキングを有効にするには、以下を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ルールを追加してください。

なぜこれが重要なのか: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クラスのインポート

メインアプリケーションファイルの先頭にSingular SDKクラスをインポートします(通常、App.tsx またはApp.js )。

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アカウントにログインし、Developer Tools > SDK Integration > SDK Keysに移動してSDK KeyとSecretを確認します。
  2. コンフィグを作成します:SingularConfig オブジェクト、またはTurboModule API用のプレーンオブジェクトを認証情報を使ってインスタンス化します。
  3. 設定を追加します:オプションで、コンフィギュレーションメソッドをチェーンするか(レガシー)、コンフィギュレーションオブジェクトに直接プロパティを追加します(TurboModule)
  4. SDK を初期化します:Singular.init()またはNativeSingular.init() を呼び出して SDK を起動します。

初期化の例

SDK をアプリのエントリ ポイントで初期化します。通常は、useEffect フック内で初期化し、アプリの起動時に一度だけ実行されるようにします。

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を使用する場合、構成はプレーン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/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 Reporting API キーは使用しないでください。SDK IntegrationページからSDK固有の認証情報のみを使用してください。誤った認証情報を使用すると、データが Singular に届かなくなります。