Сначала я подключил Admob к своему проекту Unity, следуя инструкциям https://developers.google.com/admob/unity/rewarded-video,, и все заработало.
Это также сработало после загрузки из гугл плей. Мои друзья это проверили. Были показаны видео с вознаграждением за тестирование, а также видео с реальным вознаграждением.
Тогда я решил поэкспериментировать с рекламой и добавить Interstitials при перезапуске уровня, следуя https://developers.google.com/admob/unity/interstitial
А потом начались проблемы ...
Он работал со всеми тестовыми объявлениями, все было хорошо
Тогда я попробовал это с реальной рекламой, после установки apk прямо с моего устройства - снова работает. Я сделал то же самое на другом телефоне члена семьи.
Все отлично. С обоими тестовыми и реальными объявлениями на обоих телефонах.
Затем я загрузил приложение в Google Play как новую версию и попробовал, вот что произошло:
На моем телефоне - приложение работает, а реклама - нет. Теперь ни один из них, вознагражденные или промежуточные.
На телефоне члена семьи - сразу после запуска приложение вылетает (только то, что с play market)
На телефоне друга - тоже самое, сбой запуска при загрузке с плей маркета.
Под падением я подразумеваю - черный экран на долю секунды, ничего больше, даже экран единства, на котором написано «Сделано в Unity»
Я пытался загрузить комплект приложений в Google Play вместо apk - ничего не меняется.
Я пытался изменить свой код, в основном, когда он выполняется, когда он инициализируется, когда вызывается и т. Д. - ничего не помогло.
Затем я попробовал LogCat на устройстве, в котором произошел сбой.
Ничего со словом «роковой» или что-то в этом роде, но я думаю, что здесь сбой:
06-05 23:20:23.969 18308 18334 E CRASH : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 000000ba
06-05 23:20:23.969 18308 18334 E CRASH : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-05 23:20:23.969 18308 18334 E CRASH : Build type 'Release', Scripting Backend 'il2cpp', CPU 'armeabi-v7a'
06-05 23:20:23.969 18308 18334 E CRASH : Build fingerprint: 'motorola/athene/athene:7.0/NPJS25.93-14-18/3:user/release-keys'
06-05 23:20:23.969 18308 18334 E CRASH : Revision: 'p2a0'
И это все, никакой другой реальной информации об этом.
О похожих вопросах - я видел, что у людей много проблем с одной и той же вещью, включая их app_id в AndroidManifest.xml - но это не мой случай, это там.
Мой объект, который содержит вознагражденную рекламу, создается в меню и не разрушается между уровнями.
Вот некоторый код из этого:
void Awake()
{
DontDestroyOnLoad(this.gameObject);
}
void Start()
{
string appId = "my-app-id here";
MobileAds.Initialize(appId);
is_rewarded = false;
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
this.RequestRewardBasedVideo();
}
public void RequestRewardBasedVideo()
{
string adUnitId = "my-rewarded-unit-id"
AdRequest request = new AdRequest.Builder().Build();
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
....
Мой промежуточный объект существует только на главном уровне. И уничтожается при переходе между уровнями.
Вот мой код для вставок:
public class InterAds : MonoBehaviour
{
public InterstitialAd interstitial;
void Start()
{
this.RequestInterstitial();
}
public void RequestInterstitial()
{
string adUnitId = "my-unit-id here";
if (this.interstitial != null)
{
this.interstitial.Destroy();
}
// Initialize an InterstitialAd.
interstitial = new InterstitialAd(adUnitId);
this.interstitial.OnAdClosed += HandleOnAdClosed;
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the interstitial with the request.
this.interstitial.LoadAd(request);
}
public void HandleOnAdClosed(object sender, EventArgs args)
{
GameObject.Find("GameController").GetComponent<AudioSource>().enabled = true;
this.RequestInterstitial();
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
.........
Буду признателен за любую помощь. Заранее спасибо.
Upd: Теперь это работает, и я вижу рекламу на моем устройстве. Вероятно, для их запуска понадобилось время.
Работает на устройстве моего друга.
Тем не менее, не работает на двух других устройствах.