Skocz do zawartości
DreaMPL

Jak zaimportować pakiet Mobile ads SDK?

    Rekomendowane odpowiedzi

    Witam.

    Chciałbym zaimportować owy pakiet. Na stronie https://developers.google.com/admob/android/quick-start  jest krótki poradnik, ale mam problem z plikiem build.gradle. Gdzie mogę go znaleźć, muszę coś dodatkowo pobierać? 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    @DreaMPL jeżeli programujesz w Android Studio to po lewej stronie masz listę plików. Znajduje sie tam plik gradle i do sekcje dependencies wklejasz odpowiednią wartośc tak jak w linku masz podane. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    19 minut temu, mmaciejow napisał:

    @DreaMPL jeżeli programujesz w Android Studio to po lewej stronie masz listę plików. Znajduje sie tam plik gradle i do sekcje dependencies wklejasz odpowiednią wartośc tak jak w linku masz podane. 

    Tworzę grę w Unity3d

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Wzorowałem się tym poradnikiem: https://developers.google.com/admob/unity/start

    Żadnych błędów nie ma, w momencie kiedy reklama powinna się wyświetlić pisze w konsoli:

    Dummy .ctor

    Dummy CreateInterstitialAd

    Dummy LoadAd

     

    Używam aktualnie testowych reklam, które się nie wyświetlają. Testowałem to z poziomu Unity oraz z mojego telefonu i żadne reklamy się nie pojawiają.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Godzinę temu, Coders Lab napisał:

    @DreaMPL Stworzyłeś sobie AdMob App ID?

    Tak.

     

    Troszkę poszukałem, po testowałem i reklamy testowe działają prawidłowo, lecz normalne reklamy się nie pojawiają. Stworzyłem prosty skrypt:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using GoogleMobileAds.Api;
    
    public class AdSystem : MonoBehaviour
    {
        private InterstitialAd interstitial;
        public GameObject Red, Green;
    
    
        private void Update()
        {
            if (this.interstitial.IsLoaded() == true) {
                Green.SetActive(true);
            }
        }
    
        private void Start()
        {
            string appID = "mój-identyfikator-aplikacji";
            //string appID = "ca-app-pub-3940256099942544~3347511713";
            MobileAds.Initialize(appID);
        }
    
        private AdRequest CreateAdRequest() {
            return new AdRequest.Builder().Build();
            /*return new AdRequest.Builder()
                .AddTestDevice(AdRequest.TestDeviceSimulator)
                .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
                .Build();*/
        }
    
        public void RequestInterstitial() {
    
            string adUnityID = "mój-identyfikator-jednostki-reklamowej-reklama-pelnoekranowa";
            //string adUnityID = "ca-app-pub-3940256099942544/1033173712";
    
            if (this.interstitial != null) {
                this.interstitial.Destroy();
            }
    
            this.interstitial = new InterstitialAd(adUnityID);
    
            this.interstitial.LoadAd(this.CreateAdRequest());
        }
    
        public void ShowInterstitial() {
            if (this.interstitial.IsLoaded())
            {
                Green.SetActive(true);
                this.interstitial.Show();
                Red.SetActive(false);
                Green.SetActive(false);
                RequestInterstitial();
            }
            else {
                Red.SetActive(true);
            }
        }
    }

    To, co jest wzięte w komentarz to kod stosowany do reklam testowych, które prawidłowo działają. Podczas gdy testuje reklamy testowe po wciśnięciu przycisku odpowiadającego za wywołanie funkcji RequestInterstitial() i po odczekaniu kilku sekund interstitial.IsLoaded() = true więc po wciśnięciu przycisku "show ad" pojawia się testowa reklama. Niestety, gdy testuje reklamy normalne i po przeczekaniu nawet paru minut interstitial.IsLoaded() = false co sprawia, że nie mogę zobaczyć reklamy. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeżeli testowe reklamy działają to już jest ok. Trochę trwa zanim te prawdziwe się aktywują. W anglojęzycznych rejonach jest to 24 godziny. W mniejszych regionach czyli np. w polskim może to trwać nawet 48 godzin. Musisz mieć jeszcze uzupełnione w AdMob szczegóły płatności oraz same reklamy muszą być tam aktywne.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    11 godzin temu, Coders Lab napisał:

    Jeżeli testowe reklamy działają to już jest ok. Trochę trwa zanim te prawdziwe się aktywują. W anglojęzycznych rejonach jest to 24 godziny. W mniejszych regionach czyli np. w polskim może to trwać nawet 48 godzin. Musisz mieć jeszcze uzupełnione w AdMob szczegóły płatności oraz same reklamy muszą być tam aktywne.

    Dzięki, obyś miał rację i po tych paru godzinach reklamy zadziałały. Powodem niedziałania mogą być również nieustawione szczegóły płatności.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Troszkę czasu już minęło no i niestety nadal reklamy się nie wyświetlają. Testowe reklamy działają prawidłowo. Szczegóły płatności też mam już uzupełnione.

    Dodatkowo zobaczyłem, że na stronie admob w raportach o aplikacji zaczęły pojawiać się żądania o wyświetlanie reklam.  Może reklamy zaczną pojawiać się, gdy tych żądań będzie więcej, aktualnie jest ich 130. Dodam również, że aplikacja nie jest jeszcze publiczna, nie jest dostępna na google play i wszystkie żądania to są moje żądania. Może jak opublikuje grę, będzie więcej żądań i z różnych urządzeń to może wtedy zaczną pojawiać się reklamy.

     

    Możliwe, że robię też coś źle. Jedyne rzeczy, które zrobiłem to:

    1. Edytowałem plik AndroidManifest.xml, który wygląda teraz następująco:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    This Google Mobile Ads plugin library manifest will get merged with your
    application's manifest, adding the necessary activity and permissions
    required for displaying ads.
    -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.google.unity.ads"
        android:versionName="1.0"
        android:versionCode="1">
      <uses-sdk android:minSdkVersion="14"
          android:targetSdkVersion="19" />
      <application>
        <meta-data
                android:name="com.google.android.gms.ads.APPLICATION_ID"
                android:value="mój-id-aplikacji"/>
      </application>
    </manifest>

    Również w tym pliku jest wspominane o dodaniu odpowiednich uprawnień. Chodzi tutaj tylko o uprawnienia te co są poniżej?

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    2. Stworzyłem prosty skrypt. Jego celem jest właśnie wyświetlanie reklam.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using GoogleMobileAds.Api;
    
    public class AdSystem : MonoBehaviour
    {
        private InterstitialAd interstitial;
        public GameObject Red, Green;
    
    
        private void Update()
        {
            if (this.interstitial.IsLoaded() == true) {
                Green.SetActive(true);
            }
        }
    
        private void Start()
        {
            string appID = "mój-identyfikator-aplikacji";
            //string appID = "ca-app-pub-3940256099942544~3347511713";
            MobileAds.Initialize(appID);
        }
    
        private AdRequest CreateAdRequest() {
            return new AdRequest.Builder().Build();
            /*return new AdRequest.Builder()
                .AddTestDevice(AdRequest.TestDeviceSimulator)
                .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
                .Build();*/
        }
    
        public void RequestInterstitial() {
    
            string adUnityID = "mój-identyfikator-jednostki-reklamowej-reklama-pelnoekranowa";
            //string adUnityID = "ca-app-pub-3940256099942544/1033173712";
    
            if (this.interstitial != null) {
                this.interstitial.Destroy();
            }
    
            this.interstitial = new InterstitialAd(adUnityID);
    
            this.interstitial.LoadAd(this.CreateAdRequest());
        }
    
        public void ShowInterstitial() {
            if (this.interstitial.IsLoaded())
            {
                Green.SetActive(true);
                this.interstitial.Show();
                Red.SetActive(false);
                Green.SetActive(false);
                RequestInterstitial();
            }
            else {
                Red.SetActive(true);
            }
        }
    }

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.