有没有办法在不将应用上传到 Play 管理中心的情况下使用真实的 unitID 测试 adMob 广告?
Posted
技术标签:
【中文标题】有没有办法在不将应用上传到 Play 管理中心的情况下使用真实的 unitID 测试 adMob 广告?【英文标题】:Is there a way to test adMob ads with real unitIDs without uploading the app to Play Console? 【发布时间】:2021-08-29 20:32:29 【问题描述】:我的应用中有多种类型的广告(横幅、过渡、奖励视频等)。我使用 android Studio 开发了我的应用。
按照 Google 的说法,我使用测试 ID 测试所有广告。
在确信广告可以正常工作后,我已将测试 ID 更改为真实 ID。
当我在以物理方式连接到我的电脑的手机上运行应用程序时,没有显示广告。一些文件说“除非从 Play 商店源下载应用程序,否则真正的 unitID 永远不会起作用”。这意味着我每次都必须将我的应用上传到 Play 管理中心来测试真实 ID。
但是,将应用加载到 Play 管理中心进行测试不适用,因为;
-
复活需要很长时间(审核期)
如果我什至接受等待审核期,当应用程序启动时,用户可能会下载有问题的应用程序,因为它是用于测试目的而不是可靠版本。
您可能会说,如果应用程序使用测试 ID,那么它将使用真实 ID,但事实并非如此。
因为我的应用与测试 ID 配合得很好。当我切换到真实 ID 时,横幅仍然有效,但奖励视频广告却没有。
我的 admob 帐户和所有 adUnits 似乎都可以。这不是我的 adMob 帐户的问题。
所以问题是,有没有办法使用 admob 的真实 unitID 测试我的应用,而无需将应用上传到 Play 管理中心并从 Play 商店下载?
谢谢,
【问题讨论】:
【参考方案1】:是的,您可以测试您的 Live Id。
将此代码块放入您的启动活动(第一个活动)中,运行您的应用程序,您将在日志中得到类似的内容,test_id 在您的代码中替换它...
I/Ads:使用 RequestConfiguration.Builder.setTestDeviceIds(Arrays.asList("test_id"))
List<String> testDeviceIds = Arrays.asList("test_id");
RequestConfiguration configuration =
new RequestConfiguration.Builder().setTestDeviceIds(testDeviceIds).build();
MobileAds.setRequestConfiguration(configuration);
参考: https://developers.google.com/admob/android/test-ads
【讨论】:
感谢您的回复。我会试试你的代码。另一方面,我的广告使用测试 ID。所以这意味着我的编码没有错误。当我切换到实时 ID 时,横幅会继续工作,但 Rewareded 插页式广告不会。我的 admob 不是新帐户。所有广告单元都处于“有效”状态。 Admob 帐户“已批准”。那里似乎一切正常。可能是什么原因?【参考方案2】:对于 Rewareded 插页式广告,请尝试以下代码:
让你的班级...实现 OnUserEarnedRewardListener。 如果出现任何问题,您将在 onAdFailedToLoad 中收到错误消息,使用 loadAdError.getMessage();
private RewardedInterstitialAd rewardedInterstitialAd;
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem)
Log.i(TAG, "onUserEarnedReward");
// TODO: Reward the user!
public void loadRewardedAd()
// Use the test ad unit ID to load an ad.
RewardedInterstitialAd.load(MainActivity.this, getString(R.string.rewarded_interstitial_id),
new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback()
@Override
public void onAdLoaded(RewardedInterstitialAd ad)
rewardedInterstitialAd = ad;
rewardedInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback()
/** Called when the ad failed to show full screen content. */
@Override
public void onAdFailedToShowFullScreenContent(AdError adError)
Log.i(TAG, "onAdFailedToShowFullScreenContent");
/** Called when ad showed the full screen content. */
@Override
public void onAdShowedFullScreenContent()
Log.i(TAG, "onAdShowedFullScreenContent");
/** Called when full screen content is dismissed. */
@Override
public void onAdDismissedFullScreenContent()
Log.i(TAG, "onAdDismissedFullScreenContent");
);
@Override
public void onAdFailedToLoad(LoadAdError loadAdError)
Log.e(TAG, "onAdFailedToLoad");
);
【讨论】:
非常感谢您的帮助,Rahul。我已将我的设备作为测试设备添加到 admob 并使用了您的上述代码。有效。现在,插页式广告出现在我的测试设备上。但我现在有另一个问题。显示的广告视频过长,可能 30-40 分钟或更长时间。我期待 10-20 秒的视频。有没有我错过的设置?顺便说一句,我点击左侧的“thsi was有用”图标给你的帖子+1分,但它没有接受我的尝试,因为我是这个平台的新手并且没有足够的声誉。 还有一点我忘了说。视频上没有关闭 (x) 选项。所以我不能关闭它。 测试广告是随机的,有时会显示较长的视频,有时会显示较短的视频。并且关闭视频按钮将在一段时间后可见,具体取决于视频。 多年玩游戏时,我看到每个级别之间的视频都很短(最长20-30秒)。我从来没有遇到过几分钟长的视频。那是不同类型的视频广告吗?我想知道我的工作方式不对吗?因为没有人在完成一个级别后等待 10 分钟才能进入下一个级别,对吧? 实时 Admob 奖励广告的时长限制为 60 秒。以上是关于有没有办法在不将应用上传到 Play 管理中心的情况下使用真实的 unitID 测试 adMob 广告?的主要内容,如果未能解决你的问题,请参考以下文章
Unity 无法发布到 Play 管理中心 - 应用签名无效
Google Play 管理中心阻止上传或推广符合敏感权限政策的新应用版本