gpt4 book ai didi

android - 本地存储被 Cordova 和 admob 覆盖

转载 作者:行者123 更新时间:2023-11-30 03:54:56 25 4
gpt4 key购买 nike

当在使用 localStorage 的 Phonegap/Cordova 应用程序中初始化 admob 代码时,localStorage 似乎被 admob 广告 View 覆盖。

这是在 Cordova 2.2 应用程序中初始化 admob 代码(使用 SDK 的 v6.2.1)的代码:

public class Foo extends DroidGap
{
private AdView adView;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);

super.loadUrl("file:///android_asset/www/index.html", 3000);

adView = new AdView(this, AdSize.SMART_BANNER, "AD_MOB_ID");
root.addView(adView);
AdRequest request = new AdRequest();
request.setTesting(true);
adView.loadAd(request);
}

广告已加载,但我用来维护用户 session 的 localStorage 似乎已被清除并显示登录页面。当我评论 admob 初始化代码时,localStorage 被还原并且用户 session 返回。

根据 [1] 和 [2] 中的说明,我添加了一个处理程序::

public class Foo extends DroidGap
{
private AdView adView;
private Handler mHandler = new Handler();

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);

super.loadUrl("file:///android_asset/www/index.html", 3000);

mHandler.postDelayed(new Runnable() {
public void run() {
loadAdmob();
}
}
}

private void loadAdmob()
{
adView = new AdView(this, AdSize.SMART_BANNER, "AD_MOB_ID");
root.addView(adView);
AdRequest request = new AdRequest();
request.setTesting(true);
adView.loadAd(request);
}

这尝试在 10 秒后加载广告,但我在 logcat::中收到以下消息

adRequestUrlHtml: <html>...
Received ad url: <url: ...
Request Scenario: Offline with no buffered ads.
Network is unavailable. Aborting ad request.
onFailedToReceiveAd(A network error occurred.)

我可以确认网络连接没有问题(因为应用程序中的其余数据已显示并通过网络获取)但广告未显示。我做错了什么还是这是一个错误?此问题的解决方法会有所帮助。

[1] Android + HTML5(LocalStorage) + Admob: Bug?
[2] https://github.com/phonegap/phonegap/wiki/In-App-Advertisements

最佳答案

我遇到了同样的问题,在引入延迟时收到网络错误(可能是因为运行在另一个线程上,它失去了查询网络的必要权限。)

我解决这个问题的方法是覆盖 onAttachToWindow() 并从那里调用 adMob 初始化,并完全删除处理程序代码。它具有近乎即时且无延迟的副作用。

@Override public void onAttachedToWindow() {
super.onAttachedToWindow();

doAdMob();
};

private void doAdMob() {
adView = new AdView(this, AdSize.BANNER, "ID");

LinearLayout layout = super.root;

layout.addView(adView);
AdRequest request = new AdRequest();

request.addTestDevice("ID");

adView.loadAd(request);
}

顺便说一句,我正在使用 Cordova 2.5。

更新:AdMod 仍然会损坏本地存储,但它会在 AdMob 有机会清除它时加载。但是,在随后的重新加载中,它将被重置。我已经通过添加

解决了这个问题
window.setTimeout(saveSettings, 5000);

在我加载我的 localStorage 设置之后。这当然是非常骇人听闻的……但到目前为止似乎可以解决问题。另请注意,我一直只使用 AdMob 的测试广告。

关于android - 本地存储被 Cordova 和 admob 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com