Bí quyết tích hợp Audience Network SDK trên Android

Dưới đây là một số cách tốt nhất để tích hợp nhằm giúp nhà phát triển triển khai trên Android. Những bí quyết và trường hợp mã hóa này sẽ giúp đội ngũ của bạn hiểu rõ hơn về Audience Network SDK của chúng tôi, tăng hiệu quả cho quy trình tích hợp và luôn cập nhật giải pháp của bạn sau khi ra mắt.

Điều kiện tiên quyết

Đảm bảo bạn đã xem một trong những ví dụ sau:

Sự cố: Sự cố xảy ra khi gọi loadAd nhiều lần.

Cách làm hiệu quả

Cách làm không hiệu quả


Cách làm hiệu quả:

Bí quyết 1: Chỉ gọi lại loadAd khi quảng cáo bị bỏ qua hoặc quá trình tải quảng cáo gặp phải lỗi, ngoại trừ quảng cáo biểu ngữ.

Ngay cả khi bạn nhận được thông báo về việc bỏ qua quảng cáo hoặc lỗi khi gọi lại, hãy đảm bảo bạn thiết lập Số lần thử lại tối đa để tránh thử lại vô thời hạn. onError(Ad, AdError) sẽ được gọi bất kể vấn đề gây ra lỗi tải quảng cáo là gì. Ví dụ: trong trường hợp "Không có Internet", bạn sẽ phải dừng tải quảng cáo khi đạt đến Số lần thử lại tối đa.

Trong Audience Network SDK, đối với bất kỳ loại quảng cáo nào ngoại trừ quảng cáo biểu ngữ, bạn nên cẩn thận khi gọi loadAd. Bạn tuyệt đối không nên gọi loadAd trong khi quảng cáo đang hiển thị. Cách làm tốt nhất là triển khai AdListener để nhận được thông báo bất cứ khi nào quảng cáo bị bỏ qua, đã hoàn tất, đã đóng hoặc gặp lỗi. Nhờ vậy, bạn có thể gọi lại loadAd đúng cách và không gây ra sự cố nào.

Ví dụ 1: Gọi loadAd trong Lệnh gọi lại onInterstitialDismissed.

private InterstitialAd mInterstitialAd;
private static final MAX_NUMBER_OF_RETRIES = 3;
private boolean shouldLoadAd = true;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onCreate 
    super.onCreate(savedInstanceState);
    ...
    mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
    InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
        ...
        @Override
        public void onInterstitialDismissed(Ad ad) {
            // Interstitial dismissed callback
            if (shouldLoadAd) {
                /* Change shouldLoadAd value to false, 
                    or a new interstitial ad will show immediately 
                    when previous interstitial ad gets dismissed. */
                shouldLoadAd = false;
                mInterstitialAd.loadAd();
            }
        }
        
        @Override
        public void onError(Ad ad, AdError adError) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mInterstitialAd.loadAd();
            }
        }
        ...
    };
    mInterstitialAd.loadAd(
            mInterstitialAd.buildLoadAdConfig()
                    .withAdListener(interstitialAdListener)
                    .build());
    ...
}

Ví dụ 2: Gọi loadAd trong lệnh gọi lại onError cho NativeAd.

private static final MAX_NUMBER_OF_RETRIES = 3;
private NativeAd mNativeAd;
private int retryCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES
            if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) {
                retryCount += 1;
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(nativeAdListener)
                    .build());
    ...
}

Bí quyết 2: Phiên bản quảng cáo không phải là trình quản lý quảng cáo. Bạn sẽ phải thực thể hóa một phiên bản mới bất cứ khi nào cần "tải lại" quảng cáo đối với quảng cáo tự nhiên và quảng cáo biểu ngữ.

Ví dụ:

private Button showNativeAdButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    showNativeAdButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Create a native ad request with a placement ID
            nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID");

            // Create a listener to get notified when the ad was loaded.
            NativeAdListener nativeAdListener = new AdListener() {
                ...
            }

            // Initiate a request to load an ad.
            nativeAd.loadAd(
                    nativeAd.buildLoadAdConfig()
                            .withAdListener(nativeAdListener)
                            .build());
        }
    });
    ...
}

Cách làm không hiệu quả:

Bí quyết 1: Tuyệt đối không sử dụng loadAd trong một số lệnh gọi lại trên Android - ví dụ như lệnh gọi lại onResume() hoặc onStart() - có thể khiến gọi loadAd liên tục mà không bỏ qua hay giải phóng quảng cáo gần đây nhất trong bộ nhớ.


Ví dụ:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    ...
}

@Override
protected void onResume() {
    super.onResume();
    ...
    // DON'T DO THIS!
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
}

Bí quyết 2: Cẩn thận không gọi loadAd vô thời hạn trong lệnh gọi lại onError. Dưới đây là ví dụ về trường hợp bạn nên tránh. Trong trường hợp "Không có Internet", loadAd sẽ được gọi nhiều lần, cuối cùng sẽ khiến ứng dụng của bạn gặp lỗi.


Ví dụ:

private NativeAd mNativeAd;
private boolean shouldRetry = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // call the super class onResume
    super.onCreate(savedInstanceState);
    ...
    mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new AdListener() {
        ...
        @Override
        public void onError(Ad ad, AdError error) {
            // Ad error callback
            // Remember to change shouldRetry to false, or DON'T implement like this! 
            if (shouldRetry) {
                mNativeAd.loadAd();
            }
        }
        ...
    };
    mNativeAd.loadAd(
            mNativeAd.buildLoadAdConfig()
                    .withAdListener(NativeAdSampleActivity.this)
                    .build());
    ...
}

Các bước tiếp theo

Tài nguyên khác

Hướng dẫn bắt đầu

Hướng dẫn kỹ thuật để bắt đầu với Audience Network

Tài liệu tham khảo về API

Tài liệu tham khảo về Facebook SDK dành cho iOS