# 第三方 SDK 集成配置指南 本文档说明换皮应用如何配置 Adjust、Facebook App Events 和 Google Play 内购三大 SDK。 --- ## 配置文件 请填写以下配置文件(放在项目根目录或 `docs/` 目录下): ```json { "adjust": { "app_token": "your_adjust_app_token", "environment": "sandbox", "event_tokens": { "tier_599": "event_token_599", "tier_999": "event_token_999", "tier_1999": "event_token_1999", "tier_4999": "event_token_4999", "tier_9999": "event_token_9999", "first_purchase": "event_token_first", "purchase": "event_token_purchase", "register": "event_token_register" } }, "facebook": { "app_id": "your_facebook_app_id", "client_token": "your_facebook_client_token" }, "google_play": { "product_ids": { "tier_599": "com.example.product.599", "tier_999": "com.example.product.999", "tier_1999": "com.example.product.1999", "tier_4999": "com.example.product.4999", "tier_9999": "com.example.product.9999" } } } ``` --- ## 一、Adjust SDK 配置 ### 1.1 所需信息 | 字段 | 说明 | 获取位置 | |------|------|----------| | `app_token` | Adjust App Token | Adjust Dashboard → App Settings | | `environment` | `sandbox`(测试)或 `production`(正式) | 根据构建环境选择 | ### 1.2 Android 配置 > **重要**:Facebook SDK 必须在 Flutter 引擎启动前初始化。以下步骤确保初始化顺序正确: > 1. `Application.onCreate()` → 初始化 Facebook SDK > 2. `MainActivity.configureFlutterEngine()` → 缓存 FlutterEngine > 3. `Application` 通过 `FlutterEngineCache` 通知 Dart 层 **1. AndroidManifest.xml** - 添加权限和 Adjust App Token: ```xml ``` **2. res/values/strings.xml** - 添加 Facebook 配置: ```xml your_facebook_app_id your_facebook_client_token ``` **3. app/build.gradle** - 添加 Facebook 依赖: ```groovy dependencies { implementation 'com.facebook.android:facebook-core:18.0.0' } ``` **4. 创建 Application 类** - Facebook SDK 初始化(**必须**): 创建 `android/app/src/main/kotlin//App.kt`: ```kotlin package com.your.package.name import android.app.Application import android.os.Handler import android.os.Looper import com.facebook.FacebookSdk import com.facebook.LoggingBehavior import com.facebook.appevents.AppEventsLogger import io.flutter.embedding.engine.FlutterEngineCache import io.flutter.plugin.common.MethodChannel class App : Application() { companion object { const val CHANNEL = "com.your.package.name/facebook_sdk" const val ENGINE_ID = "main" } override fun onCreate() { super.onCreate() FacebookSdk.sdkInitialize(this) FacebookSdk.setIsDebugEnabled(true) FacebookSdk.addLoggingBehavior(LoggingBehavior.APP_EVENTS) // 通知 Dart 层 Facebook SDK 已初始化 Handler(Looper.getMainLooper()).postDelayed({ val engine = FlutterEngineCache.getInstance().get(ENGINE_ID) if (engine != null) { MethodChannel(engine.dartExecutor.binaryMessenger, CHANNEL) .invokeMethod("onFacebookSdkInitialized", null) } }, 100) } } ``` **5. 更新 MainActivity.kt** - 处理 SDK 初始化回调: ```kotlin package com.your.package.name import android.os.Handler import android.os.Looper import com.facebook.appevents.AppEventsLogger import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngineCache import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { companion object { const val CHANNEL = "com.your.package.name/facebook_sdk" const val ENGINE_ID = "main" } override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) AppEventsLogger.activateApp(application) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) .setMethodCallHandler { call, _ -> if (call.method == "waitForFacebookSdkInit") { AppEventsLogger.activateApp(application) } } // 缓存 FlutterEngine 供 Application 类使用 Handler(Looper.getMainLooper()).postDelayed({ FlutterEngineCache.getInstance().put(ENGINE_ID, flutterEngine) }, 100) } } ``` **6. 更新 AndroidManifest.xml** - 使用 Application 类: ```xml ``` **注意**:Facebook SDK 必须在 Flutter 引擎启动前初始化,使用 Application 类 + MethodChannel 确保时序正确。 ### 1.3 iOS 配置 **1. Info.plist** - 添加配置: ```xml AdjustAppToken your_adjust_app_token AdjustEnvironment sandbox FacebookAppID your_facebook_app_id FacebookClientToken your_facebook_client_token FacebookDisplayName Your App Name ``` --- ## 二、Facebook App Events 配置 ### 2.1 所需信息 | 字段 | 说明 | 获取位置 | |------|------|----------| | `app_id` | Facebook 应用 ID | Facebook Developer Console → Your App → Settings → Basic | | `client_token` | 客户端口令 | Facebook Developer Console → Your App → Settings → Advanced | ### 2.2 配置步骤 按 **1.1** 和 **1.2** 中的 Android/iOS 配置说明添加 `facebook_app_id` 和 `facebook_client_token`。 --- ## 三、Google Play 内购配置 ### 3.1 所需信息 | 字段 | 说明 | 获取位置 | |------|------|----------| | `product_ids` | Google Play Console 商品 ID | Google Play Console → Monetize → Products → Subscriptions/In-app products | ### 3.2 Android 配置 **1. AndroidManifest.xml** - 添加权限: ```xml ``` **2. app/build.gradle** - 添加依赖: ```groovy dependencies { implementation 'com.android.billingclient:billing-ktx:6.0.0' } ``` --- ## 四、框架初始化代码 在 `main.dart` 中初始化: ```dart import 'package:client_proxy_framework/client_proxy_framework.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 1. 初始化 API 客户端 ApiClient.init(YourAppConfig()); // 2. 初始化分析服务 AnalyticsService.init( AnalyticsConfig( adjustConfig: AdjustConfig( appToken: 'your_adjust_app_token', environment: AdjustEnv.sandbox, // 上线改为 AdjustEnv.production logLevel: AdjustLogLevel.verbose, ), facebookConfig: FacebookConfig( appId: 'your_facebook_app_id', debugLogs: true, ), debugLogs: true, ), ); // 3. 启动应用 runApp(const YourApp()); // 4. 初始化认证服务 await AuthService.init(); } ``` --- ## 五、事件埋点示例 ```dart // Adjust 事件埋点 AnalyticsService.trackEvent('your_event_token'); // Facebook 购买事件 AnalyticsService.trackPurchase(amount: 9.99, currency: 'USD'); // Facebook 注册事件 AnalyticsService.trackRegister(); // Facebook 订阅事件 AnalyticsService.trackSubscribe('monthly_vip'); ``` --- ## 六、获取 SDK 配置信息的位置 ### Adjust - Dashboard: https://dashboard.adjust.com - App Settings → App Tokens ### Facebook - Developer Console: https://developers.facebook.com - Settings → Basic (App ID) - Settings → Advanced → Client Token ### Google Play - Play Console: https://play.google.com/console - Monetize → Products → Subscriptions/In-app products