Özel etkinlikler, yayıncıların AdMob olmayan bir üçüncü taraf reklam ağı için şelale uyumlulaştırması eklemek amacıyla uyumlulaştırma desteklenen reklam ağlarının tümünü kapsar. Bu kılavuzda, Android ve iOS için geliştirilmiş mevcut bir özel etkinliğin Unity projesinde iOS.
Ön koşullar
Başlayın bölümünü tamamlayın. Birliğiniz uygulamada Google Mobile Ads Unity eklentisi içe aktarılmıştır.
Android ve iOS için geliştirilmiş özel etkinlik bağdaştırıcıları. Özel oluşturmak için etkinlik bağdaştırıcıları, aşağıdaki adımları uygulayarak Android ve iOS.
Özel etkinlik tanımlama
Özel bir etkinliğin uyumlulaştırmaya katılabilmesi için ilgili etkinliğin AdMob web arayüzünde tanımlanmalıdır. Bir özel etkinlik için Android ve iOS uyumlulaştırma grupları.
Bu ekran görüntüsünde, bazı örnek özel etkinlik ayarları gösterilmektedir:
Parametreleri doldurma | |
---|---|
Sınıf Adı (iOS) |
iOS için, özel etkinliği uygulayan sınıfın adını girin. Sınıfınız Swift uygulamasında kullanılıyorsa sınıf adının önüne
uygulama / çerçeve modülünün adı (örneğin,
Projenizde birden fazla hedef varsa veya projenizde birden çok hedef varsa hedef ad gereklidir
proje adı, hedef addan farklı. Hedef adı ile birlikte
şöyle görünür: |
Sınıf Adı (Android) | Android için Class Name öğesi için sağladığınız değerin şu olduğundan emin olun:
Android için tam sınıf adı (örneğin, com.google.ads.mediation.sample.customevent.SampleCustomEvent ).
|
Şirket | Etkinlik için benzersiz bir ad girin. |
Parametre | Özel etkinliğinize bir dize bağımsız değişkeni iletmek istiyorsanız, örneğin reklam birimi kimliği. |
Özel etkinlik kitaplıklarını içe aktarın
Özel etkinliklerin çalışması için ek kitaplıkların eklenmesi gerekebilir gerekir. Örneğin, aşağıdaki kitaplıkları dahil etmeniz gerekebilir:
- Android üçüncü taraf SDK'sı
- Android üçüncü taraf özel etkinliği
- iOS üçüncü taraf reklam SDK'sı
- iOS üçüncü taraf özel etkinliği
Kütüphane türleri
Android veya iOS kodunu Unity projesine aktarmanın çeşitli yolları vardır. şunları içerir:
- Harici Bağımlılığı kullanarak önceden oluşturulmuş Android veya iOS yapılarını içe aktarma Unity yöneticisi
- AAR eklentilerini ve Android kitaplıklarını içe aktarma
- Java ve Kotlin kaynak dosyalarını içe aktarma
- iOS kaynak dosyalarını ve statik kitaplıkları içe aktarma
Kullandığınız kitaplıkların nasıl paketlendiğine bağlı olarak farklı bir içe aktarma stratejisi kullanır. Her bir seçenek daha sonra daha ayrıntılı bir şekilde açıklanacaktır.
(Önerilir) Önceden oluşturulmuş Android veya iOS yapılarını içe aktarın
Harici Unity için Bağımlılık Yöneticisi Bu eklenti, GoogleMobileAds eklentisine dahildir.
Mevcut yapıları içe aktarmak için bir yapılandırma dosyası oluşturarak içe aktarılmalıdır. Dosya adı ve yolu aşağıdaki koşullara tabidir:
- Dosya,
/Editor/
klasöründe bulunmalıdır. - Dosya adı
Dependencies.xml
ile bitmelidir.
Örneğin, varsayımsal bir reklam ağı için özel etkinlik bağdaştırıcılarını içe aktarmak üzere
dosyayı AdPub
ise oluşturun:
Assets/AdPub/Editor/AdPubDependencies.xml
Sonra, AdPubDependencies.xml
dosyasında bağımlılıklarınızı tanımlayın. Kurallar
yapılandırma adımlarını şu adreste bulabilirsiniz:
Unity Building için Harici Bağımlılık Yöneticisi
Başlatıldı. İlgili içeriği oluşturmak için kullanılan
Aşağıdaki kod snippet'i, Android ve iOS SDK ile özel etkinliği içerir.
varsayımsal bir "AdPub" için kitaplıklar reklam ağında çalışır.
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>
Özel etkinlik yapınızın gerekli reklama zaten bağımlılığı varsa ağ SDK'sını kullanıyorsanız SDK bağımlılığını açıkça tanımlamanız gerekmez: Örnek
Harici Bağımlılık Yöneticisi, yapılandırma değişikliklerini otomatik olarak izler ve bağımlılıkları çözmekten bahsedeceğiz. Alternatif olarak, şu menü komutunu kullanın:
Assets > External Dependency Manager > Android Resolver > Force Resolve
AAR eklentilerini ve Android kitaplıklarını içe aktarma
Unity, *.aar
dosyalarının yanı sıra Android kitaplık projelerinin de içe aktarılmasını destekler. Eğer
Android özel etkinliğiniz bu şekilde paketlenmiştir. Daha fazla bilgi için AAR eklentileri ve Android
Kitaplıklar'da bu kitapla ilgili talimatlar için
Unity projenize nasıl dahil edeceğinizi.
Java ve Kotlin kaynak dosyalarını içe aktarma
Unity 2018.2 veya sonraki sürümlerden biri (Android özel etkinlik kodunuzdaysa)
için derlenmemiş *.java
veya *.kt
dosyalarından yararlanmak istiyorsanız Java veya Kotlin kaynak dosyalarını kullanabilirsiniz.
.
iOS kaynak dosyalarını ve statik kitaplıkları içe aktarma
Unity; *.framework
yapıları, *.h
ve *.m
kaynak dosyalarını destekler. İçe aktarılıyor
iOS yapıları ve kaynak dosyaları, Unity'nin yerel reklam kılavuzunda açıklanmıştır
inceleyin.
Reklam inceleyici ile özel etkinlikleri test etme
Test amacıyla Reklam İnceleyici kullanılabilir doğru şekilde içe aktarılıp aktarılmadığını kontrol etmenizi sağlar. Reklam Denetleyici sadece hareketlerle veya minimum düzeyde kodla programlı bir şekilde açılabilir.
(İsteğe bağlı) C# komut dosyalarından üçüncü taraf SDK yerel yöntemlerini çağırma
Üçüncü taraf reklam ağı SDK'larının, şunları gerektirecek özel şartları olabilir: doğrudan Android veya iOS yöntemlerini çağırarak. Bu yöntemleri çağırma süreci aşağıdaki gibidir:
- Platform istemcileri için ortak bir arayüz tanımlayın
- Desteklenmeyen platformlar için varsayılan istemci uygulama
- Android yöntemlerini çağırmak için bir Android istemcisi uygulama
- iOS yöntemlerini çağırmak için bir iOS istemcisi uygulama
- Bir müşteriyi uygulama fabrika ayarlarına iOS ve Android istemcileri arasında geçiş yapma
- Tüm üçüncü taraf reklam ağı SDK'sı işlevlerine erişmek için bir API tanımlayın
Aşağıdaki bölüm, bu adımların varsayımsal bir dönüşümde nasıl "AdPub" adlı reklam ağı Android'de yöntemlere çağrı yapabilen bir C# API'sinde ve iOS:
Android
package com.adpub.android;
public class AdPubSdk
{
public static void setHasUserConsent(boolean hasUserConsent);
}
iOS
@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end
Platform istemcileri için ortak bir arayüz tanımlayın
Temel kodu temsil eden bir yöntemle IAdPubClient
arayüzü oluşturun
Android ve iOS API.
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);
}
}
Desteklenmeyen platformlar için varsayılan istemci tanımlama
Aşağıdaki özelliklere sahip IAdPubClient
arayüzünü uygulayarak bir DefaultClient
sınıfı oluşturun:
yöntem adını günlüğe kaydeder. Unity düzenleyicide ve diğer tüm platformlarda
diğer platformlara odaklanmanızı sağlar.
Assets/AdPub/Common/DefaultClient.cs
namespace AdPub.Common
{
public class DefaultClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
Debug.Log("SetHasUserConsent was called.");
}
}
}
iOS platform istemcisini uygulama
Şu tarihte IAdPubClient
arayüzünü uygulayan bir iOSAdPubClient
sınıfı oluşturun:
iOS. Bu uygulama,
Çağrı yapılacak InteropServices
iOS AdPubSdk
sınıfındaki setHasUserConsent()
yöntemi.
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
Sonra, tanımlanan GADUAdPubSetHasUserConsent()
yöntemini uygulayın
bölümünü ziyaret edin. C
yöntemiyle AdPubClientBridge.m
oluşturma
Unity'den yöntem çağrısını işlemek ve çağırmak için GADUAdPubSetHasUserConsent()
AdPubSDK
.
AdPubClientBridge
, bir iOS kaynak dosyasıdır ve
Unity'nin yerel reklam kılavuzunda açıklandığı şekilde Plugins/iOS
klasörü
hakkında daha fazla bilgi edinin.
Assets/AdPub/Plugins/iOS/AdPubClientBridge.m
#import <AdPubSDK/AdPubSDK.h>
void GADUAdPubSetHasUserConsent(BOOL hasUserConsent) {
[AdPubSDK setHasUserConsent:hasUserConsent];
}
Android platform istemcisini uygulama
Şu tarihte IAdPubClient
arayüzünü uygulayan bir AndroidAdPubCient
sınıfı oluşturun:
Android Bu uygulama, Android Java yardımcısını
sınıflar
işlevini çağırın.setHasUserConsent()
Android Java yardımcı sınıfları yalnızca Android
derleme hatalarını önlemek için UNITY_ANDROID
derleyiciyi kullanın
sarmalama yönergesi
kodu snippet'inde gösterildiği gibi ekleyin. Alternatif olarak Assembly
tanımlar
.
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
Doğru istemci uygulamasını döndürmek için fabrika yöntemi oluşturma
Artık her platformda istemci uygulamalarını bildiğinize göre
Doğru uygulamasını döndürmek için AdPubClientFactory
sınıfını kullanın.
Çalışma zamanı platformuna bağlı olarak IAdPubClient
arayüzü. Bu sınıfta kullanılanlar
derleyici
yönergelerini
doğru IAdPubClient
istemciyi döndürür.
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
}
}
}
Her arayüz yöntemi için herkese açık bir API tanımlayın
AdPubApi
IAdPubClient
arayüzü. Bu sınıf, AdPubClientFactory
uygulamasını kullanarak
IAdPubClient
örneğinin bir örneğidir ve temel SDK için bu istemciyi çağırır.
işlevler sunar.
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);
}
}
}
Yeni tanımlanan API'nizi çağırın
Yukarıda tanımlanan API'yi şu şekilde çağırabilirsiniz:
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);
}
}
Diğer üçüncü taraf reklam ağı bağdaştırıcısı örnekleri
Google Mobil Reklamlar Unity eklentisi GitHub'ı ziyaret edin veri deposu C# API'lerini uygulayan üçüncü taraf uyumlulaştırma bağdaştırıcılarına ilişkin diğer örnekler için sarmalama özelliğini kullanabilirsiniz.