AdMob UMP SDK in Flutter - Implement your GDPR dialog

Поділитися
Вставка
  • Опубліковано 25 сер 2024

КОМЕНТАРІ • 75

  • @jeremysharpe5467
    @jeremysharpe5467 8 місяців тому +6

    I was really lost trying to figure out how to implement this dialog in Flutter. This video was absolutely a god send, covering everything I was confused about and packaging it really nicely so it's easy to use in any app. Thank you!

  • @JSquiff
    @JSquiff 10 місяців тому +2

    Videos like these are the ones that get my Like & Subscribe.

  • @PsychologyMood
    @PsychologyMood 4 місяці тому +1

    You are legend been trying for days, thx really appreciated.

  • @user-eu5yl6fr8j
    @user-eu5yl6fr8j 9 місяців тому +1

    Bravo. So easy to follow!!! And it worked perfectly

  • @barnasoba8287
    @barnasoba8287 7 місяців тому +1

    David Muchas gracias, tras buscar mucho para flutter es la guía más clara.

    • @DavidSerranoIO
      @DavidSerranoIO  7 місяців тому

      De nada! Me alegra que te haya sido útil!

  • @UltraDeepMultimedia
    @UltraDeepMultimedia 9 місяців тому +2

    Nice, actually better than reading documentation 😊 youv'e just earned a sub

    • @DavidSerranoIO
      @DavidSerranoIO  9 місяців тому

      Thanks for watching the video! And thanks for the sub!

  • @kurdishpotato1707
    @kurdishpotato1707 4 місяці тому +1

    really appreciated, this was helpful

  • @palm1032
    @palm1032 Місяць тому

    @David Serrano it return obtained for both consent and not consent and it load the ads in both case

  • @grzegorzsamojedny
    @grzegorzsamojedny 8 місяців тому +1

    Thank you David. Source code would help ;)

  • @user-qr7jo6di6r
    @user-qr7jo6di6r 7 місяців тому +1

    very good and thank you so much.

    • @DavidSerranoIO
      @DavidSerranoIO  7 місяців тому

      You're welcome!!

    • @palm1032
      @palm1032 Місяць тому

      @@DavidSerranoIO it return obtained for both consent and dont consent which load the ads in both case how to fix that ?

  • @kamil_supabase_enjoyer
    @kamil_supabase_enjoyer 11 місяців тому +2

    😍😍😍

  • @warreng1able
    @warreng1able 6 місяців тому +2

    David - Nice explanation and good to see that all of this can be handled with google mobile ads. My question, now that we have the ump plugin for flutter, would it make more sense to use this as it simplifies the code base (Completers are not required).
    Secondly - are you saying that for a user to remove ALL ads from an app that they have not bought and they are based in EU, all they need to do is NOT CONSENT and then the ads are removed? Your example shows that this is the case but I think this is incorrect, If CONSENT is not given, I believe PERSONALISED ads should be false, i.e they should still see ADs but not personalised since the user has not consented.

    • @DavidSerranoIO
      @DavidSerranoIO  6 місяців тому

      Regarding your first question, what specific plugin are you referring to?
      Regarding your second question, indeed, if there is no consent, no ads are shown. This is the expected behavior designed by Google. There has been a lot of controversy about this, if you search online you will see many people criticizing this decision.

    • @sabrinasalvador1420
      @sabrinasalvador1420 6 місяців тому

      @@DavidSerranoIO I think this is incorrect, i.e if within the EU and the user does not consent to GDPR - It doesnt mean that ads cannot be shown.
      Non-Personalized Ads (NPA): If a user does not give consent for personalized ads under GDPR, you can still show non-personalized ads. Non-personalized ads are not based on a user's past behavior. They are targeted using contextual information rather than the user's behavior, such as the current content of the app or the user's general location (such as city or country).
      Consent Status Handling: When a user does not consent, you should inform the Google Mobile Ads SDK to only request non-personalized ads. This is typically done by setting an appropriate flag or parameter in your ad request to indicate that only non-personalized ads should be served.
      Imagine if you are writing a game or app whereby your only source of revenue is via ad's until the user buys tokens or subscribes. Once they subscribe you can remove ads. If they do not subscribe or buy tokens you can and must still show ads, its just that if they live within EU - and DO NOT CONSENT , then contextual and relevant ads must not be shown not must you allow tracking etc ... They will still get ads but just not relevant ads.

    • @DavidSerranoIO
      @DavidSerranoIO  6 місяців тому

      @@sabrinasalvador1420 Indeed, under the GDPR it is possible to show non-personalized ads if the user does not consent to tracking, but in the case of AdMob this is not the case. Despite the snippet of documentation you've shown me, AdMob does not show ads of any kind without consent. It's how the library is designed.

    • @sabrinasalvador1420
      @sabrinasalvador1420 6 місяців тому

      ​ @DavidSerranoIO Emmm… Interesting - Could you possibly point me to your reference regarding 'AdMob does not show ads of any kind without consent" as I’m struggling to find full clarification on this.
      Additionally, I have downloaded a number of apps and :
      - Did not allow tracking
      - Did not consent (When the GDPR dialog gets displayed)
      I still received ads. Even if I go to ‘Manage Options’ and turn off all options (consent and legitimate interest) and do the same for the vendor screen etc. So either they haven’t used AdMob or they haven’t coded things correctly.
      However, I have just researched this in Android and looked at the Android code and it does appear to validate everything you are saying. i.e if a user does not consent to GDPR then no ads should be shown) - this means users within the EU can effectively turn off ads for an app whilst the same users outside of the EU will still be served ads!
      Based on your experience - What is the correct workflow when integrating Admob with ATT and GDPR consent ? i.e
      Assuming user in EU :
      1) Do you do GDPR consent first and then ATT
      2) Do you do ATT and then GDPR
      3) Do you do GDPR and if no consent dont do ATT
      4) Do you do ATT and if no consent dont do GDPR
      Assuming user outside of EU
      1) Just do ATT
      Would appreciate your thoughts on this - also, FYI , I am using this plugins now :
      User messaging platform
      App tracking transparency
      Since the UMP SDK simplifies things somewhat.

    • @DavidSerranoIO
      @DavidSerranoIO  6 місяців тому

      @@sabrinasalvador1420 My advice is that you manage the ATT dialog also from google_mobile_ads. It can be configured from the AdMob console, and the library itself will be in charge of requesting it at the correct time, both for users in the EU and outside. You don't need to use a dedicated plugin for the ATT dialog, google_mobile_ads handles it all.

  • @rojotv122
    @rojotv122 10 місяців тому +1

    Me sirvió. Gracias! 😇😇😇

  • @elsanchero
    @elsanchero 8 місяців тому +1

    Realmente funciona, muchas gracias👍

  • @cub3608
    @cub3608 7 місяців тому +1

    beautiful

  • @palm1032
    @palm1032 Місяць тому

    how to stop the ads or show the ads , it stops but after i come back to page it shows the ads again altho it was denied

  • @aclcoy
    @aclcoy 8 місяців тому +2

    How to check whether the user consent to GDPR or not?

    • @DavidSerranoIO
      @DavidSerranoIO  8 місяців тому +1

      In principle you should not access that data. But in case you want to do it, you can use the variables that the UMP saves in the shared preferences using the mechanism that I explain in the video.

  • @sabrinasalvador1420
    @sabrinasalvador1420 6 місяців тому +1

    Thank you for a great intro to the GDPR implementation. My question, your example shows how to integrate and display GDPR screen that is created in Privacy & Messaging. However, assuming we also want to cater for iOS 14.x users and enable tracking and consequently show the IDFA explainer to our iOS 14.x users, can you advise how this will be achieved?

    • @DavidSerranoIO
      @DavidSerranoIO  6 місяців тому

      Mh good question, unfortunately I have not come across that specific case so I would not know how to guide you, of course the system dialogue is not going to work. I imagine that you would have to make a completely custom implementation for those users.

    • @sabrinasalvador1420
      @sabrinasalvador1420 6 місяців тому

      @@DavidSerranoIO Yes, we would need to check for iOS 14.x and that ATT hasnt been determined, then the most simplest way is to just handle the dialog in Flutter - once the users close the custom handle rolled flutter IDFA explainer dialog, we then launch the ATT system dialog.

  • @Mattias1995
    @Mattias1995 2 місяці тому +1

    isConsentFormAvailable() returns false; any ideas why? I have saved the form, and also tried enabling the debug to pretend to be within EU (even though I already am).

    • @DavidSerranoIO
      @DavidSerranoIO  Місяць тому

      If I remember correctly, there are several reasons why the form may not be available. I seem to remember that one of them is an incorrect configuration in AdMob. I recommend that you look at the official documentation to review the entire process.

  • @mmkamal
    @mmkamal 4 місяці тому +1

    If the dialog is not showing up then add your testId in the params like
    final params = ConsentRequestParameters(
    consentDebugSettings: ConsentDebugSettings(
    testIdentifiers: [My test Id Here],
    debugGeography: DebugGeography.debugGeographyEea,
    ),
    );

    • @palm1032
      @palm1032 Місяць тому

      hi but it return obtained for the both consent and dont consent ?

  • @andreashadjithoma1410
    @andreashadjithoma1410 3 місяці тому +1

    Why there are no ads if the user does not consent?

    • @DavidSerranoIO
      @DavidSerranoIO  3 місяці тому

      It's a design decision by Google.

    • @andreashadjithoma1410
      @andreashadjithoma1410 3 місяці тому

      @@DavidSerranoIO this is a disaster! Is there any way to show non-personalized ads when users do not consent?

    • @DavidSerranoIO
      @DavidSerranoIO  3 місяці тому

      @@andreashadjithoma1410 As far as I know it is not possible. You would have to use another ad network in that case.

  • @user-ru8et5ni3x
    @user-ru8et5ni3x 8 місяців тому

    Where is admob_consent_dialog? It is referenced in the tutorial for initialization_screen.dart but there no mention of how to add admob_consent_dialog

    • @DavidSerranoIO
      @DavidSerranoIO  8 місяців тому +1

      admob_consent_dialog is the name of the test application that I am showing. It is not a dependency. To do the implementation as I do, you must create initialization_screen.dart and ultimately, follow the tutorial as I explain it.

  • @hansfritz6026
    @hansfritz6026 7 місяців тому +1

    any chance you could do a video how to do all of this inside unity 2023 ?

    • @DavidSerranoIO
      @DavidSerranoIO  7 місяців тому

      I'm afraid not, I have no idea how to implement it in Unity.

  • @fahedfbk
    @fahedfbk 7 місяців тому +1

    I am trying to force the device to be outside Eea with debugGeographyNotEea but it still appears? I deleted the app but it still showing that I am in Eea? do you have any advice?

    • @DavidSerranoIO
      @DavidSerranoIO  7 місяців тому

      I see, check your settings, if you are indicating that you are not in Europe then the SDK should tell you that it is not necessary to show the message. Alternatively, you can always try a VPN outside of Europe to see if it happens the same.

    • @YongaApps-dev
      @YongaApps-dev 7 місяців тому

      In your Try specifying : DebugGeography.debugGeographyNotEea and also include your test device : ["FA7243A34D1C922CA3D78F2AE7T620GG"]
      This is what worked for me.

    • @YongaApps-dev
      @YongaApps-dev 7 місяців тому

      Some texts disappeared in the above comment. here is the code
      consentDebugSettings: ConsentDebugSettings(
      debugGeography: DebugGeography.debugGeographyNotEea,
      testIdentifiers: ["FA7243A34D1C922CA3D78F2AE7T620GG"]
      ),

  • @user-vu1ft1kr2b
    @user-vu1ft1kr2b 3 місяці тому +1

    My Like & Subscribe, thx really appreciated

    • @DavidSerranoIO
      @DavidSerranoIO  3 місяці тому

      You're welcome! And thanks for the subscribe!

  • @AbStudioApps
    @AbStudioApps 7 місяців тому +1

    bro its not working... section 3... dailog is not showing...

    • @DavidSerranoIO
      @DavidSerranoIO  7 місяців тому

      Review your implementation carefully. Several people have followed this guide and it has helped them. If you have a specific problem, explain it in detail and we will see if we can help you.

  • @KayelGames
    @KayelGames 9 місяців тому

    Can you please provide the code base?

    • @DavidSerranoIO
      @DavidSerranoIO  9 місяців тому

      Unfortunately I do not have any project to share, however the instructions I give are mere guidelines, the final implementation will depend a lot on each person's application.

  • @EvertonRichardsJAMNEWSLINK
    @EvertonRichardsJAMNEWSLINK 8 місяців тому

    i would like you to give access to the code you write

    • @DavidSerranoIO
      @DavidSerranoIO  8 місяців тому

      Keep in mind that the instructions I explain in the video are indicative, the final implementation will vary depending on how you have implemented your application.

    • @loot6
      @loot6 4 місяці тому

      @@DavidSerranoIO Yes but it would be more straightforward to modify your code to requirements rather than copy it out from the video.

  • @aplikita_studio
    @aplikita_studio 7 місяців тому

    gimme full codes plz

  • @engineer6443
    @engineer6443 10 місяців тому +2

    at last, normal english explanation without "assamaleikum vashmallah shashmallah" ))

    • @mmkamal
      @mmkamal 4 місяці тому

      without assamakeikum? Seems you have so much problem with one word lol

    • @engineer6443
      @engineer6443 4 місяці тому

      @@mmkamal the problem is when barely speaking people start teaching others and fill youtube with their trash content lol

  • @loot6
    @loot6 4 місяці тому

    Wow so much bs just to show that little popup.

    • @DavidSerranoIO
      @DavidSerranoIO  4 місяці тому

      If you do this as a hobby, it is possible that just showing the popup will be enough. This video is aimed at professionals and companies that want to do this implementation seriously, taking into account all the relevant factors.

    • @loot6
      @loot6 4 місяці тому

      @@DavidSerranoIO Not really sure what you want to say...all I can do is repeat my original comment. So much bs just to show that little popup. I'm surprised google didn't make it simpler for something that just asks for your consent or not.

  • @JuanCarlos-ff2rh
    @JuanCarlos-ff2rh 7 місяців тому

    Hello, I'm very interested in this tutorial. I believe it explains the process of implementing the AdMob UMP SDK in Flutter with the GDPR dialog quite well. It's the only tutorial I've found, and it explains things clearly. However, being at a medium level, I find it a bit challenging. I've been trying for almost a month, but I always encounter an error. I haven't found the line 'builder: (context) => const MainScreen(),' anywhere. Could you please help me understand where to insert '.. => const InitializeScreen(targetWidget: XXXX()),);' in my main.dart file?. Please.
    MAIN.DART
    import 'package:flutter/gestures.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_localizations/flutter_localizations.dart';
    import 'package:flutter_web_plugins/url_strategy.dart';
    import 'flutter_flow/flutter_flow_theme.dart';
    import 'flutter_flow/flutter_flow_util.dart';
    import 'flutter_flow/internationalization.dart';
    import 'flutter_flow/nav/nav.dart';
    import 'index.dart';
    void main() async {
    WidgetsFlutterBinding.ensureInitialized();
    usePathUrlStrategy();
    await FlutterFlowTheme.initialize();
    runApp(MyApp());
    }
    class MyApp extends StatefulWidget {
    // This widget is the root of your application.
    @override
    State createState() => _MyAppState(); ///_MyAppState(); /////////////////////
    static _MyAppState of(BuildContext context) =>
    context.findAncestorStateOfType()!;
    }
    class _MyAppState extends State {
    Locale? _locale;
    ThemeMode _themeMode = FlutterFlowTheme.themeMode;
    late AppStateNotifier _appStateNotifier;
    late GoRouter _router;
    @override
    void initState() {
    super.initState();
    _appStateNotifier = AppStateNotifier.instance;
    _router = createRouter(_appStateNotifier);
    }
    void setLocale(String language) {
    setState(() => _locale = createLocale(language));
    }
    void setThemeMode(ThemeMode mode) => setState(() {
    _themeMode = mode;
    FlutterFlowTheme.saveThemeMode(mode);
    });
    @override
    Widget build(BuildContext context) {
    return MaterialApp.router(
    title: 'UMP SDK Dialog GDPR PRUEBA D. Serrano',
    localizationsDelegates: [
    FFLocalizationsDelegate(),
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
    ],
    locale: _locale,
    supportedLocales: const [Locale('en', '')],
    theme: ThemeData(
    brightness: Brightness.light,
    scrollbarTheme: ScrollbarThemeData(),
    ),
    darkTheme: ThemeData(
    brightness: Brightness.dark,
    scrollbarTheme: ScrollbarThemeData(),
    ),
    themeMode: _themeMode,
    routerConfig: _router,
    );
    }
    }