橫幅廣告 - IDroi/AdZodiac GitHub Wiki

AdZodiac橫幅廣告應用程式介面

我們提供四種長寬種類(寬*高)的橫幅廣告,你可以任意地挑選適合於你應用程式的種類。通常,橫幅廣告會放置於螢幕的上方或下方並且週期性更新,你只需要確認你展示區域的佈局文件符合所選擇的長寬種類。為了下載橫幅廣告,你必須創造一個AdZodiacView實例並且可經由回調方法擷取廣告互動行為。

  1. 極直立式(5 * 32)
  2. 直立式(9 * 16)
  3. 橫式(16 * 9)
  4. 極橫式(32 * 5)

加入橫幅廣告於你的應用程式只需要下面幾個步驟:

  1. 使用API下載橫幅廣告
  2. 設定回調方法來處理事件

預先準備

在你下載AdZodiac橫幅廣告之前,你需要先依照快速入門內的流程完成創立AdZodiac帳號與廣告單位識別碼,並且整合AdZodiac Android API到你的專案。

下載橫幅廣告於你的應用程式

  1. 檢查你的安卓應用程式的Manifest

    需要更新你的AndroidManifest.xml裡的 PermissionActivity 來整合AdZodiac應用程式介面進你的應用程式。

    宣告下列的uses-permission標籤:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    宣告下列的activity標籤於你的<application>

    <activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    
    <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    
    <activity android:name="com.facebook.ads.AudienceNetworkActivity" android:configChanges="keyboardHidden|orientation|screenSize" />
    
    <activity android:name="com.adzodiac.common.AdZodiacBrowser" android:configChanges="keyboardHidden|orientation|screenSize"/>
    <activity android:name="com.adzodiac.mobileads.AdZodiacActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
    <activity android:name="com.adzodiac.mobileads.MraidActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
    <activity android:name="com.adzodiac.mobileads.MraidVideoPlayerActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
    <activity android:name="com.adzodiac.mobileads.RewardedMraidActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
    
    <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    <!--當開發者已經有使用卓易BaaS服務時可以不用填下列應用程式識別碼-->
    <meta-data android:name="com.droi.sdk.application_id" 
            android:value="hlqvmbzhC6LuapuYJPwEVziIUxMql1MAlQDblHgI" />
    <!--當開發者有開啟One by AOL網路時需要加入的provider-->
    <provider
            android:name="com.millennialmedia.internal.utils.MediaContentProvider"
            android:authorities="${applicationId}.MediaContentProvider"
            android:grantUriPermissions="true"
            android:exported="false" />
    
  2. 定義橫幅廣告的排版XML

    期望的長寬(layout_width * layout_height)需要等同於你在創造廣告單位時所選擇的長寬種類。

    <com.adzodiac.mobileads.AdZodiacView
                android:id="@+id/ad_banner_view"
                android:layout_width="fill_parent"
                android:layout_height="50dp"/>
    
  3. 下載橫幅廣告到你的圖層

    現在,你必須在Activity內的onCreate()或者Fragment內的onCreateView裡創造一個圖層AdZodiacView實例,必且下載橫幅廣告來填充你的圖層AdZodiacView。 接著你必須要讓你的圖層綁定XML資源並且設定其廣告單位識別碼。 之後,你就可以簡單的呼叫loadAd()來下載並展現橫幅廣告。

    private AdZodiacView mAdZodiacView;
    private String adUnitId = "YOUR_BANNER_AD_UNIT_ID";
    mAdZodiacView = (AdZodiacView) view.findViewById(R.id.ad_banner_view);
    mAdZodiacView.setBannerAdListener(this);
    mAdZodiacView.setAdUnitId(adUnitId);
    mAdZodiacView.setKeywords(parameters);  // Please refer KeywordParameters page
    mAdZodiacView.loadAd();
    

    當你的Activity或者Fragment被摧毀時,你也同時需要在onDestroy()或者onDestroyView()裡摧毀AdZodiacView

    mAdZodiacView.destroy();
    

設定回調方法來處理事件

BannerAdListener提供一個內含多種回到方法的介面讓你能追蹤廣告生命週期與處理事件,實作完這些介面後別忘記把Activity或者Fragment的實例傳到AdZodiacView adZodiacView物件。

BannerAdListener包含以下方法:

public interface BannerAdListener {
    public void onBannerLoaded(AdZodiacView banner);
    public void onBannerFailed(AdZodiacView banner, AdZodiacErrorCode errorCode);
    public void onBannerClicked(AdZodiacView banner);
    public void onBannerExpanded(AdZodiacView banner);
    public void onBannerCollapsed(AdZodiacView banner);
}
...
mAdZodiacView.setBannerAdListener(this);

範例程式:

public class BannerSampleFragment extends Fragment implements AdZodiacView.BannerAdListener{

    private AdZodiacView mAdZodiacView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        final View view = inflater.inflate(R.layout.sample_banner_fragment, container, false);

        mAdZodiacView = (AdZodiacView) view.findViewById(R.id.ad_banner_view);
        mAdZodiacView.setBannerAdListener(this);

        AdZodiacSample adZodiacSample = AdZodiacSample.fromBundle(getArguments());

        final String adUnitId = adZodiacSample.getAdUnitId();
        final DetailFragmentViewHolder views = DetailFragmentViewHolder.fromView(view);
        views.mAdUnitIdView.setText(adUnitId);
        views.mDescription.setText(adZodiacSample.getDescription());
        views.mLoadAdButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                KeywordParameters parameters = new KeywordParameters.Builder()
                        .setRankingMethod((KeywordParameters.RankMethods) views.mRankingMethodSpinner.getSelectedItem())
                        .setAge((KeywordParameters.Age) views.mAgeSpinner.getSelectedItem())
                        .setAppCategory((KeywordParameters.AppCategories) views.mCategorySpinner.getSelectedItem())
                        .setTime((KeywordParameters.Time) views.mTimeSpinner.getSelectedItem())
                        .setGender((KeywordParameters.Gender) views.mGenderSpinner.getSelectedItem())
                        .build();

                loadAdZodiacView(adUnitId, parameters);
            }
        });

        return view;
    }

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

        if(mAdZodiacView != null){
            mAdZodiacView.destroy();
            mAdZodiacView = null;
        }
    }

    private void loadAdZodiacView(final String adUnitId, final KeywordParameters parameters){
        mAdZodiacView.setAdUnitId(adUnitId);
        mAdZodiacView.setKeywords(parameters);
        mAdZodiacView.loadAd();
    }

    @Override
    public void onBannerLoaded(AdZodiacView banner) {
        Toast.makeText(getContext(), "Banner Ad Loaded.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onBannerFailed(AdZodiacView banner, AdZodiacError error) {
        Toast.makeText(getContext(), "Banner Ad Failed. " + error.toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onBannerClicked(AdZodiacView banner) {
        Toast.makeText(getContext(), "Banner Ad Clicked.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onBannerExpanded(AdZodiacView banner) {
        Toast.makeText(getContext(), "Banner Ad Expanded.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onBannerCollapsed(AdZodiacView banner) {
        Toast.makeText(getContext(), "Banner Ad Collapsed.", Toast.LENGTH_SHORT).show();
    }
}