【发布时间】:2019-06-06 08:51:31
【问题描述】:
首先,我按照指南 https://developers.google.com/admob/unity/rewarded-video 将 Admob 与我的 Unity 项目连接起来,一切正常。 从 Google play 下载后也可以使用。我的朋友测试过。展示了测试奖励视频,以及真实的奖励视频。
然后我决定尝试广告,并在关卡重启时添加插页式广告,遵循https://developers.google.com/admob/unity/interstitial
然后问题就开始了……
它确实适用于所有测试广告,一切正常
然后,在直接从我的设备安装 apk 后,我用真实的广告尝试了它 - 再次工作。我在家人的其他电话上也做过同样的事情。
一切顺利。在两部手机上同时测试广告和真实广告。
然后我将一个应用程序作为新版本上传到 Google Play,并试了一下,结果如下:
在我的手机上 - 应用程序有效,但广告无效。现在它们都不是,奖励或插页式广告。
在家庭成员的手机上 - 应用程序在启动时立即崩溃(只是来自游戏市场的那个)
在朋友的手机上 - 同样的事情,从游戏市场下载时启动崩溃。
我的意思是崩溃 - 瞬间黑屏,没有别的,甚至没有显示“Made in Unity”的统一屏幕
我尝试将 app bundle 上传到 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);
}
.........
我将不胜感激。提前致谢。
更新:现在可以了,我在我的设备上看到了广告。可能需要时间来启动它们。 在我朋友的设备上工作。 但仍然无法在其他两个设备上运行。
【问题讨论】:
标签: android unity3d google-play admob