前提条件
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 経由でのインストール
- ターミナルを開く:プロジェクトのルートディレクトリに移動します。
-
パッケージのインストール:以下のコマンドを実行して、
プロジェクトに SDK を追加します:
npm install singular-react-native --save
ネイティブモジュールのリンク
SDKのリンク方法は、React Nativeのバージョンおよび Expoを使用しているかどうかによって異なります。
- React Native 0.60 以降:SDK は自動的にリンクされます。 追加の手順は不要です。
-
React Native 0.59 以前:ネイティブ
ブリッジコードを手動でリンクします:
react-native link singular-react-native -
Expoプロジェクト:SDKをインストールした後、
プラグインの設定に追加してください:
{ "expo": { "plugins": ["singular-react-native"] } }その後、Expoの ネイティブコードのカスタマイズガイドに従ってアプリを再ビルドしてください。
プラットフォーム設定
iOSの設定
CocoaPodsの依存関係を有効にし、SDKが 正しく機能するように、iOS固有の設定を完了してください。
注:Expoを使用してビルドしている場合、iOSの設定は 自動的に処理されます。このセクションはスキップしてください。
CocoaPodsの依存関係をインストールする
プロジェクトのルートディレクトリから次のコマンドを実行し、 必要な iOS 依存関係をインストールします:
cd ios && pod install
Androidの設定
Singular Mavenリポジトリ、 必要な権限、および依存関係を追加するようにAndroidビルドファイルを設定します。
注:Expoを使用してビルドしている場合、Androidの設定は 自動的に処理されます。このセクションはスキップしてください。
Mavenリポジトリの追加
SDKの依存関係解決を有効にするため、プロジェクトの
build.gradle ファイルにSingular Mavenリポジトリを追加します。
allprojects {
repositories {
maven { url 'https://maven.singular.net/' }
}
}
必要な権限の追加
コア SDK 機能を有効にするため、AndroidManifest.xml ファイルの
<manifest> タグの下にこれらの権限を追加してください。
<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 に以下を追加してください:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
推移的依存関係
Gradle設定でSingular SDKの推移的依存関係を無効にしている場合は、 以下の必須依存関係を手動で追加してください:
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が正しく機能しない可能性があります。
-
ProGuard ファイルの場所:プロジェクト内の
android/app/proguard-rules.proに移動します。 -
keepルールの追加:以下のルールを
ファイルの末尾に追加してください:
# 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 クラスをインポートします。
// 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';
import Singular, { SingularConfig } from 'singular-react-native';
SDKの初期化
基本的な初期化
- 認証情報の取得:Singularアカウントに ログインし、 [Developer Tools] > [SDK Integration] > [SDK Keys] に移動して、SDKキーとシークレットを確認してください。
-
設定の作成:認証情報を使用して、
SingularConfigオブジェクト、またはTurboModule API用のプレーンオブジェクトをインスタンス化します。 - 設定の追加:必要に応じて設定 メソッドをチェーン(レガシー)するか、 configオブジェクトにプロパティを 直接追加します(TurboModule)。
-
SDKの初期化:
Singular.init()またはNativeSingular.init()を呼び出して、SDKを起動します。
初期化の例
アプリの起動ポイント(通常はuseEffect フック内)で SDK を初期化し、
アプリ起動時に一度だけ実行されるようにします。
// 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
);
}
import React, { useEffect } from 'react';
import Singular, { SingularConfig } from 'singular-react-native';
export default function App() {
useEffect(() => {
const config = new SingularConfig('YOUR_SDK_KEY', 'YOUR_SDK_SECRET')
.withLoggingEnabled()
.withLogLevel(3);
Singular.init(config);
}, []);
return (
// Your app components
);
}
Direct TurboModule API:
NativeSingular TurboModule APIを使用する場合、設定は
単純なJavaScriptオブジェクトと直接的なイベントエミッターの
セットアップに簡素化されます。これは、New Architecture
(React Native 0.76以降)を対象とするアプリでのみ推奨されます。その他のアプリでは、互換性を最大限に確保するため、引き続きラッパー
(SingularConfig/Singular.init)を使用してください。
詳細な設定例
init() を呼び出す前に、設定メソッドをチェーンすることで、
初期化時に複数のSDK機能を設定します。
// 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
);
}
import React, { useEffect } from 'react';
import { Singular, SingularConfig } from 'singular-react-native';
export default function App() {
useEffect(() => {
const config = new SingularConfig(
'YOUR_SDK_KEY',
'YOUR_SDK_SECRET'
)
// User identification
.withCustomUserId('user_123456')
// Privacy settings
.withLimitDataSharing(false)
// Deep linking
.withSingularLink((params: SingularLinkParams) => {
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);
})
// iOS-specific
.withWaitForTrackingAuthorizationWithTimeoutInterval(300)
// Debugging
.withLoggingEnabled()
.withLogLevel(3);
Singular.init(config);
}, []);
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の初期実装時にこの設定を完了させてください。