1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Formulaire de consentement à la publicité d'Admob

Discussion dans 'Windev Mobile' créé par clarionero, Jan 6, 2019.

  1. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour, est-ce que quelqu'un à WM a mis en œuvre le formulaire de consentement afin de faire de la publicité sur une demande ? J'espérais que WM24 aurait déjà cette fonctionnalité implémentée, mais pour autant que je puisse voir, le contrôle publicitaire de WM24 n'a pas changé depuis WM23.

    J'ai essayé d'implémenter le formulaire de consentement à partir du code Google mais jusqu'à présent, je n'ai pas réussi à le faire fonctionner à partir de WM.

    Salutations

    Ruben

    PS :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    #1 clarionero, Jan 6, 2019
    Dernière édition par un modérateur: Jan 6, 2019
    Tags:
  2. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Salut @Ruben ,
    Le lien que tu propose ne fournit pas directement le code.
    De plus Google propose son système pour iOS , Android et Windows Aps.
    Peut tu mettre directement le code que tu souhaite ou un lien direct vers ce code.
    Merci.
     
  3. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Salut,

    Le code Google que j'ai testé est basé sur

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Salutations

    Ruben

    Edit: Mon code actuel, basé sur ce lien est :

    import java.net.URL;
    import java.net.MalformedURLException;
    import com.google.ads.consent.*;

    public static void VerificarConsentimientoAdmobGPRD_Google()
    {

    ConsentInformation consentInformation = ConsentInformation.getInstance(getApplicationContext());
    String[] publisherIds = {"pub-xxxxxxxxxxxxxxxxxxxxxxxxx"};
    consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
    @Override
    public void onConsentInfoUpdated(ConsentStatus consentStatus) {
    // User's consent status successfully updated.
    if (ConsentInformation.getInstance(getApplicationContext()).isRequestLocationInEeaOrUnknown() == true){
    // UE
    if (consentStatus == ConsentStatus.PERSONALIZED || consentStatus == ConsentStatus.NON_PERSONALIZED){
    // Usuario ya dio su consentimiento
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Usuario ya dio su consentimiento");
    }
    else {
    // Debe obtenerse el consentimiento
    URL privacyUrl = null;
    try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ");
    } catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
    }

    form = new ConsentForm.Builder(getApplicationContext(), privacyUrl)
    .withListener(new ConsentFormListener() {
    @Override
    public void onConsentFormLoaded() {
    // Consent form loaded successfully.
    //callWLProcedure("COL_GlobalProcedures.Msg","Consentimiento","Form Cargado");
    showConsentForm();
    }

    @Override
    public void onConsentFormOpened() {
    // Consent form was displayed.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Mostrado");
    }

    @Override
    public void onConsentFormClosed(
    ConsentStatus consentStatus, Boolean userPrefersAdFree) {
    // Consent form was closed.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Cerrado");
    }

    @Override
    public void onConsentFormError(String errorDescription) {
    // Consent form error.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Error:" + errorDescription);
    }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

    form.load();




    }
    }
    else {
    // no UE
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","No UE");
    }
    }

    @Override
    public void onFailedToUpdateConsentInfo(String errorDescription) {
    // User's consent status failed to update.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Fallo actualizando el estado");
    }
    });


    }

    static ConsentForm form;
    private static void showConsentForm(){
    if (form == null) {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Consent form is null");
    }
    if (form != null) {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Showing consent form");
    form.show();
    } else {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Not Showing consent form");
    }
    }

    Tout fonctionne bien, mais lorsque vous appelez la procédure pour montrer la forme, l'application se ferme.
     
    #3 clarionero, Jan 6, 2019
    Dernière édition par un modérateur: Jan 6, 2019
    amine1978 apprécie ceci.
  4. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Malheureusement, je n'y arrive pas non plus le lien propose aussi un formulaire sous forme de page web.
    Mais je n'y arrive pas.
    Si quelqu'un d'autre peut aider, il est le bienvenue.
    Bien sur il faut plutôt mettre en variable publisherIds et le mettre au début du projet en dur.
    Bien sur tu appel COL_GlobalProceduresGPRD_Google.Msg
    si tu peut mettre le code de ce msg , ce serait un plus.
     
  5. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour.

    COL_GlobalProceduresGPRD_Google.Msg est seulement pour afficher un message montrant l'état du processus. Il contient simplement un Info() avec les textes qui sont envoyés.

    Ce code fonctionne bien jusqu'au moment où le formulaire doit être affiché (showConsentForm () ; ). A ce moment, l'application se ferme.

    Personne n'a jamais publié d'application avec des annonces Google Play ?

    J'ai contacté le service PcSoft pour leur poser des questions à ce sujet. Ils ne savaient rien à ce sujet. Ils ne savaient pas qu'un tel besoin existait ou qu'il devrait déjà être mis en œuvre par le GPRD. Ils m'ont assuré qu'ils donneront bientôt une solution à ce problème.

    Salutations

    Rubén
     
  6. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Le problème avec Pcsoft qu'il ne donneront la réponse que pour la version 24.
     
  7. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour, le code que je vais joindre affiche déjà correctement le formulaire de consentement Google. Le code doit être ajouté afin d'informer Google des options choisies par l'utilisateur. De plus, les contrôles de la publicité doivent tenir compte de ces options au moment de demander de la publicité.



    import java.net.URL;
    import java.net.MalformedURLException;
    import com.google.ads.consent.*;



    public static void VerificarConsentimientoAdmobGPRD_Google()
    {

    ConsentInformation consentInformation = ConsentInformation.getInstance(getCurrentActivity());

    if (bDebug==true){
    ConsentInformation.getInstance(getCurrentActivity()).addTestDevice("2E34AF58B256EC62CA580546E1F1F7E0");
    // Geography appears as in EEA for test devices.
    ConsentInformation.getInstance(getCurrentActivity()).setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
    // Geography appears as not in EEA for debug devices.
    //ConsentInformation.getInstance(getCurrentActivity()).setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_NOT_EEA);
    }

    String[] publisherIds = {"pub-xxxxxxxxxxxx"};
    consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
    @Override
    public void onConsentInfoUpdated(ConsentStatus consentStatus) {
    // User's consent status successfully updated.
    if (ConsentInformation.getInstance(getCurrentActivity()).isRequestLocationInEeaOrUnknown() == true){
    // UE
    if (consentStatus == ConsentStatus.PERSONALIZED || consentStatus == ConsentStatus.NON_PERSONALIZED){
    // Usuario ya dio su consentimiento
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Usuario ya dio su consentimiento");
    }
    else {
    // Debe obtenerse el consentimiento
    URL privacyUrl = null;
    try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ");
    } catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
    }

    form = new ConsentForm.Builder(getCurrentActivity(), privacyUrl)
    .withListener(new ConsentFormListener() {
    @Override
    public void onConsentFormLoaded() {
    // Consent form loaded successfully.
    //callWLProcedure("COL_GlobalProcedures.Msg","Consentimiento","Form Cargado");
    showConsentForm();
    }

    @Override
    public void onConsentFormOpened() {
    // Consent form was displayed.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Mostrado");
    }

    @Override
    public void onConsentFormClosed(
    ConsentStatus consentStatus, Boolean userPrefersAdFree) {
    // Consent form was closed.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Cerrado");
    }

    @Override
    public void onConsentFormError(String errorDescription) {
    // Consent form error.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Form Error:" + errorDescription);
    }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

    form.load();

    }
    }
    else {
    // no UE
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","No UE");
    }
    }

    @Override
    public void onFailedToUpdateConsentInfo(String errorDescription) {
    // User's consent status failed to update.
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento","Fallo actualizando el estado");
    }
    });


    }

    static ConsentForm form;
    static boolean bDebug = true;

    private static void showConsentForm(){
    if (form == null) {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Consent form is null");
    }
    if (form != null) {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Showing consent form");
    form.show();
    } else {
    callWLProcedure("COL_GlobalProceduresGPRD_Google.Msg","Consentimiento", "Not Showing consent form");
    }
    }

    Resources:

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Salut


    Rubén
     
    rober et popoy aiment ça.
  8. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour, j'ai finalement réussi à mettre en œuvre le système de publicité basé sur le nouveau consentement, mais seulement pour Android. Pour cela, j'ai dû implémenter aussi les annonces de ma part, parce que le contrôle qui vient avec WM ne prend pas en compte le choix de l'utilisateur sur le type de publicité qui peut être montré. J'espère que PCSoft apportera bientôt les modifications nécessaires à ses contrôles.
     
  9. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    peut tu nous faire un tutoriel avec toute la procédure pour Android, SVP.
    Cela servira sûrement a la communauté.
    Merci d'avance.
     
  10. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour. Je viens de publier un exemple sur le site de PCsoft.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Actuellement, WM ne soutient pas le nouveau GPRD européen pour l'utilisation de publicités dans les applications. J'ai indiqué à PCSoft le problème existant, et je continue d'attendre leur réponse, alors à la fin, je l'ai mis en œuvre moi-même.

    WM affiche des annonces sans tenir compte des nouvelles normes de confidentialité exigées par l'Union européenne. Google a mis à la disposition des développeurs un modèle de formulaire pour demander le consentement de l'utilisateur pour montrer la publicité, et cet exemple de code est un emballage sur le formulaire Google.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Le code montre à l'utilisateur le formulaire pour choisir le type d'information. Les informations sélectionnées génèrent un type de demande de publicité en fonction de ce que l'utilisateur a choisi. Le contrôle publicitaire joint est inclus dans une fenêtre interne pour faciliter son inclusion dans les fenêtres.

    La demande d'information à l'utilisateur n'est faite que si vous n'avez pas préalablement indiqué le type de publicité que vous souhaitez recevoir. Il montre également la possibilité pour l'utilisateur de modifier le choix du type de publicité que vous souhaitez recevoir.

    Avant de le voir en fonctionnement doit mettre à jour le code Java pour contenir votre code publicitaire Admob (pub-xxxxxxxx) et l'Url de votre site Web qui décrit la politique de confidentialité de l'application.

    Vous pouvez activer les options de débogage dans le code Java pour voir quelles sont les étapes du processus d'obtention du consentement.

    Dans le dossier GPRD sont disponibles les traductions du formulaire Google dans plusieurs langues européennes. Vous devez copier le fichier HTML de la langue désirée comme consentform.html. Plus d'informations sur

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    L'exemple que j'ai fait dans WM23 mais fonctionne aussi sans problème dans WM24.

    Rubén
     
  11. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour. Google commence à ne plus accepter les applications qui utilisent la version d'exemple pour la demande de consentement, la considérant comme dépassée. Bientôt (quand j'aurai un peu de temps libre) je présenterai ici une nouvelle version qui utilise les nouveaux formulaires pour demander le consentement des utilisateurs.

    Rubén
     
    popoy apprécie ceci.
  12. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Cela n'a pas totalement de rapport, mais presque
    Voir

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  13. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour. Non. Le problème se situe au niveau des bibliothèques utilisées pour l'ancien consentement. Ils sont désormais obsolètes et Google empêche le téléchargement des applications qui les utilisent encore. Les nouvelles bibliothèques sont basées sur la "User Messaging Platform". J'ai déjà migré mon application et je vais faire une version d'exemple. C'est beaucoup plus complexe qu'avec la bibliothèque précédente et vous devez utiliser une nouvelle version de Gradle compatible avec celle utilisée par WM.

    Rubén
     
  14. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Bonjour, je viens de publier l'exemple sur le site de PCSoft. Toutes les modifications nécessaires y sont expliquées.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!





    Description

    Bonjour. Il y a plusieurs développements importants de la part de Google dans la présentation de la publicité aux utilisateurs d'applications.

    a) Google a publié une nouvelle version de ses bibliothèques pour l'affichage des annonces dans les applications et a abandonné la précédente, empêchant son utilisation dans les nouvelles versions téléchargées sur Google Play.

    com.google.android.gms play-services-ads 20.1.0

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Dans l'exemple précédent de l'implémentation des publicités dans WM, la version 19.x.x de ces bibliothèques a été utilisée. La nouvelle version est 20.x.x.x et nécessite de multiples modifications dans les fonctions utilisées. Cette nouvelle version ne fonctionne pas avec le Gradle fourni par défaut avec WM26 (com.android.tools.build:gradle:3.5.0) car il y a des modifications importantes dans les champs qui peuvent apparaître dans le manifeste de l'application, et lorsqu'on essaie d'utiliser cette bibliothèque, une erreur est renvoyée.

    La solution est d'utiliser une version mise à jour par Google à cet effet et compatible avec cette version, la com.android.tools.build:gradle:3.5.4, pour laquelle il suffit de modifier le fichier WDJava.build dans le dossier Programmes et de renommer la version à utiliser. D'après mes tests, tout fonctionnera parfaitement avec WM26 après ce changement.

    b) De plus, Google a introduit une nouvelle méthode pour afficher le formulaire de consentement à l'utilisateur. L'ancienne version utilisait les bibliothèques

    com.google.android.ads.consent consent-library 1.0.8

    Ces bibliothèques remplissaient en principe leur fonction, mais il était compliqué d'utiliser plusieurs langues dans les messages adressés à l'utilisateur, si bien qu'au final, beaucoup d'entre nous ont opté pour leur propre formulaire, avec moins d'options que celles fournies par Google.

    La nouvelle méthode utilise les bibliothèques

    com.google.android.ump user-messaging-platform 1.0.0

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    et permet de choisir les langues dans lesquelles on veut montrer les mêmes, ainsi que de consulter qui sont les éditeurs des annonces pour que l'utilisateur puisse sélectionner celles qui seront autorisées, et celles qui ne le seront pas. La bibliothèque est compatible avec IAB Europe (iab.europe)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et gère toutes les informations que cette entité exige pour un consentement approprié de l'utilisateur. Une fois que l'utilisateur gère son consentement dans l'appareil, ces informations sont stockées dans l'appareil pour une utilisation ultérieure par les applications.


    Paramètres du formulaire de consentement

    Les formulaires de consentement de cette version peuvent être définis en plusieurs langues si nécessaire et leur apparence et leurs couleurs peuvent être personnalisées. Pour cela, nous devons accéder dans AdMob à l'option "Choix de financement" dans l'option de menu "Confidentialité et messages". Vous pouvez définir plusieurs combinaisons et les utiliser lorsque cela est nécessaire en fonction de vos besoins. Les options configurées seront celles qui seront montrées aux utilisateurs pour leur demander leur consentement.


    Rubén
     
    popoy et WX1331 aiment ça.
  15. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Salut Ruben,
    Pense tu qu'il serait possible de faire fonctionner ta solution avec wm 25 083h?
    Merci
     
  16. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Salut.

    Les dépendances des nouvelles bibliothèques Google ne nécessitent que de changer la version de Gradle et je pense que dans WM25 et WM26 les deux utilisent la même chose donc le changement à faire dans WM est le même, il suffit de changer la version com.android.tools.build:gradle:3.5.0 par com.android.tools.build:gradle:3.5.4.

    Donne-moi du temps et j'essaierai de le mettre dans WM25.

    Rubén
     
    #16 clarionero, Juin 18, 2021
    Dernière édition: Juin 18, 2021
  17. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Ok, il est maintenant disponible pour WM25. Voir ci-dessous les restrictions de cette version.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    La fonction qui est utilisée pour calculer la taille de l'écran puis la taille de la bannière n'est disponible qu'à partir du SDK 30.

    La version de l'exemple pour WM25 ne permet pas l'utilisation de bannières adaptatives car son SDK maximum est de 29 et les bannières adaptatives ne sont disponibles qu'à partir de 30. Cette version ne permet que les bannières normales. Utilisez la version de

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    avec WM26.

    Ruben
     
    popoy apprécie ceci.
  18. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,533
    Merci Ruben
    Il est toujours possible de modifier le manifeste manuellement pour avoir le bon sdk .
    Donc je pense qu'il sera possible d'utiliser les bannières adaptatives en wm 25.
     
  19. clarionero

    clarionero Member

    Inscrit:
    Juin 5, 2018
    Messages:
    35
    J'aime reçus:
    32
    Salut. Ce n'est pas à propos du manifeste. Il s'agit du SDK que l'IDE utilise. J'ai déjà essayé de le modifier ici, mais WM25 n'est pas compatible avec le SDK 30. Il est peut-être possible de l'utiliser, mais le code qui ne fonctionne pas est le suivant

    Display display = getCurrentActivity().getDisplay() ;

    La fonction getDisplay n'existe que depuis le SDK 30.

    Rubén
     
  20. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Bon courage
     

Partager cette page

Chargement...