Flutter无广告网络集成插件flutter_meta_sdk_no_ad_network的使用

Flutter无广告网络集成插件flutter_meta_sdk_no_ad_network的使用

GitHub code size GitHub followers GitHub contributors

这是带有无FBAudienceNetwork依赖项的flutter_meta_sdk的分支。

flutter_meta_sdk_no_ad_network 允许你将Flutter与原生Meta SDK进行集成。

此插件使用了最新的SDK版本,以支持iOS 14。目前,该插件支持iOS和Android的应用事件和深度链接。

设置

首先,如果你还没有一个应用,请在Facebook开发者平台创建一个应用:Facebook开发者平台

  1. 获取你的应用ID(以下称为 [APP_ID])。
  2. 获取你的客户端令牌(以下称为 [CLIENT_TOKEN])。 更多信息及获取方法请参见"Facebook文档: 客户端令牌"。

iOS配置

更多信息请查看Facebook官方SDK文档

阅读"iOS应用事件入门指南"教程,并特别注意第5步,通过打开 info.plist 文件并添加以下内容:

  • 如果你的代码中没有 CFBundleURLTypes,请在最后的 </dict> 元素之前添加以下内容:
<key>CFBundleURLTypes</key>
<array>
  <dict>
  <key>CFBundleURLSchemes</key>
  <array>
    <string>fb[APP_ID]</string>
  </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
  • 如果你的代码中已经包含 CFBundleURLTypes,请插入以下内容:
<array>
 <dict>
 <key>CFBundleURLSchemes</key>
 <array>
   <string>fb[APP_ID]</string>
 </array>
 </dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>

Android配置

更多信息请查看Facebook官方SDK文档

阅读"Android应用事件入门指南"教程,并特别注意第3步,通过在 /app/res/values/strings.xml 中添加以下内容(或在相应的 debugrelease 构建风味中添加):

<string name="facebook_app_id">[APP_ID]</string>
<string name="facebook_client_token">[CLIENT_TOKEN]</string>

之后,在 AndroidManifest.xml 文件的 <application> 标签下添加以下内容:

<application android:label="@string/app_name" ...>
    ...
    <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>

关于Flutter Meta SDK

请参考Facebook应用事件的官方SDK文档,分别是iOS文档Android文档,以了解正确的预期行为。如果发现任何不符合官方文档的行为,请在GitHub问题报告页面报告问题。

参与

非常感谢你考虑参与进来。你是一个真正的超级⭐️,我们爱你!

报告错误和问题

请使用配置好的GitHub问题报告模板报告问题。确保客观且详细地陈述你的观察和期望,以便我们理解你的需求并进行故障排除。

讨论和想法

我们很高兴在仓库讨论区讨论和交流想法,或者在StackOverflow上提问。

如果您有任何关于如何使用Facebook SDK作为报告工具,或如何使用此插件的问题,请随时发帖提问。


示例代码

import 'package:flutter/material.dart';
import 'package:flutter_meta_sdk_no_ad_network/flutter_meta_sdk.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  static final metaSdk = FlutterMetaSdk();

  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              FutureBuilder(
                future: metaSdk.getAnonymousId(),
                builder: (context, snapshot) {
                  final id = snapshot.data ?? '???';
                  return Text('Anonymous ID: $id');
                },
              ),
              MaterialButton(
                child: const Text("Click me!"),
                onPressed: () {
                  // 记录点击事件
                  metaSdk.logEvent(
                    name: 'button_clicked',
                    parameters: {
                      'button_id': 'the_clickme_button',
                    },
                  );
                },
              ),
              MaterialButton(
                child: const Text("Set user data"),
                onPressed: () {
                  // 设置用户数据
                  metaSdk.setUserData(
                    email: 'opensource@oddbit.id',
                    firstName: 'Oddbit',
                    dateOfBirth: '2019-10-19',
                    city: 'Denpasar',
                    country: 'Indonesia',
                  );
                },
              ),
              MaterialButton(
                child: const Text("Test logAddToCart"),
                onPressed: () {
                  // 记录添加到购物车事件
                  metaSdk.logAddToCart(
                    id: '1',
                    type: 'product',
                    price: 99.0,
                    currency: 'TRY',
                  );
                },
              ),
              MaterialButton(
                child: const Text("Test purchase!"),
                onPressed: () {
                  // 记录购买事件
                  metaSdk.logPurchase(amount: 1, currency: "USD");
                },
              ),
              MaterialButton(
                child: const Text("Enable advertise tracking!"),
                onPressed: () {
                  // 启用广告跟踪
                  metaSdk.setAdvertiserTracking(enabled: true);
                },
              ),
              MaterialButton(
                child: const Text("Disabled advertise tracking!"),
                onPressed: () {
                  // 禁用广告跟踪
                  metaSdk.setAdvertiserTracking(enabled: false);
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter无广告网络集成插件flutter_meta_sdk_no_ad_network的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter无广告网络集成插件flutter_meta_sdk_no_ad_network的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用flutter_meta_sdk_no_ad_network插件的示例代码。请注意,由于flutter_meta_sdk_no_ad_network是一个假设的插件名称,实际代码可能需要根据具体的插件文档进行调整。假设该插件提供了基本的网络请求功能,以下是如何集成和使用它的示例:

1. 添加依赖

首先,在你的pubspec.yaml文件中添加该插件的依赖。由于这是一个假设的插件名称,你需要替换为实际的插件名称和版本。

dependencies:
  flutter:
    sdk: flutter
  flutter_meta_sdk_no_ad_network: ^1.0.0  # 假设的版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入该插件。

import 'package:flutter_meta_sdk_no_ad_network/flutter_meta_sdk_no_ad_network.dart';

3. 初始化插件

通常,网络插件需要在应用启动时进行初始化。你可以在main.dartvoid main()函数中进行初始化。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 假设插件有一个初始化方法
  await FlutterMetaSdkNoAdNetwork.initialize();

  runApp(MyApp());
}

4. 使用插件进行网络请求

假设flutter_meta_sdk_no_ad_network插件提供了一个get方法来执行HTTP GET请求,以下是如何使用该方法的示例:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Meta SDK No Ad Network Example'),
        ),
        body: Center(
          child: FutureBuilder<String>(
            future: fetchData(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                return Text('Data: ${snapshot.data}');
              }
            },
          ),
        ),
      ),
    );
  }

  Future<String> fetchData() async {
    try {
      // 假设插件提供了一个get方法来执行HTTP GET请求
      var response = await FlutterMetaSdkNoAdNetwork.get(
        url: 'https://api.example.com/data',
        headers: {
          'Content-Type': 'application/json',
        },
      );

      // 解析响应数据
      var data = jsonDecode(response.body);
      return data['message']; // 假设返回的数据中包含一个名为"message"的字段
    } catch (e) {
      throw Exception('Failed to fetch data: $e');
    }
  }
}

注意事项

  1. 插件文档:务必参考实际插件的官方文档,因为不同的插件可能有不同的初始化和使用方法。
  2. 错误处理:在实际应用中,应该添加更多的错误处理逻辑,以确保应用的健壮性。
  3. 依赖版本:确保你使用的是与你的Flutter版本兼容的插件版本。

由于flutter_meta_sdk_no_ad_network是一个假设的插件名称,上述代码中的方法和类名可能需要根据实际插件的API进行调整。

回到顶部