4

こんにちは私はAndroidアプリに取り組んでおり、AdWhirlを使用して広告を表示しています。AdWhirlが広告を返さない状況に対処できるようにしたいと思います。失敗したら装飾バーを見せたいです。

誰かが私に例を教えてもらえますか?

前もって感謝します、

4

1 に答える 1

5

OK私は今これを理解しました。考えられる方法は2つあり、1つは非常に簡単で、もう1つはもう少し作業が必要です。

簡単な方法

表示するものがない限り、アドワールレイアウトは非表示のままです。したがって、次FrameLayoutのように、バックグラウンドにフォールバックビューを、フロントにアドワールビューを含むコンテンツを簡単に作成できます。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="53dp"
        android:layout_gravity="center_horizontal"
        >
    <!-- fallback view -->
    <TextView
        android:id="@+id/ad_fallback"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:text="nothing to say..."
        >
</FrameLayout>

次に、コードでビューをレイアウトに追加できます(parentView上記の膨らんだレイアウトは次のとおりです)。

final DisplayMetrics dm = activity.getResources().getDisplayMetrics();
final AdWhirlLayout adView = new AdWhirlLayout(activity, ADWHIRL_ID);
adView.setMaxWidth((int) (dm.density * 320));
adView.setMaxHeight((int) (dm.density * 53));
adView.setGravity(Gravity.CENTER);
parentView.addView(adView);

それでおしまい。

より洗練された方法

GoodNewsでは、もっと洗練された方法が欲しかったのですが、AdWhirlが広告の取得でビジー状態で、内部の広告バナー(アプリのリソースとして提供されているため、インターネットが利用できない場合でも機能します)を表示する必要があります。上記のように実装できるため、メッセージの読み込みは簡単ですが、動的な内部バナーは少し注意が必要です。

解決策は、AdWhirlによって提供される強力なカスタムイベントであり、残念ながら、十分に文書化されていません。実行する最初のステップは、AdWhirlWebインターフェイスでカスタムイベントを作成することです。

  1. 「広告ネットワーク設定」を表示します
  2. 上部の[広告カスタムイベント]ボタンをクリックします
  3. 任意の名前(「フォールバック」など)と関数名を入力します(後者はJavaクラスのメソッド名に直接マップされます)
  4. イベントを有効にして、0%の割り当てを与えます
  5. 次に、[埋め戻しの優先度]画面を表示し、フォールバックイベントをリストの最後に移動します

上記の構成により、AdWhirlが実際の広告を表示できない場合にのみカスタムイベントが発生するようになります。

次に、コードでイベントを処理する必要があります。したがって、を実装し、パラメータなしでパブリックメソッドを定義するクラスとAdWhirlLayout.AdWhirlInterface、カスタムイベントで指定された関数名と同じ名前が必要です。このメソッドは、特定のビューをAdWhirlレイアウトに挿入できます。

class AdWhirlEventHandler implements AdWhirlLayout.AdWhirlInterface {
    private final AdWhirlLayout adView;

    public AdWhirlEventHandler(AdWhirlLayout adView) {
        this.adView = adView;
    }

    @Override
    public void adWhirlGeneric() {
        // nothing to be done: Generic notifications should also be 
        // configurable in the AdWhirl web interface, but I could't find them
    }    

    /**
     * Will be called by AdWhirl when our custom event with the function name 
     * "fallback" is fired. Called via reflection.
     */
    public void fallback() {
        try {
            final View fallbackView = 
                ... // inflate the view to be shown here
            adView.pushSubView(fallbackView);

            /*
             * reset backfill chain and schedule next ad update
             */
            adView.adWhirlManager.resetRollover();
            adView.rotateThreadedDelayed();
        } catch (MyExpectedException ex) {
            /*
             * forward to next option from the backfill list
             */
            adView.rolloverThreaded();             
        }
    }
}

AdWhirlLayout次に、イベントハンドラーを次のように登録する必要があります。

adView.setAdWhirlInterface(new AdWhirlEventHandler(adView));

それでおしまい。

于 2011-03-23T09:19:17.477 に答える