InMobiBanner未初始化

时间:2018-04-01 06:05:06

标签: android inmobi

我在整合InMobi Banner广告时遇到此错误。

InMobiBanner is not initialized. Ignoring InMobiBanner.load()

我使用的是InMobi Ads SDK 7.0.4版。我已按照文档中的说明进行操作。

如何解决此问题?请帮我解决这个问题。

4 个答案:

答案 0 :(得分:6)

最后,我得到了解决方案。不知何故,如果在XML布局中给出了放置ID,则InMobiBanner不起作用。因此,我们必须使用Java代码以编程方式初始化InMobiBanner。

但在整合InMobi SDK之前,请完整您的个人资料信息并添加付款信息。此外,请勿在此之前创建任何展示位置。

第1步:

使用以下代码初始化应用程序文件中的InMobiSdk:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        InMobiSdk.init(this, "Your Account ID");
        InMobiSdk.setLogLevel(InMobiSdk.LogLevel.DEBUG);
    }

}

第2步:

清单文件中添加应用文件,并将hardwareAccelerated标记的application属性设为true。检查下面给出的示例代码:

<application
    android:name=".MyApplication"
    android:hardwareAccelerated="true"
    ..

    <activity
        android:name="com.inmobi.rendering.InMobiAdActivity"
        android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout"
        android:resizeableActivity="false"
        android:hardwareAccelerated="true"
        android:theme="@android:style/Theme.NoTitleBar"
        tools:ignore="UnusedAttribute" />

</application

第3步:

在布局中添加ViewGroup,以便我们可以在该视图中添加InMobiBanner视图。

<RelativeLayout
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center" />

第4步:

现在,在您的Activity或Fragment中添加以下Java代码,以初始化并加载InMobiBanner广告。

InMobiBanner bannerAd = new InMobiBanner(this, 1234567890L);
RelativeLayout adContainer = findViewById(R.id.banner);
float density = getResources().getDisplayMetrics().density;
RelativeLayout.LayoutParams bannerLp = new RelativeLayout.LayoutParams((int) (320 * density), (int) (50 * density));
adContainer.addView(bannerAd, bannerLp);
bannerAd.load();

希望这有帮助。

答案 1 :(得分:0)

您需要在UI Thread中创建InMobiBanner类实例,因为它不是线程安全的

官方文件说 -

备注:

  • InMobiBanner类不是线程安全的。必须在UI线程上创建横幅实例。

  • 同样,必须在UI线程上调用此实例上的所有方法。不这样做会导致不可预测的行为,并可能影响您使用InMobi货币化的能力。

希望这能回答你的问题。感谢

答案 2 :(得分:0)

另外,您需要添加这些行的android清单文件

 <activity
        android:name="com.inmobi.rendering.InMobiAdActivity"
        android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout"
        android:resizeableActivity="false"
        android:hardwareAccelerated="true"
        android:theme="@android:style/Theme.NoTitleBar"
        tools:ignore="UnusedAttribute"/>

答案 3 :(得分:0)

InMobi SDK初始化是异步工作,需要几毫秒才能完成。因此,如果您尝试在该时限内加载横幅,那么您将得到InMobiBanner未初始化的信息。忽略InMobiBanner.load()错误。

两种解决此问题的方法  1.增加SDK初始化和横幅加载之间的延迟。  2.在Application类中进行初始化,然后将横幅广告加载到活动中。