Peristiwa kustom memungkinkan penayang yang menggunakan mediasi AdMobuntuk menambahkan mediasi waterfall bagi jaringan iklan pihak ketiga yang bukan salah satu jaringan iklan yang didukung. Panduan ini menjelaskan cara menggunakan peristiwa kustom yang ada yang dibuat untuk Android dan iOS dalam project Unity.
Prasyarat
Selesaikan Mulai. Aplikasi Unity Anda seharusnya sudah mengimpor plugin Google Mobile Ads Unity.
Adaptor peristiwa kustom yang sudah dibuat untuk Android dan iOS. Untuk membuat adaptor peristiwa kustom, lihat panduan peristiwa kustom kami diAndroid daniOS.
Menentukan peristiwa kustom
Agar peristiwa kustom dapat berpartisipasi dalam mediasi, peristiwa kustom harus ditentukan di antarmuka web AdMob . Tambahkan peristiwa kustom ke grup mediasi Android dan iOS Anda.
Screenshot ini menampilkan beberapa contoh setelan peristiwa kustom:
Cara mengisi parameter | |
---|---|
Nama Kelas (iOS) |
Untuk iOS, masukkan nama class yang mengimplementasikan peristiwa kustom. Jika class Anda diterapkan di Swift, Anda perlu menambahkan awalan pada nama class dengan
nama modul aplikasi / frameworknya (misalnya,
Nama target diperlukan jika Anda memiliki beberapa target dalam project atau jika
nama project berbeda dengan nama target. Dengan nama target, akan terlihat seperti ini: |
Nama Kelas (Android) | Untuk Android, pastikan nilai yang Anda berikan untuk Class Name adalah
nama class yang sepenuhnya memenuhi syarat untuk Android (misalnya com.google.ads.mediation.sample.customevent.SampleCustomEvent ).
|
Label | Masukkan nama unik untuk peristiwa. |
Parameter | Jika Anda ingin meneruskan argumen string ke peristiwa kustom, misalnya, ID unit iklan. |
Mengimpor library peristiwa kustom
Peristiwa kustom mungkin memerlukan library tambahan untuk disertakan agar berfungsi dengan benar. Misalnya, Anda mungkin perlu menyertakan library berikut:
- SDK pihak ketiga Android
- Peristiwa kustom pihak ketiga Android
- SDK iklan pihak ketiga iOS
- Peristiwa kustom pihak ketiga iOS
Jenis library
Ada beberapa cara untuk mengimpor kode Android atau iOS ke dalam project Unity, termasuk:
- Mengimpor artefak Android atau iOS bawaan menggunakan External Dependency Manager untuk Unity
- Mengimpor plugin AAR dan library Android
- Mengimpor file sumber Java dan Kotlin
- Mengimpor file sumber iOS dan library statis
Bergantung pada cara library yang Anda gunakan dikemas, Anda mungkin memerlukan strategi impor yang berbeda untuk setiap library. Setiap opsi akan dibahas secara lebih mendetail nanti.
(Direkomendasikan) Mengimpor artefak Android atau iOS yang sudah di-build
Impor artefak bawaan dari Maven atau CocoaPods menggunakan External Dependency Manager untuk Unity. Plugin ini disertakan dengan plugin GoogleMobileAds.
Untuk mengimpor artefak yang ada, buat file konfigurasi untuk menentukan impor Anda. Nama file dan jalur memiliki persyaratan berikut:
- File harus ada di folder
/Editor/
. - Nama file harus diakhiri dengan
Dependencies.xml
.
Misalnya, untuk mengimpor adaptor peristiwa kustom untuk jaringan iklan hipotetis
bernama AdPub
, buat file:
Assets/AdPub/Editor/AdPubDependencies.xml
Selanjutnya, tentukan dependensi Anda di dalam file AdPubDependencies.xml
. Aturan
untuk mengonfigurasi impor dapat ditemukan di
External Dependency Manager for Unity Getting
Started. Cuplikan kode berikut menyertakan SDK Android dan iOS serta library peristiwa kustom untuk jaringan iklan "AdPub" hipotetis.
Assets/AdPub/Editor/AdPubDependencies.xml
<dependencies>
<androidPackages>
<androidPackage spec="com.adpub.android:adpub-sdk:1.0.0" />
<androidPackage spec="com.adpub.android:adpub-custom-event:1.0.0">
<repositories>
<repository>https://repo.maven.apache.org/maven2/</repository>
<repository>https://dl.google.com/dl/android/maven2/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="AdPubSDK" version="1.0" />
<iosPod name="AdPubCustomEvent" version="1.0">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
Jika artefak peristiwa kustom Anda sudah memiliki dependensi pada SDK jaringan iklan yang diperlukan, Anda tidak perlu menentukan dependensi SDK secara eksplisit: Contoh
Pengelola Dependensi Eksternal secara otomatis memantau perubahan konfigurasi dan me-resolve dependensi. Anda juga dapat menjalankan resolusi manual dengan perintah menu berikut:
Assets > External Dependency Manager > Android Resolver > Force Resolve
Mengimpor plugin AAR dan library Android
Unity mendukung pengimporan file *.aar
serta project library Android. Jika
peristiwa kustom Android Anda dikemas dengan cara ini, lihat Plugin AAR dan Library
Android untuk mengetahui petunjuk tentang
cara menyertakan file tersebut dalam project Unity Anda.
Mengimpor file sumber Java dan Kotlin
Mulai Unity 2018.2 atau yang lebih tinggi, jika kode peristiwa kustom Android Anda terdiri dari
file *.java
atau *.kt
yang tidak dikompilasi, Anda dapat menggunakan file sumber Java atau Kotlin
sebagai plugin.
Mengimpor file sumber dan library statis iOS
Unity mendukung artefak *.framework
, file sumber *.h
, dan *.m
. Mengimpor
artefak dan file sumber iOS dijelaskan dalam panduan Unity untuk plugin
native.
Menguji peristiwa kustom dengan pemeriksa iklan
Pemeriksa iklan dapat digunakan untuk menguji apakah peristiwa kustom telah diimpor dengan benar ke aplikasi Anda. Pemeriksa iklan dapat dibuka hanya dengan gestur atau secara terprogram dengan kode minimal.
(Opsional) Memanggil metode native SDK pihak ketiga dari skrip C#
SDK jaringan iklan pihak ketiga dapat memiliki persyaratan khusus yang mengharuskan memanggil metode Android atau iOS secara langsung. Proses untuk memanggil metode ini secara langsung adalah sebagai berikut:
- Menentukan antarmuka umum untuk klien platform
- Mengimplementasikan klien default untuk platform yang tidak didukung
- Mengimplementasikan klien Android untuk memanggil metode Android
- Mengimplementasikan klien iOS untuk memanggil metode iOS
- Mengimplementasikan factory klien untuk beralih secara kondisional antara klien iOS dan Android
- Menentukan API untuk mengakses semua fungsi SDK jaringan iklan pihak ketiga
Bagian berikut menunjukkan cara menerapkan langkah-langkah ini untuk jaringan iklan hipotetis yang disebut "AdPub" di API C# yang dapat memanggil metode di Android dan iOS:
Android
package com.adpub.android;
public class AdPubSdk
{
public static void setHasUserConsent(boolean hasUserConsent);
}
iOS
@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end
Menentukan antarmuka umum untuk klien platform
Buat antarmuka IAdPubClient
dengan metode yang mewakili API Android dan iOS
yang mendasarinya.
Assets/AdPub/Common/IAdPubClient.cs
namespace AdPub.Common
{
public interface IAdPubClient
{
///<summary>
/// Sets a flag indicating if the app has user consent for advertisement.
///</summary>
void SetHasUserConsent(bool hasUserConsent);
}
}
Menentukan klien default untuk platform yang tidak didukung
Buat class DefaultClient
yang mengimplementasikan antarmuka IAdPubClient
yang
hanya mencatat nama metode. Gunakan implementasi ini untuk editor Unity dan semua
platform selain Android atau iOS.
Assets/AdPub/Common/DefaultClient.cs
namespace AdPub.Common
{
public class DefaultClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
Debug.Log("SetHasUserConsent was called.");
}
}
}
Mengimplementasikan klien platform iOS
Buat class iOSAdPubClient
yang mengimplementasikan antarmuka IAdPubClient
di
iOS. Implementasi ini menggunakan
InteropServices untuk memanggil
metode setHasUserConsent()
di class AdPubSdk
iOS.
Assets/AdPub/Platforms/iOS/iOSAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on iOS.
#if UNITY_IOS
// Reference InteropServices to include the DLLImportAttribute type.
using System.Runtime.InteropServices;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class iOSAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
GADUAdPubSetHasUserConsent(hasUserConsent);
}
[DllImport("__Internal")]
internal static extern void GADUAdPubSetHasUserConsent(bool hasUserConsent);
}
}
#endif
Selanjutnya, terapkan metode GADUAdPubSetHasUserConsent()
yang ditentukan
di atas. Buat AdPubClientBridge.m
dengan metode C
GADUAdPubSetHasUserConsent()
untuk menangani panggilan metode dari Unity, dan panggil
AdPubSDK
.
AdPubClientBridge
adalah file sumber iOS dan harus ditempatkan di dalam
folder Plugins/iOS
seperti yang dijelaskan dalam panduan Unity untuk plugin
native.
Assets/AdPub/Plugins/iOS/AdPubClientBridge.m
#import <AdPubSDK/AdPubSDK.h>
void GADUAdPubSetHasUserConsent(BOOL hasUserConsent) {
[AdPubSDK setHasUserConsent:hasUserConsent];
}
Mengimplementasikan klien platform Android
Buat class AndroidAdPubCient
yang mengimplementasikan antarmuka IAdPubClient
di
Android. Implementasi ini menggunakan class helper
Java Android
untuk memanggil metode statis Android setHasUserConsent()
.
Karena class helper Java Android hanya tersedia selama runtime
Android, Anda dapat mencegah error kompilasi menggunakan direktif
compiler UNITY_ANDROID
untuk menggabungkan
class seperti yang ditunjukkan dalam cuplikan kode. Atau, Anda dapat menggunakan Definisi
assembly
di Unity 2017.4 dan yang lebih baru untuk menyelesaikan masalah ini.
Assets/AdPub/Platforms/Android/AndroidAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on Android.
#if UNITY_ANDROID
// Reference the UnityEngine namespace which contains the JNI Helper classes.
using UnityEngine;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class AndroidAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
// Make a reference to the com.adpub.AdPubSDK.
AndroidJavaClass adPubSdk = new AndroidJavaClass("com.adpub.AdPubSdk");
// Call the native setHasUserConsent method of com.adpub.AdPubSDK.
adPubSdk.CallStatic("setHasUserConsent", hasUserConsent);
}
}
}
#endif
Membuat metode factory untuk menampilkan implementasi klien yang benar
Setelah Anda memiliki implementasi klien untuk setiap platform, buat
class AdPubClientFactory
untuk menampilkan implementasi antarmuka
IAdPubClient
yang benar, bergantung pada platform runtime. Class ini menggunakan
direktif
compiler untuk
menampilkan klien IAdPubClient
yang benar.
Assets/AdPub/Common/AdPubClientFactory.cs
namespace AdPub.Common
{
public class AdPubClientFactory
{
// Return the correct platform client.
public static IAdPubClient GetClient()
{
#if !UNITY_EDITOR && UNITY_ANDROID
return new AdPub.Platforms.Android.AndroidAdPubClient();
#elif !UNITY_EDITOR && UNITY_IOS
return new AdPub.Platforms.iOS.iOSAdPubClient();
#else
// Returned for the Unity Editor and unsupported platforms.
return new DefaultClient();
#endif
}
}
}
Menentukan API publik untuk setiap metode antarmuka
Buat class AdPubApi
yang memiliki panggilan metode untuk setiap metode klien di
antarmuka IAdPubClient
Anda. Class ini menggunakan AdPubClientFactory
untuk mendapatkan instance IAdPubClient
dan memanggil klien tersebut untuk fungsi SDK yang mendasarinya.
Assets/AdPub/AdPubApi.cs
using AdPub.Common;
namespace AdPub
{
public class AdPubApi
{
private static readonly IAdPubClient client = GetAdPubClient();
// Returns the correct client for the current runtime platform.
private static IAdPubClient GetAdPubClient()
{
return AdPubClientFactory.GetClient();
}
// Sets the user consent using the underlying SDK functionality.
public static void SetHasUserConsent(bool hasUserConsent)
{
client.SetHasUserConsent(hasUserConsent);
}
}
}
Memanggil API yang baru ditentukan
Berikut cara memanggil API yang ditentukan di atas:
Assets/Scripts/AdPubController.cs
using UnityEngine;
using AdPub;
public class AdPubController : MonoBehaviour
{
// TODO: Get consent from the user and update this userConsent field.
public bool userConsent;
// Called on startup of the GameObject it's assigned to.
public void Start()
{
// Pass the user consent to AdPub.
AdPubApi.SetHasUserConsent(userConsent);
}
}
Contoh adaptor jaringan iklan pihak ketiga lainnya
Buka repositori GitHub plugin Google Mobile Ads Unity untuk mengetahui contoh tambahan adaptor mediasi pihak ketiga yang menerapkan API C# untuk menggabungkan panggilan ke metode iOS dan Android.