Güvenli sinyaller, bir istemci cihazın topladığı ve belirli teklif verenlerle paylaştığı kodlanmış verilerdir. Bu sayfada, Interactive Media Ads (IMA) SDK'sını kullanarak güvenli sinyalleri Google Ad Manager'a toplama ve gönderme konusunda size yol gösterilir.
Başlamadan önce
Devam etmeden önce Android için IMA SDK'nın 3.29.0 veya daha yeni bir sürümüne sahip olduğunuzu doğrulayın.
Güvenli sinyal adaptörü arayüzünü oluşturma
Güvenli sinyalleri toplamak ve sağlamak için şu arayüzü uygulayan sınıflar oluşturun:
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
}
Adaptörü başlatma
IMA SDK, bağdaştırıcının başlatma yöntemini çağırarak her bağdaştırıcıyı bir kez başlatır. Şifreleme bağımlılıklarını başlatmak, önbellekleri ayarlamak veya tüm sinyal toplama çağrılarında aynı kalan sinyalleri önceden hesaplamak için bu yöntemi uygulayın.
Aşağıdaki örnekte bağdaştırıcı başlatılıyor:
...
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
// If signal collection fails, call callback.onFailure();
// callback.onFailure(new Exception("Signal collection failed."));
}
...
Sinyal toplama
Reklam isteği başlatılmadan önce IMA SDK, sinyal toplama yöntemini eşzamansız olarak çağırır. Bu sinyal toplayıcı yöntemler, şifrelenmiş sinyalleri iletmek veya bir hatayı bildirmek için geri çağırma işlevi içerir.
Aşağıdaki örneklerde, geri çağırma işlevi aracılığıyla güvenli sinyaller toplanır:
...
/**
* Invokes your SDK to collect, encrypt and pass the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
...
Hata bildirme
Adaptör sınıfınızı kullanan kullanıcılarla iletişim kurmak için sinyal toplama sırasında tüm hataları bildirin ve bunları sinyal toplayıcı geri çağırma işlevine iletin. Bu işlem, bağdaştırıcınızın uygulamalara entegrasyonu sırasında ortaya çıkan sorunları giderir.
Görüntülenebilecek hatalar şunlardır:
- SDK'nız veya bir bağımlılık uygulamada bulunmuyor.
- SDK'nız veya bir bağımlılık, çalışmak için gerekli izne ya da kullanıcı iznine sahip değil.
Adaptör sürümünü belirtin
İş akışınızda bağdaştırıcının sürümünü belirttiğinizi doğrulayın. IMA SDK, her reklam isteğine bağdaştırıcı sürümünüzü ekler ve bunları bir teklif isteğindeki güvenli sinyallerle birlikte iletir.
Teklif isteğinde, bağdaştırıcı sürümüne bağlı olarak bağdaştırıcının güvenli sinyalleri oluşturmak için kullandığı şifreleme, kodlama ve biçimlendirme ayrıntılarını belirleyebilirsiniz.
Aşağıdaki örnekte bağdaştırıcı sürümü belirtilmektedir:
...
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
...
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
...
SDK çalışma zamanı sürümünü döndürür.
Adaptörünüzü, SDK'nızın birden fazla sürümüyle çalışacak şekilde tasarlayabilirsiniz. Adaptörün birden fazla sürümle çalışması için SDK'nın çalışma zamanı sürümünü döndürdüğünüzü doğrulayın. IMA SDK, her reklam isteğinde çalışma zamanı sürümünü bağdaştırıcı sürümüyle birlikte içerir.
Aşağıdaki örneklerde SDK çalışma zamanı sürümü isteniyor ve döndürülüyor:
...
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
...
Adaptörü Google'a kaydedin
Google'ın bağdaştırıcıyı sinyal toplama için yetkilendirmesi amacıyla Android paket adını veya Google ile kaydetmeniz gerekir. IMA SDK yalnızca Google'a kaydettiğiniz bağdaştırıcıları başlatır.
Adaptörü doğrulama
Adaptörü doğrulamak için aşağıdaki bölümleri tamamlayın:
Test uygulamasını yapılandırma
Adaptörü doğrulamadan önce test uygulamasını yapılandırın. Aşağıdaki adımları tamamlayın:
IMA SDK'sına ait bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (ör.
app/build.gradle
) ekleyin:dependencies { implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0' }
Bağdaştırıcınız ve SDK'nız gibi derleme bağımlılıkları ekleyin.
Sinyalleri doğrulama
Adaptörünüzün sinyal gönderdiğini doğrulamak için uygulamanızın reklam isteği trafiğini izlemek üzere bir ağ proxy'si kullanın. Başarılı olursa sinyalleri her reklam isteğinde görürsünüz.
Eksiksiz örnekleri inceleyin
Bu bölümde, tüm adımların tamamlanmış örneği yer alır ve referansınız için kullanılabilir.
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.VersionInfo;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsCollectSignalsCallback;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsInitializeCallback;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
try {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
} catch (Exception e) {
// Pass initialization failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* Invokes your SDK to collect, encrypt and send the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
}