You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Flutter应用集成Facebook SDK以追踪广告带来的安装量?

Flutter集成Facebook SDK实现应用安装量追踪方案

一、原生项目基础配置

Android 端配置

  • 在android/app/src/main/AndroidManifest.xml的<application>标签内添加以下配置:
    <!-- 配置Facebook应用ID -->
    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>
    <!-- 启用自动应用事件上报 -->
    <meta-data
        android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
        android:value="true"/>
    <!-- 处理Facebook相关页面跳转 -->
    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
    
  • 在android/app/src/main/res/values/strings.xml中添加你的Facebook应用信息:
    <string name="facebook_app_id">你的Facebook应用ID</string>
    <string name="fb_login_protocol_scheme">fb你的Facebook应用ID</string>
    

iOS 端配置

  • 在ios/Runner/Info.plist中添加以下配置:
    <!-- Facebook应用ID与显示名称 -->
    <key>FacebookAppID</key>
    <string>你的Facebook应用ID</string>
    <key>FacebookDisplayName</key>
    <string>你的应用名称</string>
    <!-- 启用自动事件上报 -->
    <key>AutoLogAppEventsEnabled</key>
    <true/>
    <!-- 允许访问Facebook相关Scheme -->
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-share-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>
    <!-- 配置深层链接Scheme -->
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb你的Facebook应用ID</string>
            </array>
        </dict>
    </array>
    <!-- iOS14+ ATT权限申请说明 -->
    <key>NSUserTrackingUsageDescription</key>
    <string>我们需要追踪应用安装来源,以优化广告投放效果</string>
    

二、Flutter 端代码完善

基于你提供的代码,补充SDK初始化、事件上报等核心逻辑,确保安装量追踪生效:

import 'package:flutter_facebook_sdk/flutter_facebook_sdk.dart';
import 'package:shared_preferences/shared_preferences.dart'; // 用于判断首次启动

class MyAppState extends State<MyApp> {
    String _deepLinkUrl = 'Unknown';
    FlutterFacebookSdk? facebookSdk;

    Future<void> initPlatformState() async {
        String? deepLinkUrl;
        try {
            // 初始化Facebook SDK
            facebookSdk = FlutterFacebookSdk();
            // 启用自动事件上报
            await facebookSdk!.setAutoLogAppEventsEnabled(true);
            
            // 监听深层链接
            facebookSdk!.onDeepLinkReceived!.listen((event) {
                setState(() {
                    _deepLinkUrl = event;
                });
                // 上报深层链接打开事件
                _logFacebookEvent('deeplink_open', params: {'url': event});
            });
            deepLinkUrl = await facebookSdk!.getDeepLinkUrl;
            if (deepLinkUrl != null) {
                setState(() {
                    _deepLinkUrl = deepLinkUrl!;
                });
                _logFacebookEvent('deeplink_open', params: {'url': deepLinkUrl!});
            }

            // 开启广告追踪权限
            await facebookSdk!.setAdvertiserTracking(isEnabled: true);

            // 仅在首次启动时上报APP_INSTALL事件
            final prefs = await SharedPreferences.getInstance();
            final hasReportedInstall = prefs.getBool('has_reported_install') ?? false;
            if (!hasReportedInstall) {
                await _logFacebookEvent('APP_INSTALL');
                await prefs.setBool('has_reported_install', true);
            }
        } on PlatformException catch (e) {
            print('Facebook SDK初始化失败: ${e.message}');
        }
        if (!mounted) return;
    }

    // 封装Facebook事件上报方法
    Future<void> _logFacebookEvent(String eventName, {Map<String, dynamic>? params}) async {
        try {
            await facebookSdk!.logEvent(
                name: eventName,
                parameters: params,
            );
        } on PlatformException catch (e) {
            print('事件上报失败: ${e.message}');
        }
    }

    @override
    void initState() {
        super.initState();
        initPlatformState();
    }

    @override
    Widget build(BuildContext context) {
        return Observer(
            builder: (_) => MaterialApp(
                debugShowCheckedModeBanner: false,
                navigatorKey: navigatorKey,
                navigatorObservers: [
                    FirebaseAnalyticsObserver(analytics: analytics),
                ],
                home: SplashScreen(),
                theme: AppTheme.lightTheme,
                darkTheme: AppTheme.darkTheme,
                themeMode: appStore.isDarkMode ? ThemeMode.dark : ThemeMode.light,
                scrollBehavior: SBehavior(),
                supportedLocales: LanguageDataModel.languageLocales(),
                localizationsDelegates: [
                    AppLocalizations.delegate,         
                    GlobalMaterialLocalizations.delegate, 
                    GlobalWidgetsLocalizations.delegate
                ],
                localeResolutionCallback: (locale, supportedLocales) => locale,
                locale: Locale(appStore.selectedLanguage!.languageCode.validate(value: DEFAULT_LANGUAGE)),
            ),
        );
    }
}

三、验证与注意事项

  • 首次启动判断:通过shared_preferences标记是否已上报安装事件,避免重复上报影响数据准确性。
  • 权限验证:iOS需确保用户授权ATT权限,Android需保证Google Play服务正常(用于获取广告ID),否则Facebook无法关联广告来源。
  • 数据验证:可通过Facebook后台的Events Manager查看事件上报情况,或使用测试设备模拟广告跳转安装,验证追踪链路是否正常。
  • 版本兼容:确保flutter_facebook_sdk版本与原生Facebook SDK版本匹配,避免出现兼容性问题。

内容的提问来源于stack exchange,提问作者Adnane ROUHI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:22:12