Android + HTML5 (LocalStorage) + Admob: ошибка? - PullRequest
2 голосов
/ 13 января 2012

Я занимаюсь разработкой приложения Phonegap (Android), которое использует javascript / HTML5 LocalStorage. Приложение работает нормально, однако, когда я добавляю Admob в приложение localStorage не работает. Имея в виду сохраненные значения удаляются, когда приложение принудительно закрывается или телефон перезапущен.

public class TestActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");

        // ADMOB: If comment, work.
        /*
        LinearLayout layout = super.root;
        AdView adView = new AdView(this, AdSize.BANNER, **MY_CODE_ADMOB**);
        layout.addView(adView);
        AdRequest request = new AdRequest();
        adView.loadAd(request);
        */
    }
}        

Спасибо !!

Ответы [ 2 ]

10 голосов
/ 18 марта 2012

Вы должны отложить код, который запускает рекламу на несколько секунд ... ниже работал для меня.

public class youActivity extends DroidGap {
private Handler mHandler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");
    mHandler.postDelayed(new Runnable() {
        public void run() {
            doStuff();
        }
    }, 5000); 
}
private void doStuff() {
    final String MY_AD_UNIT_ID = "yourAD_UNIT_ID";
    AdView adView; 
    // Create the adView 
    adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID); 
    LinearLayout layout = super.root; // this is the only change from the sample 
    // Add the adView to it 
    layout.addView(adView); 
    // Initiate a generic request to load it with an ad 
    adView.loadAd(new AdRequest());
}
}
0 голосов
/ 07 января 2014

Я испытал те же проблемы при работе AdMob с хранилищем, используя Phonegap / Cordova и файл sqlite, когда моя база данных копировалась из apk в папку db.Я пробовал решение задержки, упомянутое здесь.Мое наблюдение состояло в том, что для доступа к базе данных с правильными данными необходимо window.openDatabase("xxx", "1.0", "xxx", 1000000); сделать до создания AdRequest.В моем случае это не было решением, поскольку повторное открытие соединения на другой странице, где оно необходимо, приведет к тому, что база данных будет пустой.

Я решил эту проблему с помощью плагина, доступного на https://github.com/lite4cordova/Cordova-SQLitePlugin. Он работает точно так же, как websql, за исключением открытия базы данных другим способом (не так много, чтобы переписать, если ваши запросы уже написаны).Если вы откроете его с помощью:

var db = window.sqlitePlugin.openDatabase({name: "DB"});

, он будет использовать файл DB.db вместо файла по умолчанию 0000000000000001.db.Это должно предотвратить конфликты с AdMob.2 вещи, на которые следует обратить внимание:

  1. Плагин должен быть запущен на устройстве, а не только загружаемый документ для открытия БД.вы копируете файл sqlite, который вы отправляете с помощью apk, не забудьте указать место, куда вы его копируете.

...