1

私はしばらくの間この問題に苦労しており、誰かが私を助けてくれたらとても感謝しています.

問題は、エアプッシュ「スマートウォール」の読み込みに成功すると、それ自体が「クリック」し、すぐに広告が表示される場所に移動することです。広告の読み込みが完了する前に、広告の読み込みがグラフィカルに表示されます。

AP サポートに何度か連絡しましたが、何をしても同じ問題が発生します。

問題は、スマートウォールが間違ったスレッドで実行されているようです。私は他のものに UIThread ハンドラーを使用していますが、正常に動作します (リードボルトインタースティシャル、アラートダイアログ、その他のネイティブ Android のもの)。

私が試したこと:

非同期タスク

    @Override
public void showAP() {
    uiThread.post(new Runnable(){
        public void run(){
            new Async().execute();
        }
    });
}

private class Async extends AsyncTask<String, Integer, String[]>{

    @Override
      protected void onPreExecute() {
       super.onPreExecute();
      }

    @Override
    protected String[] doInBackground(String... params) {
        if(apSmartWall == null)
            apSmartWall = new ApSmartWall(MainActivity.this, adCallbackListener);
        apSmartWall.startSmartWallAd();
        return null;
    }

    @Override
      protected void onProgressUpdate(Integer... values) {
       super.onProgressUpdate(values);

      }

    @Override
      protected void onPostExecute(String[] result) {
       super.onPostExecute(result);
      }

}

ハンドラ

 @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    apSmartWall = new ApSmartWall(MainActivity.this, adCallbackListener);

    // Create the layout
    layout = new RelativeLayout(this);

    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    // Create the libgdx View
    gameView = initializeForView(new Game(this), true);

    // Add the libgdx view
    layout.addView(gameView);

    context = this;

    uiThread = new Handler(); 

    ... (adding another view for mopub here, but removing this doesn´t change anything)

    // Hook it all up
    setContentView(layout);

}
 @Override
public void showAP() {
    uiThread.post(new Runnable(){
        public void run(){
            apSmartWall.startSmartWallAd();
        }
    });
}

libGDX スレッドのもの: https://code.google.com/p/libgdx/wiki/TheArchitecture#The_Graphics_Module

また、libGDX 組み込みのハンドラー メソッド AndroidApplication.runOnUiThread() を使用してみましたが、どちらも機能しませんでした。ネイティブ Android に関しては、私は決して経験がないので、間違ったことをしている可能性があります。しかし、私が言ったように、UI スレッドで実行される他のものに対しては正常に動作します。たとえば、これは正常に動作します。

@Override
public void resumeAds() {
    uiThread.post(new Runnable(){

        public void run() {
            moPubView = new MoPubView(context);
            // non-tablet
            if(width >= 728)
                moPubView.setAdUnitId(TABLET_SIZE);
            else
                moPubView.setAdUnitId(PHONE_SIZE);
            moPubView.loadAd();

            RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

            layout.addView(moPubView, adParams);
        }

    });
}

AndroidManifest.xml airpush のもの

<meta-data android:name="com.package.APPID" android:value="appid" />
<meta-data android:name="com.package.APIKEY" android:value="android*key"/>

<activity android:exported="false" android:name="com.package.SmartWallActivity"
 android:configChanges="orientation|screenSize"
 android:theme="@android:style/Theme.Translucent" />

<activity android:name="com.package.BrowserActivity"
 android:configChanges="orientation|screenSize" />
4

0 に答える 0