Flutter SDK - 方法参考

文档

Flutter SDK - 方法参考

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


广告收入

Singular.adRevenue 方法

通过详细的广告数据信息跟踪广告收入事件。通过该方法,您可以报告应用程序中显示的广告所产生的收入,包括广告网络数据、位置信息和收入金额。

签名

static void adRevenue(SingularAdData adData)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_ad_data.dart';

// Create ad data object
SingularAdData adData = SingularAdData(
  'AdMob',
  'USD',
  0.99
)
  ..withAdPlatfom('Android')
  ..withAdType('Rewarded')
  ..withAdGroupId('group_123')
  ..withAdGroupName('Rewarded Video Group')
  ..withAdGroupType('rewarded_video')
  ..withImpressionId('impression_abc123')
  ..withAdPlacementName('main_menu')
  ..withAdUnitId('ca-app-pub-123456789')
  ..withAdUnitName('Main Menu Rewarded Video');

// Track the ad revenue
Singular.adRevenue(adData);

清除全局属性

Singular.clearGlobalProperties 方法

删除所有已设置的全局属性。全局属性是键值对,会自动添加到 SDK 跟踪的所有事件中。

签名

static void clearGlobalProperties()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

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

createReferrerShortLink

Singular.createReferrerShortLink 方法

创建用于推荐跟踪的 Singular 短链接。该方法生成的短链接可供用户共享,以跟踪推荐属性。

签名

static void createReferrerShortLink(
  String baseLink,
  String referrerName,
  String referrerId,
  Map<String, String> passthroughParams,
  ShortLinkCallback completionHandler
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Create a referrer short link
Singular.createReferrerShortLink(
  'https://yourapp.sng.link/A1b2c',
  'John Doe',
  'user_12345',
  {
    'promo_code': 'SUMMER2025',
    'campaign': 'referral_program'
  },
  (String? shortLink, String? error) {
    if (error != null) {
      print('Error creating short link: $error');
    } else {
      print('Short link created: $shortLink');
    }
  }
);

自定义收入

Singular.customRevenue 方法

使用指定的事件名称、货币和金额跟踪自定义收入事件。该方法用于跟踪与应用内购买或广告收入无关的收入。

签名

static void customRevenue(
  String eventName,
  String currency,
  double amount
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Track custom revenue event
Singular.customRevenue('Subscription_Purchase', 'USD', 9.99);

customRevenueWithAttributes

Singular.customRevenueWithAttributes 方法

跟踪带有附加属性的自定义收入事件。该方法扩展了基本的自定义收入跟踪功能,允许您包含自定义键值对,以进行更详细的跟踪。

签名

static void customRevenueWithAttributes(
  String eventName,
  String currency,
  double amount,
  Map attributes
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Track custom revenue with additional attributes
Singular.customRevenueWithAttributes(
  'Premium_Upgrade',
  'USD',
  29.99,
  {
    'subscription_tier': 'premium',
    'billing_cycle': 'annual',
    'promotion_code': 'ANNUAL20'
  }
);

customRevenueWithAllAttributes

Singular.customRevenueWithAllAttributes 方法

跟踪带有所有可能属性(包括产品 SKU、产品名称、产品类别、产品数量和自定义属性)的自定义收入事件。

签名

static void customRevenueWithAllAttributes(
  String eventName,
  String currency,
  double amount,
  String productSKU,
  String productName,
  String productCategory,
  int productQuantity,
  Map attributes
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Track custom revenue with all attributes
Singular.customRevenueWithAllAttributes(
  'In_Game_Purchase',
  'USD',
  4.99,
  'gold_pack_500',
  'Gold Pack 500',
  'virtual_currency',
  1,
  {
    'payment_method': 'credit_card',
    'discount_applied': 'false'
  }
);

事件

Singular.event 方法

跟踪只有事件名称的简单事件。这是 Singular SDK 中最基本的事件跟踪形式。

签名

static void event(String eventName)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Track a simple event
Singular.event('Level_Completed');

eventWithArgs

Singular.eventWithArgs 方法

使用键值对形式的附加属性跟踪事件。 这样就可以使用自定义参数进行更详细的事件跟踪。

签名

static void eventWithArgs(String eventName, Map args)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Track event with custom attributes
Singular.eventWithArgs('Level_Completed', {
  'level_number': 10,
  'score': 8500,
  'time_seconds': 245,
  'difficulty': 'hard'
});

获取全局属性

Singular.getGlobalProperties 方法

返回当前设置的所有全局属性的映射。全局属性会自动包含在 SDK 跟踪的每个事件中。

签名

static Future<Map<String, String>> getGlobalProperties()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Get all global properties
Map<String, String> properties = await Singular.getGlobalProperties();
print('Current global properties: $properties');

getLimitDataSharing

Singular.getLimitDataSharing 方法

返回数据共享限制的当前状态。本方法检查当前是否限制与第三方共享数据。

签名

static Future<bool> getLimitDataSharing()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Check if data sharing is limited
bool isLimited = await Singular.getLimitDataSharing();
print('Data sharing limited: $isLimited');

handlePushNotification

Singular.handlePushNotification 方法

处理推送通知属性。当您的应用程序收到推送通知时,应调用此方法,以便为通知驱动的应用程序打开启用归因跟踪。

签名

static void handlePushNotification(Map notification)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Handle incoming push notification
Map<String, dynamic> notificationData = {
  'title': 'New Offer Available',
  'body': 'Check out our latest deals',
  'campaign_id': 'summer_2025'
};

Singular.handlePushNotification(notificationData);

inAppPurchase

Singular.inAppPurchase 方法

跟踪应用内购买事件。该方法向 Singular 报告应用程序内的购买行为,以便跟踪收入和归因。使用 Flutterin_app_purchase 包检索包含完整交易详细信息的购买对象。

SingularIAP purchase 对象必须使用平台特定子类构造函数构建:

  • SingularIOSIAP(double revenue, String? currencyCode, String? productId, String? transactionId, String? receipt)
  • SingularAndroidIAP(double revenue, String? currencyCode, String? signature, String? receipt)

因此,首先使用revenuecurrencyCode ,然后使用平台特定字段构建相应的SingularIAP 子类。

签名

static void inAppPurchase(String eventName, SingularIAP purchase)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_iap.dart';

// Build an iOS SingularIAP purchase object and send it to the SDK
const String eventName = 'iap_purchase'; // <= 32 ASCII chars
final SingularIAP purchase = SingularIOSIAP(
  4.99,               // revenue (double)
  'USD',              // currency code (String)
  'com.example.sku',  // productId (String)
  'transactionId123', // transactionID from AppStorePurchaseDetails (String)
  'base64_receipt'    // JWS receipt from StoreKit (String)
);

// OR, Build an Android SingularIAP purchase object and send it to the SDK
const String eventName = 'iap_purchase'; // <= 32 ASCII chars
final SingularIAP purchase = SingularAndroidIAP(
  4.99,               // revenue (double)
  'USD',              // currency code (String)
  'com.example.sku',  // Signature from GooglePlayPurchase (String)
  'originalJson_receipt'    // receipt Object from GooglePlayPurchase originalJson (String)
);

// Basic tracking
Singular.inAppPurchase(eventName, purchase);

inAppPurchaseWithAttributes(带属性的应用程序购买

Singular.inAppPurchaseWithAttributes 方法

跟踪带有附加自定义属性的应用内购买事件。该方法扩展了基本的 IAP 跟踪功能,允许自定义键值对,以进行更详细的购买跟踪。

签名

static void inAppPurchaseWithAttributes(String eventName, SingularIAP purchase, Map attributes)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_iap.dart';
// Generate SingularIAP purchase as above
// Tracking with attributes
  Singular.inAppPurchaseWithAttributes(eventName, purchase, {
    'user_level': 42,
    'is_first_purchase': true,
    'gems_balance': 1500
  });

isAllTrackingStopped

Singular.isAllTrackingStopped 方法

返回所有跟踪是否已停止。该方法检查 SDK 当前是否处于未收集或发送数据的状态。

签名

static Future<bool> isAllTrackingStopped()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Check if tracking is stopped
bool isStopped = await Singular.isAllTrackingStopped();
print('All tracking stopped: $isStopped');

limitDataSharing

Singular.limitDataSharing 方法

限制或启用与第三方共享数据。该方法用于控制 SDK 是否与广告网络和其他第三方服务共享数据,以便进行归因分析。

签名

static void limitDataSharing(bool limitDataSharingValue)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Limit data sharing
Singular.limitDataSharing(true);

// Or enable data sharing
Singular.limitDataSharing(false);

registerDeviceTokenForUninstall

Singular.registerDeviceTokenForUninstall 方法

为卸载跟踪注册设备的推送通知令牌,使 Singular 能够在用户卸载应用程序时进行检测。

签名

static void registerDeviceTokenForUninstall(String token)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Register device token for uninstall tracking
String deviceToken = 'your_device_push_token_here';
Singular.registerDeviceTokenForUninstall(deviceToken);

resumeAllTracking

Singular.resumeAllTracking 方法

恢复之前停止的所有跟踪。该方法可在停止跟踪后重新启用数据收集和传输。

签名

static void resumeAllTracking()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Resume tracking after it was stopped
Singular.resumeAllTracking();

setCustomUserId

Singular.setCustomUserId 方法

设置用于跟踪的自定义用户标识符。该方法将事件与应用程序用户系统中的特定用户 ID 关联。

签名

static void setCustomUserId(String customUserId)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Set custom user ID after user logs in
Singular.setCustomUserId('user_12345');

setDeviceCustomUserId

Singular.setDeviceCustomUserId 方法

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

签名

static void setDeviceCustomUserId(String customUserId)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Set device-level custom user ID
Singular.setDeviceCustomUserId('device_user_67890');

setFCMDeviceToken

Singular.setFCMDeviceToken 方法

设置 Firebase Cloud Messaging(FCM)设备令牌。该方法专门用于使用 FCM 进行推送通知的 Android 设备。

签名

static void setFCMDeviceToken(String token)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'dart:io';

// Set FCM token (Android only)
if (Platform.isAndroid) {
  String fcmToken = 'your_fcm_token_here';
  Singular.setFCMDeviceToken(fcmToken);
}

设置全局属性

Singular.setGlobalProperty 方法

设置将包含在所有后续事件中的全局属性。 全局属性是自动添加到 SDK 跟踪的每个事件中的键值对。

签名

static void setGlobalProperty(
  String key,
  String value,
  bool overrideExisting
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Set a global property
Singular.setGlobalProperty('user_type', 'premium', true);
Singular.setGlobalProperty('app_theme', 'dark', false);

setLimitAdvertisingIdentifiers

Singular.setLimitAdvertisingIdentifiers 方法

限制收集广告标识符(iOS 上为 IDFA,Android 上为 GAID)。此方法控制 SDK 是否收集和使用广告 ID 进行归因。

签名

static void setLimitAdvertisingIdentifiers(bool limit)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Limit advertising identifier collection
Singular.setLimitAdvertisingIdentifiers(true);

skanGetConversionValue

Singular.skanGetConversionValue 方法

获取当前 SKAdNetwork 转换值(仅限 iOS)。该方法检索已为 SKAdNetwork 归属设置的转换值。

签名

static Future<int> skanGetConversionValue()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'dart:io';

// Get current SKAdNetwork conversion value (iOS only)
if (Platform.isIOS) {
  int conversionValue = await Singular.skanGetConversionValue();
  print('Current conversion value: $conversionValue');
}

skanRegisterAppForAdNetworkAttribution

Singular.skanRegisterAppForAdNetworkAttribution 方法

将应用程序注册为 SKAdNetwork 归因(仅限 iOS)。调用此方法可在 iOS 设备上启用 SKAdNetwork 跟踪功能。

签名

static void skanRegisterAppForAdNetworkAttribution()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'dart:io';

// Register for SKAdNetwork attribution (iOS only)
if (Platform.isIOS) {
  Singular.skanRegisterAppForAdNetworkAttribution();
}

skanUpdateConversionValue

Singular.skanUpdateConversionValue 方法

更新 SKAdNetwork 转换值(仅限 iOS)。此方法为 SKAdNetwork 归因设置新的转换值,代表用户质量或参与程度。

签名

static void skanUpdateConversionValue(int conversionValue)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'dart:io';

// Update SKAdNetwork conversion value (iOS only)
if (Platform.isIOS) {
  Singular.skanUpdateConversionValue(5);
}

skanUpdateConversionValues

Singular.skanUpdateConversionValues 方法

使用附加参数更新 SKAdNetwork 转换值,包括粗转换值和锁定状态(仅限 iOS 16.1+)。该方法可对 SKAdNetwork 的回传进行更精细的控制。

签名

static void skanUpdateConversionValues(
  int conversionValue,
  int coarse,
  bool lock
)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'dart:io';

// Update conversion values with coarse value and lock (iOS 16.1+)
if (Platform.isIOS) {
  Singular.skanUpdateConversionValues(
    10,    // fine conversion value
    1,     // coarse conversion value
    false  // lock status
  );
}

开始

Singular.start 方法

使用提供的配置初始化并启动 Singular SDK。 必须在调用其他 SDK 方法之前调用此方法,并且应在应用程序生命周期中尽早调用。

签名

static void start(SingularConfig config)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';

// Create and configure the SDK
SingularConfig config = SingularConfig(
  'YOUR_API_KEY',
  'YOUR_SECRET_KEY'
)
  ..withLoggingEnabled()
  ..withSessionTimeoutInSec(60);

// Start the SDK
Singular.start(config);

stopAllTracking

Singular.stopAllTracking 方法

停止 SDK 的所有跟踪。该方法会停止所有数据收集和传输,通常在用户选择退出跟踪时用于保护隐私。

签名

static void stopAllTracking()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Stop all tracking (for privacy opt-out)
Singular.stopAllTracking();

trackingOptIn

Singular.trackingOptIn 方法

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

签名

static void trackingOptIn()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// User opted in to tracking
Singular.trackingOptIn();

trackingUnder13

Singular.trackingUnder13 方法

表示用户未满 13 周岁。该方法启用 COPPA 合规模式,限制收集 13 岁以下用户的数据。

签名

static void trackingUnder13()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Enable COPPA compliance mode
Singular.trackingUnder13();

unsetCustomUserId

Singular.unsetCustomUserId 方法

删除自定义用户标识符。该方法会清除之前设置的自定义用户 ID,通常在用户注销时调用。

签名

static void unsetCustomUserId()

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Remove custom user ID on logout
Singular.unsetCustomUserId();

unsetGlobalProperty

Singular.unsetGlobalProperty 方法

按键删除特定全局属性。该方法清除先前设置的单个全局属性。

签名

static void unsetGlobalProperty(String key)

使用示例

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Remove a specific global property
Singular.unsetGlobalProperty('user_type');