MobileAds.initialize(Context, String)已过时,不建议使用。

30

在使用 R.string.admob_application_id 之前,它看起来是这样的:

MobileAds.initialize(this, getString(R.string.admob_application_id));

MobileAds方法.initialize(Context context, String applicationCode) 现在已经过时:请使用initialize(Context, OnInitializationCompleteListener)代替。

初始化Google移动广告SDK。尽早调用此方法可减少会话第一个广告请求的延迟。如果未调用此方法,则第一个广告请求将自动初始化Google移动广告SDK。

MobileAds.Settings也已被弃用。


我尝试过获取每个适配器的InitializationStatus

MobileAds.initialize(this, initializationStatus -> {

    /* get the adapter status */
    Map<String, AdapterStatus> map = initializationStatus.getAdapterStatusMap();
    for (Map.Entry<String, AdapterStatus> entry : map.entrySet()) {
        AdapterStatus adapterStatus = entry.getValue();
        AdapterStatus.State state = adapterStatus.getInitializationState();
        Log.d(LOG_TAG, "key = " + entry.getKey() + ", state = " + state.name() + ", desc = " + adapterStatus.getDescription());
    }
});

在模拟器上它显示READY,但是.getDescription()的信息相当令人困惑:

Google Mobile Ads SDK initialization functionality unavailable for this session.
Ad requests can be made at any time.

在具有互联网连接的物理设备上,它会显示四个以上的适配器:

key = com.google.android.gms.ads.MobileAds, state = READY, desc = 
key = com.google.ads.mediation.vungle.VungleMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.applovin.AppLovinMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.adcolony.AdColonyMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.tapjoy.TapjoyMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.

om.google.android.gms.ads.MobileAds读取READY,而其他的com.google.ads.mediation.*读取NOT_READYFailed to create Adapter(没有设置中介,但可以加载测试广告)。

MobileAds.initialize(this);也可以运行(OnInitializationCompleteListener是可选的)。


似乎没有R.string.admob_application_id也可以工作,因此我的实际问题是:

是否仍需要设置R.string.admob_publisher_idR.string.admob_application_id,或者现在只需要广告单元ID?大部分文档仍然使用已弃用的初始化方法(类似上面显示的方法),因此这不太清楚。

2个回答

14

在您的Android项目中开始使用AdMob似乎回答了应用程序ID部分:

通过添加如下所示的<meta-data>标签将您的AdMob应用ID添加到您的应用程序的AndroidManifest.xml文件中。

重要提示:自Google Mobile Ads SDK v17.0.0起,此步骤是必需的。如果您不添加此<meta-data>标签,则您的应用程序将因消息“Google Mobile Ads SDK初始化错误”而崩溃。

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

发布者 ID 仍然需要用于 请求欧洲用户的同意


你如何为Xamarin设置发布者ID? - user1034912
1
一样的...我会假设。 - Martin Zeitler

13

请改为使用以下内容初始化MobileAds:

MobileAds.initialize(this, initializationStatus -> { });

2021不再工作了。 - user1034912

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接