Để thảo luận và đưa ra ý kiến phản hồi về các sản phẩm của chúng tôi, hãy tham gia kênh Discord chính thức của AdMob trong máy chủ Cộng đồng quảng cáo và đo lường của Google.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Dàn xếp AdMob là một tính năng cho phép bạn phân phát quảng cáo đến các ứng dụng của mình từ nhiều nguồn (bao gồm cả Mạng AdMob và các nguồn quảng cáo bên thứ ba) ở một nơi duy nhất. Tính năng Dàn xếp AdMob giúp bạn tối đa hoá tỷ lệ lấp đầy và tăng khả năng kiếm tiền bằng cách gửi yêu cầu quảng cáo đến nhiều mạng để xác minh rằng bạn tìm thấy mạng phù hợp nhất hiện có để phân phát quảng cáo.
Nghiên cứu điển hình.
Điều kiện tiên quyết
Trước khi tích hợp tính năng dàn xếp cho một định dạng quảng cáo, bạn cần tích hợp định dạng quảng cáo đó vào ứng dụng của mình:
Đối với hoạt động đặt giá thầu:
SDK Quảng cáo của Google trên thiết bị di động phiên bản 18.3.0 trở lên.
Khởi chạy SDK Quảng cáo của Google trên thiết bị di động
Hướng dẫn bắt đầu nhanh giúp bạn biết cách khởi chạy SDK Quảng cáo của Google trên thiết bị di động.
Trong lệnh gọi khởi chạy đó, các bộ chuyển đổi dàn xếp cũng được khởi chạy. Bạn cần phải đợi quá trình khởi chạy hoàn tất trước khi tải quảng cáo để xác minh rằng mọi mạng quảng cáo đều có trong yêu cầu quảng cáo đầu tiên.
Mã mẫu sau đây cho thấy cách kiểm tra trạng thái khởi chạy của từng bộ chuyển đổi trước khi thực hiện yêu cầu quảng cáo.
Java
publicvoidinitialize(Contextcontext){newThread(()->
// Initialize the Google Mobile Ads SDK on a background thread.MobileAds.initialize(context,this::logAdapterStatus)).start();}privatevoidlogAdapterStatus(InitializationStatusinitializationStatus){// Check each adapter's initialization status.Map<String,AdapterStatus>statusMap=initializationStatus.getAdapterStatusMap();for(Map.Entry<String,AdapterStatus>entry:statusMap.entrySet()){StringadapterClass=entry.getKey();AdapterStatusstatus=entry.getValue();Log.d(TAG,String.format("Adapter name: %s, Description: %s, Latency: %d",adapterClass,status.getDescription(),status.getLatency()));}}
funinitialize(context:Context){CoroutineScope(Dispatchers.IO).launch{// Initialize the Google Mobile Ads SDK on a background thread.MobileAds.initialize(context,::logAdapterStatus)}}privatefunlogAdapterStatus(initializationStatus:InitializationStatus){// Check each adapter's initialization status.for((adapterClass,status)ininitializationStatus.adapterStatusMap){Log.d(TAG,"Adapter: $adapterClass, Status: ${status.description}, Latency: ${status.latency}ms",)}}
Kiểm tra xem lớp bộ chuyển đổi nào của mạng quảng cáo đã tải quảng cáo
Dưới đây là một số mã mẫu sẽ ghi nhật ký tên lớp mạng quảng cáo cho quảng cáo biểu ngữ:
Java
ResponseInforesponseInfo=ad.getResponseInfo();StringadapterClassName=null;if(responseInfo!=null){adapterClassName=responseInfo.getMediationAdapterClassName();}Log.d(TAG,"Adapter class name: "+adapterClassName);
Hãy tham khảo tài liệu về ResponseInfo của getMediationAdapterClassName()
để biết thông tin chi tiết về phương thức này.
Khởi chạy đối tượng quảng cáo thông qua một phiên bản Activity
Trong hàm dựng cho một đối tượng quảng cáo mới (ví dụ: AdView), bạn phải truyền vào một đối tượng thuộc loại Context.
Hệ thống sẽ chuyển Context này sang các mạng quảng cáo khác khi bạn sử dụng tính năng dàn xếp. Một số mạng quảng cáo yêu cầu Context hạn chế hơn thuộc loại Activity và không thể phân phát quảng cáo nếu không có phiên bản Activity. Do đó, bạn nên chuyển vào một thực thể Activity khi khởi chạy các đối tượng quảng cáo để xác minh trải nghiệm nhất quán với các mạng quảng cáo được dàn xếp.
Sử dụng quảng cáo biểu ngữ với tính năng Dàn xếp AdMob
Hãy nhớ tắt tính năng làm mới trong tất cả giao diện người dùng nguồn quảng cáo bên thứ ba cho đơn vị quảng cáo biểu ngữ được dùng trong hoạt động dàn xếp AdMob. Điều này sẽ giúp tránh xảy ra hiện tượng làm mới hai lần do AdMob cũng kích hoạt một lần làm mới dựa trên tốc độ làm mới của đơn vị quảng cáo biểu ngữ.
Sử dụng quảng cáo gốc với tính năng Dàn xếp AdMob
Dưới đây là một số phương pháp hay nhất bạn cần cân nhắc áp dụng khi triển khai quảng cáo gốc trong tính năng Dàn xếp của AdMob.
Chính sách về việc hiển thị quảng cáo gốc
Mỗi mạng quảng cáo đều có chính sách riêng. Khi sử dụng tính năng dàn xếp, bạn nên lưu ý rằng ứng dụng của bạn vẫn phải tuân thủ các chính sách của mạng được dàn xếp đã cung cấp quảng cáo.
Sử dụng loadAd() thay vì loadAds()
Phương thức loadAds() chỉ phân phát quảng cáo của Google. Đối với quảng cáo dàn xếp, hãy sử dụng loadAd().
Luật về quyền riêng tư của các tiểu bang ở Hoa Kỳ và GDPR
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-09-06 UTC."],[[["\u003cp\u003eAdMob Mediation lets you maximize ad revenue by serving ads from multiple ad networks, including AdMob and third-party sources, all in one place.\u003c/p\u003e\n"],["\u003cp\u003eBefore integrating mediation, ensure you have the necessary account permissions and integrate the desired ad format (banner, interstitial, native, rewarded, or rewarded interstitial) into your app.\u003c/p\u003e\n"],["\u003cp\u003eIt is crucial to initialize the Mobile Ads SDK and wait for initialization to complete before loading ads to ensure all ad networks participate in the first ad request.\u003c/p\u003e\n"],["\u003cp\u003eWhen using AdMob Mediation, remember to disable refresh in third-party ad source UIs for banner ads to prevent double refreshing and adhere to each ad network's policies for native ad presentation.\u003c/p\u003e\n"],["\u003cp\u003eTo comply with privacy regulations like GDPR or US state privacy laws, add your mediation partners to the AdMob Privacy & Messaging settings to avoid ad serving disruptions.\u003c/p\u003e\n"]]],["AdMob Mediation serves ads from multiple sources, maximizing fill rates. Before configuring, verify account permissions and integrate desired ad formats (banner, interstitial, native, rewarded). Initialize the Mobile Ads SDK and wait for adapter initialization completion. Pass an `Activity` instance when creating ad objects. Disable refresh in third-party ad sources for banner units and utilize `loadAd()` for mediated native ads. Comply with U.S. states privacy laws and GDPR by adding mediation partners in AdMob's Privacy & messaging settings.\n"],null,["AdMob Mediation is a feature lets you serve ads to your apps from\nmultiple sources, including the AdMob Network and third-party ad sources, in\none place. AdMob Mediation helps maximize your fill rate and increase your\nmonetization by sending ad requests to multiple networks to verify you find the\nbest available network to serve ads.\n[Case study](//admob.google.com/home/resources/cookapps-grows-ad-revenue-86-times-with-admob-rewarded-ads-and-mediation/).\n\n\nPrerequisites **Important:** Verify that you have the necessary account permissions to complete the mediation configuration. These permissions include access to inventory management, app access, and privacy and messaging features. See [Manage user access to your\n| account](//support.google.com/admob/answer/2784628) for details.\n\nBefore you can integrate mediation for an ad format, you need to integrate that\nad format into your app:\n\n- [Banner Ads](/admob/android/banner)\n- [Interstitial Ads](/admob/android/interstitial)\n- [Native Ads](/admob/android/native)\n- [Rewarded Ads](/admob/android/rewarded)\n- [Rewarded Interstitial\n Ads](/admob/android/rewarded-interstitial)\n\nNew to mediation? Read\n\n[Overview of AdMob Mediation](//support.google.com/admob/answer/3063564).\n\nFor bidding:\n\nGoogle Mobile Ads SDK 18.3.0\nor higher.\n\nInitialize Google Mobile Ads SDK\n\nThe quick start guide shows you how to [initialize the Google Mobile Ads SDK](/admob/android/quick-start#initialize_the_mobile_ads_sdk).\nDuring that initialization call, mediation adapters also\nget initialized. It is important to wait for initialization to complete before\nyou load ads in order to verify full participation from every ad network on the\nfirst ad request.\n| **Important:** Bidding adapters require you to explicitly initialize Google Mobile Ads SDK.\n\nThe following sample code shows how you can check each adapter's initialization\nstatus prior to making an ad request. \n\nJava \n\n public void initialize(Context context) {\n new Thread(\n () -\u003e\n // Initialize the Google Mobile Ads SDK on a background thread.\n MobileAds.initialize(context, this::logAdapterStatus))\n .start();\n }\n\n private void logAdapterStatus(InitializationStatus initializationStatus) {\n // Check each adapter's initialization status.\n Map\u003cString, AdapterStatus\u003e statusMap = initializationStatus.getAdapterStatusMap();\n for (Map.Entry\u003cString, AdapterStatus\u003e entry : statusMap.entrySet()) {\n String adapterClass = entry.getKey();\n AdapterStatus status = entry.getValue();\n Log.d(\n TAG,\n String.format(\n \"Adapter name: %s, Description: %s, Latency: %d\",\n adapterClass, status.getDescription(), status.getLatency()));\n }\n } \n https://github.com/googleads/googleads-mobile-android-examples/blob/ccc290a583d7f552bdcf81ea76adc05beaa43f0b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/MediationSnippets.java#L30-L50\n\nKotlin \n\n fun initialize(context: Context) {\n CoroutineScope(Dispatchers.IO).launch {\n // Initialize the Google Mobile Ads SDK on a background thread.\n MobileAds.initialize(context, ::logAdapterStatus)\n }\n }\n\n private fun logAdapterStatus(initializationStatus: InitializationStatus) {\n // Check each adapter's initialization status.\n for ((adapterClass, status) in initializationStatus.adapterStatusMap) {\n Log.d(\n TAG,\n \"Adapter: $adapterClass, Status: ${status.description}, Latency: ${status.latency}ms\",\n )\n }\n } \n https://github.com/googleads/googleads-mobile-android-examples/blob/ccc290a583d7f552bdcf81ea76adc05beaa43f0b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/MediationSnippets.kt#L25-L41\n\nCheck which ad network adapter class loaded the ad\n\nHere is some sample code that logs the ad network class name for a banner ad: \n\nJava \n\n ResponseInfo responseInfo = ad.getResponseInfo();\n String adapterClassName = null;\n if (responseInfo != null) {\n adapterClassName = responseInfo.getMediationAdapterClassName();\n }\n Log.d(TAG, \"Adapter class name: \" + adapterClassName); \n https://github.com/googleads/googleads-mobile-android-examples/blob/ccc290a583d7f552bdcf81ea76adc05beaa43f0b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/ResponseInfoSnippets.java#L46-L51\n\nKotlin \n\n Log.d(TAG, \"Adapter class name:\" + ad.responseInfo?.mediationAdapterClassName) \n https://github.com/googleads/googleads-mobile-android-examples/blob/ccc290a583d7f552bdcf81ea76adc05beaa43f0b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/ResponseInfoSnippets.kt#L42-L42\n\nRefer to the `ResponseInfo` documentation on `getMediationAdapterClassName()`\nfor details about this method.\n\nInitialize your ad object with an Activity instance\n\nIn the constructor for a new ad object (for example,\n\n[`AdView`](/admob/android/reference/com/google/android/gms/ads/AdView)),\n\nyou must pass in an object of type\n[`Context`](//developer.android.com/reference/android/content/Context.html).\nThis `Context` is passed on to other ad networks when using mediation. Some\nad networks require a more restrictive `Context` that is of type\n[`Activity`](//developer.android.com/reference/android/app/Activity.html)\nand may not be able to serve ads without an `Activity` instance. Therefore,\nwe recommend passing in an `Activity` instance when initializing ad objects\nto verify a consistent experience with your mediated ad networks.\n\n\u003cbr /\u003e\n\nUse banner ads with AdMob Mediation\n\nMake sure to disable refresh in all third-party ad source UIs for banner ad\nunits used in AdMob Mediation. This prevents a double refresh since\nAdMob also triggers a refresh based on your banner ad unit's\nrefresh rate.\n\nUse native ads with AdMob Mediation\n\nThe following are some best practices to consider when implementing native ads\nin AdMob Mediation.\n\nNative ad presentation policy\n: Each ad network has its own policies. When using mediation, it's important to\n remember that your app still needs to abide by the policies of the mediated\n network that provided the ad.\n\nUse `loadAd()` instead of `loadAds()`\n: The `loadAds()` method serves only Google ads. For mediated ads, use\n `loadAd()` instead.\n\nUS states privacy laws and GDPR\n\nIf you need to comply with the [U.S. states privacy\nlaws](//support.google.com/admob/answer/9561022) or [General Data Protection\nRegulation (GDPR)](//support.google.com/admob/answer/7666366), follow the\nsteps in [US state regulations\nsettings](//support.google.com/admob/answer/10860309) or [GDPR\nsettings](//support.google.com/admob/answer/10113004#adding_ad_partners_to_published_gdpr_messages) to add your\nmediation partners in AdMob Privacy \\& messaging's\nUS states or GDPR ad partners list. Failure to do so can lead to partners\nfailing to serve ads on your app.\n\nLearn more about enabling [restricted data processing\n(RDP)](/admob/android/privacy/us-states) and obtaining GDPR consent with the\n[Google User Messaging Platform (UMP) SDK](/admob/android/privacy)."]]