Admob не показывает рекламу (единство). Компилируется без ошибок. Игра в редакторе работает плавно. Сбои при запуске на телефоне - PullRequest
0 голосов
/ 07 мая 2018

Редактировать: После 12 часов без перерыва полного разочарования я подумал, что должен создать новый проект и просто переместить все туда. И это сработало! Миграция заняла всего около 10 минут!

Я новичок в Unity, я полностью закончил свою игру, но реализация рекламы мешала мне в течение последних 48 часов.

Что бы я ни делал, я просто не могу обойти это. Я искал везде, удалил свои плагины и повторно импортировал их. Рассматривал каждый сценарий, который мешал показу рекламы / сбой игры, и соответственно настраивал мою игру, но безуспешно.

Сначала мое приложение нормально работало на моем телефоне, но недавно (после некоторых изменений кода) оно просто зависало при запуске. Ниже приведены только 2 сценария, которые привели к сбою моего приложения, а также 2 сценария, ссылающиеся на рекламу.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;

public class adsScript : MonoBehaviour 
{
    private RewardBasedVideoAd rewardBasedVideo;

    public void Start()
    {
        DontDestroyOnLoad(gameObject);
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        // Called when an ad request has successfully loaded.
        rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
        // Called when an ad request failed to load.
        rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
        // Called when an ad is shown.
        rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
        // Called when the ad starts to play.
        rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
        // Called when the user should be rewarded for watching a video.
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        // Called when the ad is closed.
        rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
        // Called when the ad click caused the user to leave the application.
        rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;

        string appId = "ca-app-pub-2080245637481049~6344779320";
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(appId);

        // Get singleton reward based video ad reference.

        this.RequestRewardBasedVideo();
    }

    private void RequestRewardBasedVideo()
    {
        string adUnitId = "ca-app-pub-2080245637481049/3426756348";

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }

    #region RewardBasedVideo callback handlers

    public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("video loaded");
    }

    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardBasedVideoFailedToLoad event received with message: " + args.Message);
    }

    public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
    }

    public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
    }

    public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
    }

    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        PlayerPrefs.SetInt("AdLife", 2);
        MonoBehaviour.print(
            "HandleRewardBasedVideoRewarded event received for " + amount.ToString() + " " + type);
    }

    public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
    }

    #endregion

}

и сценарий (из другой сцены), где я получаю доступ к рекламе

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;

public class openAdVideo: MonoBehaviour 
{

    public void PlayAdVideo()
    {
        if (RewardBasedVideoAd.Instance.IsLoaded())
        {
            try
            {
                RewardBasedVideoAd.Instance.Show();
            }
            catch(Exception e)
            {
                Debug.Log(e.Message);
            }
        }
        else
        {
        }
    }
}

1 Ответ

0 голосов
/ 29 марта 2019

Переход на новый проект решил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...