Flutter SDK - 基本集成

文档
新功能:视频指南

观看视频,详细了解集成过程。我们建议您同时使用视频和下面的书面指南。

开始之前:SDK 先决条件

按照集成 Singular SDK 中的步骤进行操作:规划和先决条件》中的步骤。

这些步骤是任何 Singular SDK 集成的先决条件。


安装 SDK

Singular SDK 可作为 Flutter 的插件使用。下面的说明将向您展示如何将 Singular 集成到您的 Flutter 应用程序中。

  • 本文假定您拥有一个功能正常的 Flutter 应用程序。
  • 要初始化 SDK,您需要 Singular SDK Key 和 SDK Secret。您可以在 Singular 平台的"开发工具 > SDK 集成 > SDK 密钥"中获取它们。

将 Singular Flutter 插件添加到项目中:

  1. singular_flutter_sdk: ^1.6.2 添加到pubspec.yaml 文件中:

    pubspec.yaml
    dependencies:
      flutter:
        sdk: flutter
      singular_flutter_sdk: ^1.6.2
  2. 然后在终端导航到你的项目,运行以下程序:

    bash
    flutter packages get

设置先决条件

iOS 先决条件

要使用 Singular Flutter 插件,请添加 AdServices 框架。

  1. 在 iOS 项目中添加 AdServices 框架:

    • 导航至 Flutter 项目的ios 文件夹。
    • 在 Xcode 中打开Runner.xcworkspace (如果使用 CocoaPods,请使用.xcworkspace ,否则请使用.xcodeproj )。
  2. 添加 AdServices 框架:

    • 在 Xcode 中,选择项目的目标(如 "Runner")。
    • 转到 "常规 "选项卡。
    • 滚动到 "框架、库和嵌入式内容 "部分。
    • 单击 + 按钮。
    • 搜索AdServices.framework 并添加。
    • 将框架状态设置为 "可选"(以确保在旧版本 iOS 上无法使用框架时的兼容性)。

安卓先决条件

添加所需的 Android 权限和依赖关系

AndroidManifest.xml文件的<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 权限。

要支持三星 Galaxy Store 的安装推荐器,请添加以下内容:

AndroidManifest.xml
<queries>
   <package android:name="com.sec.android.app.samsungapps" />
</queries>

如果已禁用 Singular SDK 的传递依赖关系,请android/app/build.gradle 中添加以下内容:

android/app/build.gradle
dependencies {
    implementation 'com.android.installreferrer:installreferrer:2.2'
    implementation 'com.google.android.gms:play-services-appset:16.0.0'
}

使用 Proguard 时的配置要求

在 React Native Android 中为 Singular SDK 配置 ProGuard

在 Flutter Android 应用程序中集成 Singular Android SDK 时,您必须添加特定的 ProGuard 规则,以确保 SDK 在发布版本中正常运行。ProGuard(或其现代替代品 R8)用于优化和混淆代码。如果没有适当的 ProGuard 规则,Singular SDK 或其依赖程序可能会被移除或混淆,从而导致运行时问题。

请按照以下步骤为 Singular SDK 配置 ProGuard:

  1. 找到 ProGuard 规则文件:在 Flutter 项目中,导航到android/app/proguard-rules.pro 文件。该文件包含应用程序的自定义 ProGuard 规则。
  2. 添加 Singular SDK ProGuard 规则:将以下行添加到android/app/proguard-rules.pro ,以保留 Singular SDK 及其依赖关系:
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 the following line if you are using the Singular 'revenue' function with Google Play Billing Library
#-keep public class com.android.billingclient.** { *; }

集成 SDK

:在实施Singular SDK时,切记要遵守业务所在地区颁布的各种隐私法,包括但不限于GDPR、CCPA和COPPA。如需了解更多信息,请参阅SDK 选择加入和选择退出实践

每次打开应用程序时,都应调用 SDK 初始化代码。它是所有Singular归因功能的前提,同时也会向Singular发送一个新的用户会话。会话用于计算用户留存率。

导入 Singular 库

main.dart 文件中,添加以下代码导入 Singular 类。

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

初始化 Singular SDK

每次打开应用程序时,都应调用 Singular SDK 初始化代码。它是所有 Singular 归属功能的先决条件,同时也会向 Singular 发送一个新的用户会话(会话用于计算用户保留率)。

初始化代码位于应用程序的主窗口部件(即main.dart )中,也就是应用程序打开时加载的第一个窗口部件。该部件必须是有状态的,代码必须添加到部件的initState() 方法中。

  1. 创建SingularConfig 对象。该对象包含 SDK 密钥和 SDK 保密信息(登录 Singular 账户,进入"开发工具 > SDK 集成 > SDK 密钥"页面获取密钥和保密信息)。
  2. 可选择添加多个配置方法来设置或启用各种 SDK 功能。

  3. 然后,使用start 方法初始化 SDK,将 SingularConfig对象。
  4. 更新main.dart 中的_MyHomePageState 类,加入初始化代码。

修改后的main.dart 示例:

dart
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
//... class MyHomePage extends StatefulWidget { //... } class _MyHomePageState extends State<MyHomePage> { //... @override void initState() { super.initState(); //... SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
// Enable Logging for testing config.logLevel = 3; config.enableLogging = true; // Set hashed User ID if available config.customUserId = "b642b4217b34b1e8d3bd915fc65c4452"; // For iOS (Remove this if you are not displaying an ATT prompt)! config.waitForTrackingAuthorizationWithTimeoutInterval = 300; // To enable SkAdNetwork Support config.skAdNetworkEnabled = true; // To enable META Install Referrer config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE"; // (optional) Using Singular Global Properties feature to capture // third party identifiers. The respective SDK(s) must be initialized // before the Singular SDK. Example of passing the CleverTapID. // var cleverTapId = CleverTapPlugin.getCleverTapID(); // config.withGlobalProperty("CLEVERTAPID", cleverTapId, true); Singular.start(config); }