Браузер Localstorage заблокирован StartApp/adMob/mobileCore

Мне наконец удалось внедрить StartApp в мой проект Cordova, и когда все выглядело хорошо, появилась самая большая проблема. StartApp как-то портит мою базу данных localalstorage. Это также происходит с adMob, как я видел в Интернете. Когда я удерживаю среднюю кнопку, чтобы войти в последние приложения, и принудительно закрываю свое приложение, в следующий раз, когда я открываю его, все из локального хранилища, похоже, вылетает. Я не уверен, как, но если я войду и закрою его несколько раз, локальное хранилище получит свои старые значения, чем снова потеряет их.

Я уверен, что это Startapp, потому что если я прокомментирую:StartAppSDK.init(this, "xxx", "xxx", true); все снова работает нормально. Я прочитал в Интернете, что это может быть конфликт между StartApp (а также случается с adMob) и localalstorage. Одним из способов является задержка инициализации StartApp, как я делал в своем коде. Кажется, это работает, но у меня возникает другая проблема: после загрузки баннера с помощью этого метода: он обновляется каждую секунду, а не 5-6 секунд, как раньше, и это действительно расстраивает (баннер почти не катится неограниченно, и я не могу действительно читать объявление). И еще одна проблема этого обходного пути заключается в том, что баннер пропускает несколько пикселей слева и справа от него. Таким образом, ширина немного сузилась и выглядит не очень хорошо.

Обратите внимание: я заметил, что безразлично, какой метод я использую для инициализации StartApp, когда устройство включено. Пауза. Я получаю СБОЙ БИНДЕРА В logcat. Но все работает отлично. Код в onPuse и onResume запускается. Я предполагаю, что, возможно, это является причиной того, что StartApp испортил локальное хранилище (потому что это происходит только тогда, когда я принудительно закрываю приложение, и до того, как инициируется событие принудительного закрытия onPause).

И иногда в onResume или при запуске приложения я получаю: E/Web Console: ключ аргумента Viewport "" не распознается и игнорируется. на http://www.startappexchange.com/:20

Также без какого-либо влияния на мое приложение, но, возможно, это может повлиять на местное хранилище..

Основной файл Java:

 package com.Snap.What;

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.webkit.JavascriptInterface;
    import android.widget.RelativeLayout;

    import org.apache.cordova.*;

    import com.startapp.android.publish.StartAppAd;
    import com.startapp.android.publish.StartAppSDK;
    import com.startapp.android.publish.banner.Banner;

    public class WhatSnap extends CordovaActivity 
    {

        private StartAppAd startAppAd = new StartAppAd(this);
        private ViewGroup layout;
        private Handler mHandler = new Handler();

        @Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            super.init();
            // Set by <content src="index.html" /> in config.xml
            JavaScriptInterface jsInterface = new JavaScriptInterface(this);
            appView.getSettings().setJavaScriptEnabled(true);
            appView.addJavascriptInterface(jsInterface, "JSInterface");
            super.loadUrl(Config.getStartUrl());
            //super.loadUrl("file:///android_asset/www/index.html");


            mHandler.postDelayed(new Runnable() {
                public void run() {
                    doStuff();
                }
            }, 5000); 


            setLayout(); 
    //      showBanner();
        }

        public void doStuff(){
            StartAppSDK.init(this, "xxx", "xxx", true);
            startAppAd.loadAd(); // load the next ad
        }


        public class JavaScriptInterface {
            private Activity activity;

            public JavaScriptInterface(Activity activiy) {
                this.activity = activiy;
            }

            @JavascriptInterface
            public void displayBanner()
            {
                activity.runOnUiThread(new Runnable() {
                    public void run() {
                        //Code that interact with UI
                        initBanner();
                    }
                });

            }

            @JavascriptInterface
            public void displayexitAd()
            {
                activity.runOnUiThread(new Runnable() {
                    public void run() {
                        //Code that interact with UI
                        exitAd();
                    }
                });

            }

            @JavascriptInterface
            public void displayAd()
            {
                activity.runOnUiThread(new Runnable() {
                    public void run() {
                        //Code that interact with UI
                        showAd();
                    }
                });

            }

        }

        public void setLayout(){
            root.removeView((View) appView);
            layout = new RelativeLayout(this);

            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
            layout.setLayoutParams(lp);

            appView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                  RelativeLayout.LayoutParams.MATCH_PARENT));

            appView.setVisibility(View.INVISIBLE);
            layout.addView((View) appView);
            setContentView(layout);

            Log.e("setLayout", "setLayout");    
        }

        public void initBanner(){
            Banner startAppBanner = new Banner(this);
            RelativeLayout.LayoutParams bannerParameters =
                        new RelativeLayout.LayoutParams(
                                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                                    RelativeLayout.LayoutParams.WRAP_CONTENT);
            bannerParameters.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);  
            bannerParameters.addRule(RelativeLayout.CENTER_HORIZONTAL);
          // Add to main Layout

           layout.addView(startAppBanner, bannerParameters);

            Log.e("showBanner", "showBanner"); 
        }

        public void exitAd(){
            startAppAd.onBackPressed();
        }

        public void showAd(){
            startAppAd.showAd(); // show the ad
            startAppAd.loadAd(); // load the next ad
        }

    }

AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="com.Snap.What" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="WhatSnap" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.startapp.android.publish.list3d.List3DActivity"
          android:theme="@android:style/Theme" />

        <activity android:name="com.startapp.android.publish.AppWallActivity"
                  android:theme="@android:style/Theme.Translucent"
                  android:configChanges="orientation|keyboardHidden|screenSize" />
    </application>
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    </manifest>

Я также видел другой возможный обходной путь для удаления кода mHandler и переопределения onAttachedToWindow, например:

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

        doStuff();
    };

Но иногда, когда я принудительно закрываю приложение, местное хранилище остается иногда нет.

Пожалуйста, помогите мне, я остался 3 дня, чтобы решить эту проблему, и ничего хорошего не случилось.

0 ответов

Другие вопросы по тегам