有没有办法在不将应用上传到 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 管理中心 - 应用签名无效

将应用程序包上传到 Play 管理中心时出现导入错误

Google Play 管理中心阻止上传或推广符合敏感权限政策的新应用版本

如何在 Google Play 管理中心上传特定城市的应用程序?

Google Play 管理中心中的托管发布

在 Google Play 管理中心找不到崩溃报告