第一个月
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
MobileAds.initialize(this) {}
MobileAds.setRequestConfiguration(
RequestConfiguration.Builder()
.setTestDeviceIds(listOf("ABCDEF012345"))
.build()
)
val adRequest = AdRequest.Builder().build()
Log.d("Activity", "Is Test Device? : ${adRequest.isTestDevice(this)}")
adView.loadAd(adRequest)
adView.adListener = object : AdListener() {
override fun onAdLoaded() {
super.onAdLoaded()
Log.d("Activity", "@@ onAdLoaded()")
}
override fun onAdFailedToLoad(err: LoadAdError?) {
super.onAdFailedToLoad(err)
Log.d("Activity", "@@ onAdFailedToLoad()\n$err")
}
override fun onAdOpened() {
super.onAdOpened()
Log.d("Activity", "@@ onAdOpened()")
}
override fun onAdClicked() {
super.onAdClicked()
Log.d("Activity", "@@ onAdClicked()")
}
override fun onAdLeftApplication() {
super.onAdLeftApplication()
Log.d("Activity", "@@ onAdLeftApplication()")
}
override fun onAdClosed() {
super.onAdClosed()
Log.d("Activity", "@@ onAdClosed()")
}
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id_for_test" />
</LinearLayout>
string.xml
<resources>
<string name="admob_app_id">ca-app-pub-000000000000~00000000000</string>
<string name="bannera_ad_unit_id_for_test">ca-app-pub-3940256099942544/6300978111</string>
</resources>
我在清单中创建了<meta-dat>
,并添加了admob_app_id
作为里面的android:value
值。在Android Studio提供的AVD测试设备中,出现了一个测试广告,没有出现任何问题,但测试广告并没有出现在实际设备上,所以,和上面的MainActivity
代码一样,我打电话给RequestConfiguration
,把我的移动的设备ID("ABCDEF012345"
)加到测试设备ID中,但问题没有解决,错误内容如下。
8条答案
按热度按时间yzxexxkh1#
可能不是每个人的解决方案,但为我修复了它:别忘了关闭各种广告拦截器。
我有一个广告拦截DNS配置,花了我一些时间,终于弄清楚了。
t1qtbnec2#
我用的是手动代理的WIFI,忘了换,发生在我身上的奇怪事情是
onAdFailedToLoad
中的Unable to obtain a JavascriptEngine
,只是通过长按已连接的WIFI,将高级选项中的WIFI网络修改为代理〉无来解决olqngx593#
大多数情况下,AdMob在模拟器上无法按预期执行,因为它没有播放存储服务之类的功能。请在真实的设备上尝试。有时,在模拟器上进行**冷 Boot **可以解决问题。
1.访问AdMob策略中心查看任何未决违规。
1.不要使用VPN,不要使用代理服务器。
1.调试时,请确保使用测试广告单元ID。
1.在模拟器上执行冷 Boot 。
1.使用真实的设备代替模拟器。
p4tfgftt4#
在我的情况下,设备wifi是开着的,但没有互联网连接,一旦我修复了互联网问题,广告开始加载。
xeufq47z5#
在proguard-rule文件中添加以下行
另请阅读Proguard和AdMob
Proguard and AdMob mediation
h7wcgrx36#
对于俄罗斯的AdMob是由谷歌阻止现在,否则你应该switchVPN上.
rjee0c157#
我在Android上使用原生广告时遇到了类似的问题。错误信息非常相似:
但是,我有一个线索,这可能是原因:由于我注意到应用程序有时会出现奇怪的崩溃,我决定通过检查其签名来添加一个检查,以确保应用程序确实有效。
我发现,在这个案例中,至少有2台设备更改了应用程序(可能是同一个人更改的)。所以这个用户出于某种原因试图更改应用程序。不知道他试图用它做什么,但我希望这能解决你的问题。
如果你愿意,这里有一个基本的方法:
hwazgwia8#
我遇到了同样的问题,我只是通过更换设备修复了它。详细信息:我集成了Google Admob和原生Android中介。基于Google教程,在为三星S7构建时,我遇到了“无法获得JavascroptEngine”的问题。之后我找到了解决这个问题的方法,但没有任何变化。我尝试使用另一台设备(Shark 1)并加载了广告。如果你遇到了同样的问题,请尝试使用另一台设备。