React Native SDK - 方法参考

文档

React Native SDK - 方法参考

本综合参考文档记录了用于 React Native 应用程序的 Singular SDK 中的所有可用方法。SDK 提供了初始化、事件跟踪、收入报告、归因、数据隐私合规性和配置等功能。每个方法都附有说明、签名和实际使用示例,以帮助开发人员将 Singular SDK 功能集成到他们的 React Native 应用程序中。

广告收入

Singular.adRevenue 方法

通过详细的广告数据信息跟踪广告收入事件。通过该方法,您可以报告应用程序中显示的广告所产生的收入,并使用各种参数对广告性能进行分类和分析。

签名

static adRevenue(adData: {
  ad_platform: string; 
  ad_currency: string; 
  ad_revenue: number; 
  [key: string]: any;
}): void

必填属性

  • ad_platform (字符串):产生广告收入的广告平台(如 "AdMob"、"Facebook"、"UnityAds")。
  • ad_currency (字符串):报告广告收入的货币代码(ISO 4217 格式)(如 "美元"、"欧元")。
  • ad_revenue (数字):广告印象产生的收入金额。

可选属性

  • ad_unit_id (字符串):显示广告的广告单元的唯一标识符。
  • ad_type (字符串):广告的类型或格式(如 "奖励"、"插播"、"横幅")。
  • ad_placement_name (字符串):广告放置在应用程序中的名称或位置标识符(如 "level_complete"、"main_menu")。
  • ad_mediation_platform (字符串):用于提供广告的广告中介平台(如 "admob"、"ironsource"、"max")。
  • ad_impression_id (字符串):特定广告印象事件的唯一标识符。
  • ad_group_type (字符串):广告组的类型或类别分类。
  • ad_unit_name (字符串): 分配给广告组的可读名称:分配给广告单元的可读名称。
  • ad_group_id (string):与此印象相关联的广告组的唯一标识符。
  • ad_group_name (字符串):广告组的可读名称。
  • ad_group_priority (数字):为广告组分配的用于瀑布流排序的数字优先级。
  • ad_precision (字符串):广告收入数据的精确度或准确度级别(如 "估计"、"精确"、"publisher_defined")。
  • ad_placement_id (字符串):应用程序中广告投放位置的唯一标识符。

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

const adData = {
  ad_platform: 'AdMob',
  ad_currency: 'USD',
  ad_revenue: 0.05,
  ad_unit_id: 'ca-app-pub-1234567890123456',
  ad_type: 'Rewarded',
  ad_placement_name: 'level_complete'
};

NativeSingular.adRevenue(adData);

清除全局属性

Singular.clearGlobalProperties 方法

删除所有先前设置的全局属性。这在需要重置全局属性时非常有用,例如当用户注销应用程序时。

签名

static clearGlobalProperties(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Clear all global properties
NativeSingular.clearGlobalProperties();

createReferrerShortLink

Singular.createReferrerShortLink 方法

创建带有推荐人信息的短链接,可用于共享和归属。此方法可生成可与用户共享的可跟踪链接,从而将安装和活动归因于特定的推荐来源。

签名

static createReferrerShortLink(
  baseLink: string,
  referrerName: string,
  referrerId: string,
  passthroughParams: Record<string, any>,
  completionHandler: (data: string | null, error?: string) => void
): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Create a short link for referral
NativeSingular.createReferrerShortLink(
  'https://sample.sng.link/B4tbmv8fp',
  'John Doe',
  'aq239897',
  { channel: 'sms', campaign: 'summer_promo' },
  (result: string, error: string) => {
    if (error) {
      console.error('Short link creation failed:', error);
    } else {
      console.log('Short link created successfully:', result);
    }
  }
);

自定义收入

Singular.customRevenue 方法

使用指定的事件名称、货币和金额跟踪自定义收入事件。这允许使用自定义事件名称进行更具体的收入跟踪。

签名

static customRevenue(
  eventName: string,
  currency: string,
  amount: number
): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track a custom revenue event
NativeSingular.customRevenue('premium_subscription', 'USD', 9.99);

customRevenueWithArgs

Singular.customRevenueWithArgs 方法

使用指定的事件名称、货币、金额和附加属性跟踪自定义收入事件。这允许使用自定义参数进行更详细的收入跟踪。

签名

static customRevenueWithArgs(
  eventName: string,
  currency: string,
  amount: number,
  args: Record<string, any>
): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track a custom revenue event with attributes
NativeSingular.customRevenueWithArgs(
  'in_app_purchase',
  'USD',
  5.99,
  {
    product_id: 'com.app.gems_pack_small',
    quantity: 1
  }
);

事件

Singular.event 方法

跟踪具有指定名称的事件。使用该方法可跟踪应用程序中的用户操作和参与情况。

签名

static event(eventName: string): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track a simple event
NativeSingular.event('level_completed');

eventWithArgs

Singular.eventWithArgs 方法

跟踪具有指定名称和附加自定义属性的事件。 使用此方法可跟踪具有详细参数的用户操作。

签名

static eventWithArgs(
  eventName: string,
  args: Record<string, any>
): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track an event with additional parameters
NativeSingular.eventWithArgs('level_completed', {
  level_id: 5,
  score: 12500,
  time_spent: 120,
  difficulty: 'medium'
});

获取全局属性

Singular.getGlobalProperties 方法

读取当前设置的所有全局属性。此方法返回一个承诺,该承诺解析为一个对象,其中包含已为 SDK 设置的所有全局属性。

签名

static getGlobalProperties(): Promise<Record<string, any>>

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Get all global properties
NativeSingular.getGlobalProperties();

getLimitDataSharing

Singular.getLimitDataSharing 方法

读取当前的数据共享限制状态。此方法返回一个承诺,该承诺解析为一个布尔值,表示当前数据共享是否受限。

签名

static getLimitDataSharing(): Promise<boolean>

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Check if data sharing is limited
NativeSingular.getLimitDataSharing();

handlePushNotification

Singular.handlePushNotification 方法

处理推送通知的有效载荷以确定属性。当应用程序收到推送通知时,应调用此方法,以便 Singular 能正确归属该通知。此方法仅适用于 iOS。

签名

static handlePushNotification(
  pushNotificationPayload: Record<string, any>
): void

使用示例

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

// Handle a received push notification (iOS only)
if (Platform.OS === 'ios') {
  const userInfo = remoteMessage.data;
  NativeSingular.handlePushNotification(userInfo);
}

inAppPurchase

Singular.inAppPurchase 方法

向 Singular 报告收入,并在后台执行收据验证(如果启用)。购买对象应为 SingularIOSPurchase 或 SingularAndroidPurchase 类型。

签名

static inAppPurchase(
  eventName: string,
  purchase: SingularIOSPurchase | SingularAndroidPurchase
): void

SingularIOSPurchase 购买类构造函数

constructor(
  revenue: number,
  currency: string,
  productId: string,
  transactionId: string,
  receipt: string
)

SingularAndroidPurchase 购买类构造函数

constructor(
  revenue: number,
  currency: string,
  receipt: string,
  signature: string
)

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import { SingularIOSPurchase, SingularAndroidPurchase } from 'singular-react-native';
import { Platform } from 'react-native';

// iOS Example
if (Platform.OS === 'ios') {
  const iosPurchase = new SingularIOSPurchase(
    99.99,              // revenue
    'USD',              // currency
    'premium_bundle',   // productId
    'trans_12345',      // transactionId
    'base64receipt...'  // receipt
  );
  
  // Convert to plain object for TurboModule
  NativeSingular.inAppPurchase('purchase', iosPurchase.toSpecObject());
}

// Android Example
if (Platform.OS === 'android') {
  const androidPurchase = new SingularAndroidPurchase(
    99.99,                    // revenue
    'USD',                    // currency
    'purchaseDataJSON',       // receipt
    'signatureString'         // signature
  );
  
  // Convert to plain object for TurboModule
  NativeSingular.inAppPurchase('purchase', androidPurchase.toSpecObject());
}

inAppPurchaseWithArgs

Singular.inAppPurchaseWithArgs 方法

向 Singular 报告收入及附加属性,并在后台执行收据验证(如果启用)。购买对象应为 SingularIOSPurchase 或 SingularAndroidPurchase 类型。

签名

static inAppPurchaseWithArgs(
  eventName: string,
  purchase: SingularIOSPurchase | SingularAndroidPurchase,
  args: Record<string, any>
): void

SingularIOSPurchase 购买类构造函数

constructor(
  revenue: number,
  currency: string,
  productId: string,
  transactionId: string,
  receipt: string
)

SingularAndroidPurchase 购买类构造函数

constructor(
  revenue: number,
  currency: string,
  receipt: string,
  signature: string
)

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import { SingularIOSPurchase, SingularAndroidPurchase } from 'singular-react-native';
import { Platform } from 'react-native';

// iOS Example - Track IAP with additional attributes
if (Platform.OS === 'ios') {
  const iosPurchase = new SingularIOSPurchase(
    99.99,              // revenue
    'USD',              // currency
    'premium_bundle',   // productId
    'trans_12345',      // transactionId
    'base64receipt...'  // receipt
  );
  
  // Convert to plain object for TurboModule
  NativeSingular.inAppPurchaseWithArgs(
    'purchase',
    iosPurchase.toSpecObject(),
    {
      product_category: 'premium_content',
      is_first_purchase: true,
      user_tier: 'gold'
    }
  );
}

// Android Example - Track IAP with additional attributes
if (Platform.OS === 'android') {
  const androidPurchase = new SingularAndroidPurchase(
    99.99,                    // revenue
    'USD',                    // currency
    'purchaseDataJSON',       // receipt
    'signatureString'         // signature
  );
  
  // Convert to plain object for TurboModule
  NativeSingular.inAppPurchaseWithArgs(
    'purchase',
    androidPurchase.toSpecObject(),
    {
      product_category: 'premium_content',
      is_first_purchase: true,
      user_tier: 'gold'
    }
  );
}

初始化

Singular.init 方法

使用提供的配置初始化 Singular SDK。这是开始使用 Singular SDK 时应调用的第一个方法。

签名

static init(singularConfig: SingularConfig): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Create configuration object
const config: SingularConfig = {
  apikey: 'YOUR_API_KEY',
  secret: 'YOUR_SECRET',
  customUserId: 'user-123456',
  sessionTimeout: 60,
  enableLogging: true,
  logLevel: 3,
}

// Initialize the SDK
NativeSingular.init(config);

isAllTrackingStopped

Singular.isAllTrackingStopped 方法

检查当前是否停止了所有跟踪。此方法返回一个解析为布尔值的 promise,表示当前是否停止了跟踪。

签名

static isAllTrackingStopped(): Promise<boolean>

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Check if tracking is stopped
NativeSingular.isAllTrackingStopped();

limitDataSharing

Singular.limitDataSharing 方法

设置数据共享限制状态。使用该方法可根据用户同意或隐私要求限制数据共享。

签名

static limitDataSharing(limitDataSharingValue: boolean): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// To limit data sharing (e.g., when user opts out)
NativeSingular.limitDataSharing(true);

// To enable full data sharing (e.g., when user opts in)
NativeSingular.limitDataSharing(false);

resumeAllTracking

Singular.resumeAllTracking 方法

恢复之前停止的所有跟踪活动。使用该方法可在停止跟踪后重新启用跟踪。

签名

static resumeAllTracking(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Resume tracking when user opts back in
NativeSingular.resumeAllTracking();

收入

Singular.revenue 方法

使用货币和金额跟踪收入事件。这可让您的应用程序进行基本的收入跟踪。

签名

static revenue(currency: string, amount: number): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track revenue with currency and amount
NativeSingular.revenue('USD', 9.99);

revenueWithArgs

Singular.revenueWithArgs 方法

跟踪带有货币、金额和附加属性的收入事件。 通过该方法可使用自定义参数进行全面的收入跟踪。

签名

static revenueWithArgs(
  currency: string,
  amount: number,
  args: Record<string, any>
): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Track revenue with additional attributes
NativeSingular.revenueWithArgs('USD', 19.98, {
  product_id: 'premium_gems',
  quantity: 2
});

setCustomUserId

Singular.setCustomUserId 方法

为当前用户设置自定义用户 ID。这样就可以将 Singular 数据与自己的用户识别系统关联起来。

签名

static setCustomUserId(customUserId: string): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Set custom user ID after user logs in
NativeSingular.setCustomUserId('user123456');

setDeviceCustomUserId

此方法已废弃,不再使用。

Singular.setDeviceCustomUserId 方法

在设备级别设置自定义用户 ID。这样就可以在设备级别将 Singular 数据与自己的用户识别系统关联起来。

签名

static setDeviceCustomUserId(customUserId: string): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Set device-level custom user ID
NativeSingular.setDeviceCustomUserId('device_user_123456');

设置全局属性

Singular.setGlobalProperty 方法

设置将与所有事件一起发送的全局属性。这样,您就可以为所有事件添加一致的属性,而无需每次都指定这些属性。

签名

static setGlobalProperty(
  key: string,
  value: string,
  overrideExisting: boolean
): Promise<boolean>

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Set a global property
NativeSingular.setGlobalProperty(
  'user_tier',
  'premium',
  true
);

setLimitAdvertisingIdentifiers

Singular.setLimitAdvertisingIdentifiers 方法

启用或禁用限制广告标识符模式。该选项会影响 SDK 收集和使用设备标识符进行跟踪的方式。

签名

static setLimitAdvertisingIdentifiers(enabled: boolean): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Enable limited identifiers mode
NativeSingular.setLimitAdvertisingIdentifiers(true);

// Disable limited identifiers mode
NativeSingular.setLimitAdvertisingIdentifiers(false);

setUninstallToken

Singular.setUninstallToken 方法

为卸载跟踪注册推送通知令牌。调用此方法时应同时调用推送通知令牌,以启用卸载跟踪功能。

签名

static setUninstallToken(token: string): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import messaging from '@react-native-firebase/messaging';

// Register device token for uninstall tracking
NativeSingular.setUninstallToken(token);

skanGetConversionValue

Singular.skanGetConversionValue 方法

读取当前 SKAdNetwork 转换值。此方法返回一个承诺,该承诺解析为用于 SKAdNetwork 归属的当前转换值。此方法仅限 iOS。

签名

static skanGetConversionValue(): Promise<number | null>

使用示例

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

// Get the current SKAdNetwork conversion value (iOS only)
if (Platform.OS === 'ios') {
  const conversionValue = await NativeSingular.skanGetConversionValue();
  console.log('Current conversion value:', conversionValue ?? 0);
}

skanRegisterAppForAdNetworkAttribution

Singular.skanRegisterAppForAdNetworkAttribution 方法

为 SKAdNetwork 归因注册应用程序。调用此方法可在 iOS 上启用 SKAdNetwork 归因。本方法仅适用于 iOS。

签名

static skanRegisterAppForAdNetworkAttribution(): void

使用示例

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

// Register for SKAdNetwork attribution (iOS only)
if (Platform.OS === 'ios') {
  NativeSingular.skanRegisterAppForAdNetworkAttribution();
}

skanUpdateConversionValue

Singular.skanUpdateConversionValue 方法

更新 SKAdNetwork 转换值。此方法允许您手动更新用于 SKAdNetwork 归属的转换值。此方法仅限 iOS。

签名

static skanUpdateConversionValue(conversionValue: number): Promise<boolean>

使用示例

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

// Update the SKAdNetwork conversion value (iOS only)
if (Platform.OS === 'ios') {
  const success = await NativeSingular.skanUpdateConversionValue(5);
  if (success) {
    console.log('Conversion value updated successfully');
  }
}

skanUpdateConversionValues

Singular.skanUpdateConversionValues 方法

用精细值、粗略值和锁定参数更新 SKAdNetwork 4.0 转换值。此方法适用于 iOS 16.1+ 并仅限 iOS。

签名

static skanUpdateConversionValues(
  conversionValue: number,
  coarse: number,
  lock: boolean
): void

使用示例

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

// Update SKAdNetwork 4.0 conversion values (iOS 16.1+)
if (Platform.OS === 'ios') {
  NativeSingular.skanUpdateConversionValues(
    5,     // fine value (0-63)
    1,     // coarse value (0=low, 1=medium, 2=high)
    false  // lock
  );
}

stopAllTracking

Singular.stopAllTracking 方法

停止所有跟踪活动。使用该方法可在用户选择退出或符合隐私保护规定时禁用跟踪。

签名

static stopAllTracking(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Stop tracking when user opts out
NativeSingular.stopAllTracking();

trackingOptIn

Singular.trackingOptIn 方法

表示用户已选择接受跟踪。当用户明确同意跟踪和数据收集时调用此方法。

签名

static trackingOptIn(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// User has opted in to tracking
NativeSingular.trackingOptIn();

trackingUnder13

Singular.trackingUnder13 方法

表示用户未满 13 周岁。调用此方法可遵守 COPPA 和其他针对 13 岁以下用户的规定。

签名

static trackingUnder13(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Notify Singular the user is under 13 years old
NativeSingular.trackingUnder13();

unsetCustomUserId

Singular.unsetCustomUserId 方法

删除之前设置的自定义用户 ID。当用户注销或不想再将事件与当前用户 ID 关联时,调用此方法。

签名

static unsetCustomUserId(): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Clear custom user ID when user logs out
NativeSingular.unsetCustomUserId();

unsetGlobalProperty

Singular.unsetGlobalProperty 方法

删除先前设置的全局属性。如果不想再通过事件发送特定全局属性,请调用此方法。

签名

static unsetGlobalProperty(key: string): void

使用示例

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';

// Remove a global property
NativeSingular.unsetGlobalProperty('user_tier');