我应该在哪里调用MobileAds.initialize()?

时间:2018-03-14 05:25:24

标签: android kotlin admob

我已阅读https://developers.google.com/admob/android/quick-start?hl=en-US#import_the_mobile_ads_sdk

我需要使用代码A初始化MobileAds才能显示AdMob广告。

我有一些需要显示AD的活动,我是否需要在所有活动中添加代码A?

此外,为什么即使我删除

也能正确显示AdMob广告
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")

代码A

import com.google.android.gms.ads.MobileAds;

class MainActivity : AppCompatActivity() {
    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
        MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
    }
    ...
}

3 个答案:

答案 0 :(得分:9)

来自MobileAds.initialize()的{​​{3}}:

  

应该尽早调用此方法,并且每次只调用一次   应用程序启动

执行此操作的正确方法是在onCreate()类的Application方法中调用它。

如果你没有Application课程,只需创建一个,如下所示:

class YourApp: Application() {

    override fun onCreate() {
        super.onCreate()
        MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
    }
}

您必须在 AndroidManifest.xml 中引用此类,方法是设置android:name标记的application属性:

<application
    android:name=".YourApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <!-- ... -->

</application>

关于你的问题:

  

为什么即使我删除

也能正确显示AdMob广告
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
来自Mobile Ads SDK团队的 Veer Arjun Busani

docs

  

移动广告SDK需要几毫秒来初始化自己和我们   现在已经提供了这种方法,甚至可以在你打电话之前调用它   第一个广告。一旦完成,就不会有任何增加的加载时间   第一次请求。如果你不打电话,那么你的第一个   AdRequest首先需要几毫秒的时间   初始化自己。

所以基本上如果你不打电话给MobileAds.initialize(),那么第一个AdRequest会隐式调用它。

答案 1 :(得分:1)

MobileAds.initialize(this, "YOUR-APP-ID")已弃用。 请改用以下代码。

import android.app.Application
import com.google.android.gms.ads.MobileAds

class MyApp: Application() {

   override fun onCreate() {
       MobileAds.initialize(applicationContext)
       super.onCreate()
   }

}

答案 2 :(得分:0)

在Aplication上下文中初始化MobileAds会导致InMobi中介适配器出现错误

"Adapter Initialization status: Not Ready"

已通过AdMob测试套件进行了测试。

解决方案是在“活动”上下文中初始化MobileAd。