client_framework/docs/sdk_integration_guide.md
2026-03-26 10:39:39 +08:00

8.4 KiB
Raw Blame History

第三方 SDK 集成配置指南

本文档说明换皮应用如何配置 Adjust、Facebook App Events 和 Google Play 内购三大 SDK。


配置文件

请填写以下配置文件(放在项目根目录或 docs/ 目录下):

{
  "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

<manifest>
    <uses-permission android:name="android.permission.INTERNET"/>
    
    <application>
        <!-- Adjust 配置 -->
        <meta-data
            android:name="com.adjust.sdk.appToken"
            android:value="your_adjust_app_token" />
        <meta-data
            android:name="com.adjust.sdk.environment"
            android:value="sandbox" />
            
        <!-- Facebook SDK 配置 -->
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />
        <meta-data
            android:name="com.facebook.sdk.ClientToken"
            android:value="@string/facebook_client_token" />
    </application>
</manifest>

2. res/values/strings.xml - 添加 Facebook 配置:

<resources>
    <string name="facebook_app_id">your_facebook_app_id</string>
    <string name="facebook_client_token">your_facebook_client_token</string>
</resources>

3. app/build.gradle - 添加 Facebook 依赖:

dependencies {
    implementation 'com.facebook.android:facebook-core:18.0.0'
}

4. 创建 Application 类 - Facebook SDK 初始化(必须

创建 android/app/src/main/kotlin/<package>/App.kt

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 初始化回调:

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 类:

<application
    android:name=".App"
    android:label="Your App Name"
    ...>

注意Facebook SDK 必须在 Flutter 引擎启动前初始化,使用 Application 类 + MethodChannel 确保时序正确。

1.3 iOS 配置

1. Info.plist - 添加配置:

<key>AdjustAppToken</key>
<string>your_adjust_app_token</string>
<key>AdjustEnvironment</key>
<string>sandbox</string>

<key>FacebookAppID</key>
<string>your_facebook_app_id</string>
<key>FacebookClientToken</key>
<string>your_facebook_client_token</string>
<key>FacebookDisplayName</key>
<string>Your App Name</string>

二、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.11.2 中的 Android/iOS 配置说明添加 facebook_app_idfacebook_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 - 添加权限:

<uses-permission android:name="com.android.vending.BILLING"/>

2. app/build.gradle - 添加依赖:

dependencies {
    implementation 'com.android.billingclient:billing-ktx:6.0.0'
}

四、框架初始化代码

main.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();
}

五、事件埋点示例

// Adjust 事件埋点
AnalyticsService.trackEvent('your_event_token');

// Facebook 购买事件
AnalyticsService.trackPurchase(amount: 9.99, currency: 'USD');

// Facebook 注册事件
AnalyticsService.trackRegister();

// Facebook 订阅事件
AnalyticsService.trackSubscribe('monthly_vip');

六、获取 SDK 配置信息的位置

Adjust

Facebook

Google Play