前提条件
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 経由でのインストール
- ターミナルを開きます:プロジェクトのルートディレクトリに移動します。
-
パッケージをインストールします:以下のコマンドを実行し、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の構成
Androidビルドファイルを構成して、Singular Mavenリポジトリ、必要なパーミッション、および依存関係を追加します。
注:Expo を使用してビルドする場合、Android 構成は自動的に処理されます。このセクションはスキップします。
Maven リポジトリの追加
プロジェクトのbuild.gradle ファイルに Singular Maven リポジトリを追加して、SDK 依存関係の解決を有効にします。
allprojects {
repositories {
maven { url 'https://maven.singular.net/' }
}
}
必要なパーミッションの追加
コア SDK 機能を有効にするために、<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からのインストールリファラートラッキングを有効にするには、以下を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ルールを追加してください。
なぜこれが重要なのか:ProGuard は、React Native Android のリリースビルドでデフォルトで有効になっています。適切なキープルールがないと、本番環境でSDKが正しく機能しない可能性があります。
-
ProGuardファイルを探します:プロジェクトの
android/app/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 )。
// 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';
import Singular, { SingularConfig } from 'singular-react-native';
SDKの初期化
基本的な初期化
- 認証情報を取得します:Singularアカウントにログインし、Developer Tools > SDK Integration > SDK Keysに移動してSDK KeyとSecretを確認します。
-
コンフィグを作成します:
SingularConfigオブジェクト、またはTurboModule API用のプレーンオブジェクトを認証情報を使ってインスタンス化します。 - 設定を追加します:オプションで、コンフィギュレーションメソッドをチェーンするか(レガシー)、コンフィギュレーションオブジェクトに直接プロパティを追加します(TurboModule)。
-
SDK を初期化します:
Singular.init()またはNativeSingular.init()を呼び出して SDK を起動します。
初期化の例
SDK をアプリのエントリ ポイントで初期化します。通常は、useEffect フック内で初期化し、アプリの起動時に一度だけ実行されるようにします。
// 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
);
}
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
);
}
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/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
);
}
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 キーは使用しないでください。SDK IntegrationページからSDK固有の認証情報のみを使用してください。誤った認証情報を使用すると、データが Singular に届かなくなります。