Unity "AdMob" hatası

AdvenAlp

Picopat
Katılım
6 Nisan 2023
Mesajlar
8
Daha fazla  
Cinsiyet
Erkek
Kod:
Assets\Admobb.cs(64,9): error CS0176: Member 'InterstitialAd.Load(string, AdRequest, Action<InterstitialAd, LoadAdError>)' cannot be accessed with an instance reference; qualify it with a type name instead

Hatasını neden veriyor?
 
Son düzenleyen: Moderatör:
Kod dosyasını atma şansınız varmıdır acaba?
Logcat ile hataya baktım şöyle bir şeyler çıktı
Kod:
2023.04.07 15:42:00.462 6001 6028 Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback
2023.04.07 15:42:00.462 6001 6028 Error Unity java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback
2023.04.07 15:42:00.462 6001 6028 Error Unity     at java.lang.Class.classForName(Native Method)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at java.lang.Class.forName(Class.java:453)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at com.unity3d.player.UnityPlayerForActivityOrService.nativeRender(Native Method)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at com.unity3d.player.L.handleMessage(Unknown Source:140)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at android.os.Handler.dispatchMessage(Handler.java:102)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at android.os.Looper.loop(Looper.java:193)
2023.04.07 15:42:00.462 6001 6028 Error Unity     at com.unity3d.player.O.run(Unknown Source:24)
2023.04.07 15:42:00.462 6001 6028 Error Unity Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.unity.ads.UnityInterstitialAdCallback" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/lib/arm, /data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/base.a
2023.04.07 15:42:00.514 6001 6028 Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback
2023.04.07 15:42:00.514 6001 6028 Error Unity java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback
2023.04.07 15:42:00.514 6001 6028 Error Unity     at java.lang.Class.classForName(Native Method)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at java.lang.Class.forName(Class.java:453)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at com.unity3d.player.UnityPlayerForActivityOrService.nativeRender(Native Method)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at com.unity3d.player.L.handleMessage(Unknown Source:140)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at android.os.Handler.dispatchMessage(Handler.java:102)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at android.os.Looper.loop(Looper.java:193)
2023.04.07 15:42:00.514 6001 6028 Error Unity     at com.unity3d.player.O.run(Unknown Source:24)
2023.04.07 15:42:00.514 6001 6028 Error Unity Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.unity.ads.UnityInterstitialAdCallback" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/lib/arm, /data/app/com.DefaultCompany.Oyununity-1yVUILaOnOLnUjakGHA90Q==/base.a

Benim Admob kodum ise şöyle:

C#:
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using System;
using System.Collections.Generic;
using System.Collections;
using UnityEngine.SceneManagement;

public class Admobb : MonoBehaviour
{   

    public GameObject yukleniyor;
    public GameObject yukleniyor2;
    public string _adUnitId ="ca-app-pub-3940256099942544/1033173712";
    private InterstitialAd reklamObjesi;
 
    void Start()
    {
        MobileAds.Initialize( reklamDurumu => { } );
        YeniReklamAl( null, null );
    }
    
public void ShowAd()
{
    if (reklamObjesi != null && reklamObjesi.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        yukleniyor.SetActive(false);
        reklamObjesi.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}
 
 
    public void YeniReklamAl( object sender, EventArgs args )
    {
        if (PlayerPrefs.GetString("durum") == "menu")
        {
            SceneManager.LoadScene("Menu");
            PlayerPrefs.SetString("durum","bos");
            Time.timeScale = 1f;
        }
        if (PlayerPrefs.GetString("durum") == "oyun3")
        {
            SceneManager.LoadScene("oyun3");
            PlayerPrefs.SetString("durum","bos");
            Time.timeScale = 1f;
        }
        if (PlayerPrefs.GetString("durum") == "oyun2")
        {
            SceneManager.LoadScene("oyun2");
            PlayerPrefs.SetString("durum","bos");
            Time.timeScale = 1f;
        }
        if (PlayerPrefs.GetString("durum") == "oyun1")
        {
            SceneManager.LoadScene("Oyun");
            PlayerPrefs.SetString("durum","bos");
            Time.timeScale = 1f;
        }
        if( reklamObjesi != null )
            reklamObjesi.Destroy();
        AdRequest request = new AdRequest.Builder().Build();
        InterstitialAd.Load(_adUnitId,request, (InterstitialAd ad, LoadAdError loadad) =>
        {
            if (loadad != null)
            {
                Debug.LogError("interstitial ad failed to load an ad " +
                                 "with error : " + loadad);
                return;
            }
            else
            if (ad == null)
            {
                return;
            }
            Debug.Log("Interstitial ad loaded");
            reklamObjesi = ad;
        });
        reklamObjesi.OnAdFullScreenContentClosed += () =>
        {
            if (PlayerPrefs.GetString("durum") == "menu")
            {
                SceneManager.LoadScene("Menu");
                PlayerPrefs.SetString("durum","bos");
                Time.timeScale = 1f;
            }
            if (PlayerPrefs.GetString("durum") == "oyun3")
            {
                SceneManager.LoadScene("oyun3");
                PlayerPrefs.SetString("durum","bos");
                Time.timeScale = 1f;
            }
            if (PlayerPrefs.GetString("durum") == "oyun2")
            {
                SceneManager.LoadScene("oyun2");
                PlayerPrefs.SetString("durum","bos");
                Time.timeScale = 1f;
            }
            if (PlayerPrefs.GetString("durum") == "oyun1")
            {
                SceneManager.LoadScene("Oyun");
                PlayerPrefs.SetString("durum","bos");
                Time.timeScale = 1f;
            }   
        };            // Kullanıcı reklamı kapattıktan sonra çağrılır
    reklamObjesi.OnAdImpressionRecorded += () =>
    {
        ReklamIstegiOlustur();
    };
    }
    
private AdRequest ReklamIstegiOlustur()
    {
        return new AdRequest.Builder().Build();
    }
 
    void OnDestroy()
    {
        if( reklamObjesi != null )
            reklamObjesi.Destroy();
    }
    
    public void Reklam()
    {
        yukleniyor.SetActive(true);
        yukleniyor2.SetActive(false);
        ShowAd();
    }
}
 
Bu hata, InterstitialAd.Load methodunun bir örnek başvurusuyla erişilemeyeceğini, bunun yerine bir tür adıyla nitelendirilmesi gerektiğini belirtir. Bu hatanın nedeni, InterstitialAd.Load metodunun bir sınıf yöntemi olduğudur ve bir örnek üzerinden erişilemez. Bunun yerine, sınıfın kendisi üzerinden erişilmesi gerekir.

Örneğin, doğru kullanım şu şekilde olacaktır:
Kod:
InterstitialAd.Load(adUnitId, adRequest, (ad, error) => {
    // Do something with the loaded interstitial ad
});
Burada InterstitialAd sınıfı, Load yöntemine örnek bir başvuru yapmak yerine doğrudan kullanılır. Bu, InterstitialAd.Load metodunun doğru şekilde çağrılmasına neden olacaktır.
 

Geri
Yukarı