Flutter GDPR广告合规插件gdpr_ads的使用

Flutter GDPR广告合规插件gdpr_ads的使用

GDPR服务,GDPR中间页面,Admob管理用于加载和展示广告。

特性

  1. GDPR管理器。
  2. 广告加载、展示和返回结果。
  3. GDPR和广告在失败时优雅地处理。

开始使用

此包包含两个组件:GDPR和广告。两者可以单独使用。下面的例子将结合这两个组件。

步骤:

  1. 在Admob账户中创建一个Ad-ID并设置GDPR消息。
  2. 更新AndroidManifest.xmlbuild.gradle文件。
  3. 配置MaterialApp(home: GdprScreenManager())
  4. 展示广告。
  5. 按需更新或重置GDPR。

初始化GDPR和广告

添加一个导航方法,该方法将在GDPR屏幕后导航到下一个屏幕。在下面的例子中,将AfterGdprScreen()替换为你的自定义小部件。

设置广告单元和测试设备ID。下面的广告单元是Admob演示广告单元,可以安全使用。

如果用户从未与GDPR交互过,则会显示GDPR对话框。

如果用户已经与GDPR交互过,则不会显示GDPR对话框。

void main() async {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: GdprScreenManager(
        (BuildContext context) => 
          Navigator.of(context).pushReplacement(
            MaterialPageRoute(builder: (context) => 
              const AfterGdprScreen())),
        bannerIds: ["ca-app-pub-3940256099942544/6300978111"],
        interstitialIds: ["ca-app-pub-3940256099942544/1033173712"],
        interRewardIds: ["ca-app-pub-3940256099942544/5354046379"],
        debugTestDeviceIds: ["... YOUR TEST DEVICE ID HERE ..."],

        // 测试时强制或取消强制GDPR对话框
        debugGeography: GdprDebugGeography.insideEea,
      ).getInitialGdprScreen(),
    );
  }
}

重新访问GDPR

如果用户从未与GDPR交互过,则会显示GDPR对话框。

如果用户已经与GDPR交互过,则不会显示GDPR对话框。

if(GdprService.isUserUnderGdpr()) {
  Navigator.of(context).pushReplacement(
    MaterialPageRoute(
      builder: (context) =>
          GdprScreenManager.initialGdprScreen(),
    ),
  );
}

更新现有的GDPR

无论用户是否已经与GDPR交互过,都会显示GDPR对话框。

Navigator.of(context).pushReplacement(
  MaterialPageRoute(
    builder: (context) =>
        GdprScreenManager.updateGdprScreen(),
  )
)

重置并重新访问GDPR

无论用户是否已经与GDPR交互过,都会重置GDPR对话框并重新显示GDPR对话框。

Navigator.of(context).pushReplacement(
  MaterialPageRoute(
    builder: (context) =>
        GdprScreenManager.initialResetGdprScreen(),
  ),
)

展示广告

如果没有提供adUnitId,则会显示第一个可用的广告单元。

展示横幅广告

kDebugMode下,AdBanner将显示额外信息。

Scaffold(body: AdBanner('... Ad ID ...'));

// 或者
Scaffold(body: AdBanner());

展示插屏广告

final ResponseInterstitial result 
  = await AdService().showInterstitial('... Ad ID ...');

// 或者
final ResponseInterstitial result 
  = await AdService().showInterstitial();

展示激励插屏广告

激励插屏广告需要一个带有计时器的对话框。

对话框的外观应与你的应用设计相匹配。

为了方便起见,将类RewardedInterstitialDialog复制到你的项目中,并根据需要美化AlertDialog内部。源码可以在这里找到。

然后,使用以下代码调用AdService().showInterstitialRewarded(),并传递你的对话框作为参数。

final String? adUnitId = null;

final ResponseInterstitialRewarded result 
  = await AdService().showInterstitialRewarded(
      context, 
      const RewardedInterstitialDialog(
        adUnitId: adUnitId, 
        countdownSeconds:5,
      ),
      adUnitId: adUnitId,
    );

响应详情

返回的响应具有详细的状态枚举,描述了结果。

final ResponseInterstitialRewarded result =
    await AdService().showInterstitialRewarded(
  context,
  const RewardedInterstitialDialog(
    countdownSeconds: 5,
  ),
);

if (
    result.status == StatusInterstitialRewarded.displaySuccess ||
    result.status ==
        StatusInterstitialRewarded.displayDeniedProgrammatically ||
    result.status ==
        StatusInterstitialRewarded.displayFailedUnspecificReasons ||
    result.status == StatusInterstitialRewarded.notLoadedInitialized ||
    result.status == StatusInterstitialRewarded.notLoadedAdIdNotSet ||
    result.status == StatusInterstitialRewarded.notLoadedButTryingTo ||
    result.status == StatusInterstitialRewarded.notLoadedGenerally ||
    result.status == StatusInterstitialRewarded.notLoadedAdIdNotSet
  ) {
  // 广告已展示或因某些技术原因不可用
} else {
  // 用户取消了广告
}

更多关于Flutter GDPR广告合规插件gdpr_ads的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter GDPR广告合规插件gdpr_ads的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中处理GDPR合规性,特别是广告合规性时,gdpr_ads插件可以帮助你管理用户同意和广告展示。以下是使用gdpr_ads插件的步骤和注意事项。

1. 添加依赖

首先,在pubspec.yaml文件中添加gdpr_ads插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  gdpr_ads: ^1.0.0  # 使用最新版本

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

2. 初始化插件

在使用插件之前,你需要在应用的启动阶段初始化gdpr_ads插件。通常可以在main.dart文件中进行初始化。

import 'package:flutter/material.dart';
import 'package:gdpr_ads/gdpr_ads.dart';

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

  // 初始化GDPR插件
  await GdprAds.initialize();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GDPR Ads Demo',
      home: HomeScreen(),
    );
  }
}

3. 显示GDPR同意对话框

在用户首次启动应用或需要更新同意时,你需要显示GDPR同意对话框。可以使用GdprAds.showConsentDialog方法来显示对话框。

import 'package:flutter/material.dart';
import 'package:gdpr_ads/gdpr_ads.dart';

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GDPR Ads Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 显示GDPR同意对话框
            bool consentGiven = await GdprAds.showConsentDialog(context);
            if (consentGiven) {
              // 用户同意,可以展示广告
            } else {
              // 用户拒绝,不能展示广告
            }
          },
          child: Text('Show GDPR Consent Dialog'),
        ),
      ),
    );
  }
}

4. 检查用户同意状态

在展示广告之前,你可以检查用户是否已经同意了GDPR条款。

bool hasConsent = await GdprAds.hasConsent();
if (hasConsent) {
  // 可以展示广告
} else {
  // 不能展示广告
}

5. 重置GDPR同意状态

在某些情况下,你可能需要重置用户的GDPR同意状态。可以使用GdprAds.resetConsent方法。

await GdprAds.resetConsent();

6. 集成广告SDK

确保你已经按照广告SDK的文档(如AdMob、Facebook Audience Network等)正确集成了广告SDK,并在用户同意后展示广告。

7. 处理用户撤销同意

如果用户撤销了GDPR同意,你需要停止展示广告并处理相关逻辑。可以通过监听同意状态的变化来处理。

GdprAds.onConsentChange.listen((bool hasConsent) {
  if (!hasConsent) {
    // 用户撤销同意,停止展示广告
  }
});
回到顶部