Bu kılavuz, Firebase kullanmadan AdMob ile bir C++ uygulamasından para kazanmak isteyen yayıncılar içindir. Uygulamanıza Firebase'i dahil etmeyi planlıyorsanız veya bunu düşünüyorsanız bu kılavuzun Firebase ile AdMob sürümüne bakın.
Google Mobile Ads C++ SDK'sını bir uygulamaya entegre etmek, reklam göstermenin ve gelir elde etmenin ilk adımıdır. SDK'yı entegre ettikten sonra geçiş reklamı veya ödüllü reklam gibi bir reklam biçimi seçebilir ve bu biçimi uygulamak için gereken adımları takip edebilirsiniz.
Google Mobile Ads C++ SDK'sı, Google Mobile Ads iOS ve Android SDK'larını sarmalar ve yalnızca bu platformlarda kullanılabilir. Google Mobile Ads C++ SDK'sı, eşzamansız işlemleri desteklemek için Firebase C++ yapılarını kullanır. Bu nedenle, firebase::gma ad alanında bulunur.
Bu kılavuzu ilk kez kullanıyorsanız Google Mobile Ads C++ test uygulamasını indirip takip etmenizi öneririz.
Ön koşullar
Android
- Android Studio 3.2 veya sonraki sürümleri kullanma
- Uygulamanızın derleme dosyasında aşağıdaki değerlerin kullanıldığından emin olun:
- 16 veya daha yüksek bir
minSdkVersion - 28 veya daha yüksek bir
compileSdkVersion
- 16 veya daha yüksek bir
iOS
- Xcode 13 veya sonraki bir sürümü kullanın.
- iOS 10.0 veya sonraki sürümleri hedefleme
AdMob hesabınızda uygulamanızı ayarlama
Aşağıdaki adımları uygulayarak uygulamanızı AdMob uygulaması olarak kaydedin:
AdMob hesabınızda oturum açın veya AdMob hesabı için kaydolun.
Uygulamanızı AdMob'a kaydedin. Bu adımda, bu kılavuzun ilerleyen bölümlerinde ihtiyaç duyacağınız benzersiz bir AdMob uygulama kimliğine sahip bir AdMob uygulaması oluşturulur.
Google Mobile Ads C++ SDK'sını yükleme
Google Mobile Ads C++ SDK'sı firebase::gma ad alanında bulunduğundan Firebase C++ SDK'sını indirin ve istediğiniz bir dizine açın.
Firebase C++ SDK'sı platforma özgü değildir ancak platforma özgü kitaplık yapılandırmaları gerektirir.
Android
CMake'i kullanmanızı öneririz ancak libfirebase_app.a ve libfirebase_gma.a öğelerini uygulamanıza bağlamak için ndk-build talimatlarını genel Firebase C++ SDK'sı Başlangıç Kılavuzumuzda bulabilirsiniz.
Projenizin
gradle.propertiesdosyasında, sıkıştırılmış dosyası açılan SDK'nın konumunu belirtin:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKProjenizin
settings.gradledosyasına aşağıdaki içeriği ekleyin:def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"Modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle
app/build.gradle) Google Mobile Ads C++ SDK'sının kitaplık bağımlılığını içeren aşağıdaki içeriği ekleyin.android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma }Projenizin
CMakeLists.txtdosyasına aşağıdaki içeriği ekleyin.# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")Tüm bağımlılıkların gerekli sürümlere sahip olduğundan emin olmak için uygulamanızı senkronize edin.
iOS
Bu bölümdeki adımlar, Google Mobile Ads C++ SDK'sını iOS projenize nasıl ekleyeceğinizi gösteren bir örnektir.
Aşağıdaki komutu çalıştırarak CocoaPods'un 1 veya sonraki bir sürümünü edinin:
sudo gem install cocoapods --preSıkıştırılmış dosyadan çıkarılan SDK'dan Google Mobile Ads pod'unu ekleyin.
Henüz bir Podfile dosyanız yoksa oluşturun:
cd APP_DIRECTORYpod initPod dosyanıza Google Mobile Ads C++ SDK'sı, Google Kullanıcı Mesajlaşma Platformu SDK'sı ve minimum Firebase Core SDK'sı (GMA C++ SDK'sı için gereklidir) için pod'ları ekleyin:
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Pod'ları yükleyin, ardından Xcode'da
.xcworkspacedosyasını açın.pod installopen APP.xcworkspaceFirebase C++ SDK'sından aşağıdaki çerçeveleri projeye ekleyin:
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
Her şey hazır C++ uygulamanız, başka Firebase hizmetleri olmadan Google Mobile Ads C++ SDK'sını kullanacak şekilde yapılandırılmıştır.
Uygulamanızın AdMob uygulama kimliğini yapılandırma
Android
Mobile Ads SDK Android kılavuzunda açıklandığı şekilde Uygulamanızı yapılandırma bölümündeki 3. adımı uygulayın ve ardından bu sayfaya geri dönün.
iOS
Mobile Ads SDK iOS kılavuzunda açıklandığı şekilde Info.plist dosyanızı güncelleme adımını uygulayın ve ardından bu sayfaya geri dönün.
Google Mobile Ads SDK'sını başlatma
Reklamları yüklemeden önce uygulamanızın firebase::gma::Initialize() yöntemini çağırarak Google Mobile Ads C++ SDK'sını başlatmasını sağlayın. Bu yöntem SDK'yı başlatır ve başlatma işlemi tamamlandıktan sonra (veya 30 saniyelik zaman aşımının ardından) bir firebase::Future tamamlar. Bu işlemin yalnızca bir kez, ideal olarak uygulama başlatılırken yapılması gerekir.
Initialize() çağrıldığında reklamlar Google Mobile Ads C++ SDK'sı veya uyumlulaştırma iş ortağı SDK'ları tarafından önceden yüklenebilir. Avrupa Ekonomik Alanı'ndaki (AEA) kullanıcılardan izin almanız, isteğe özel işaretler (ör. tag_for_child_directed_treatment veya tag_for_under_age_of_consent) ayarlamanız ya da reklamları yüklemeden önce başka bir işlem yapmanız gerekiyorsa Google Mobile Ads C++ SDK'sını başlatmadan önce firebase::gma::SetRequestConfiguration() yöntemini çağırarak bunu yapın. Daha fazla bilgi için Hedefleme kılavuzumuzu inceleyin.
Initialize() yöntemini çağırmayla ilgili bir örneği aşağıda bulabilirsiniz:
Android
// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(jni_env, j_activity, &result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
iOS
// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(&result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
Yöntem çağrısının tamamlanma durumunu izlemek için Future kullanın.
Future, eşzamansız yöntem çağrılarınızın tamamlanma durumunu belirlemenize olanak tanır.
Örneğin, uygulamanız firebase::gma::Initialize() yöntemini çağırdığında yeni bir firebase::Future oluşturulur ve döndürülür. Uygulamanız, başlatma işleminin ne zaman tamamlandığını belirlemek için Future öğesinin status() değerini sorgulayabilir.
İşlem tamamlandığında uygulamanız, sonuçta elde edilen AdapterInitializationStatus değerini almak için result() yöntemini çağırabilir.
Future döndüren yöntemlerin, uygulamaların belirli bir işlem için en son Future değerini almak üzere kullanabileceği karşılık gelen bir "son sonuç" yöntemi vardır. Örneğin, firebase::gma::Initialize() yönteminin firebase::gma::InitializeLastResult() adında karşılık gelen bir yöntemi vardır. Bu yöntem, uygulamanızın firebase::gma::Initialize() yöntemine yapılan son çağrının durumunu kontrol etmek için kullanabileceği bir Future döndürür.
Future durumu tamamlandıysa ve hata kodu firebase::gma::kAdErrorCodeNone ise işlem başarıyla tamamlanmıştır.
Future tamamlandığında çağrılacak geri çağırmaları da kaydedebilirsiniz. Bazı durumlarda geri çağırma farklı bir iş parçacığında çalışır. Bu nedenle, kodunuzun iş parçacığı açısından güvenli olduğundan emin olun. Bu kod snippet'i, geri çağırma için bir işlev işaretçisi kullanır:
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
/*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
// Called when the Future is completed for the last call to firebase::gma::Initialize().
// If the error code is firebase::gma::kAdErrorCodeNone,
// then the SDK has been successfully initialized.
if (future.error() == firebase::gma::kAdErrorCodeNone) {
// success!
} else {
// failure.
}
}
Bir reklam biçimi seçin
Google Mobile Ads C++ SDK'sı içe aktarıldı ve artık reklam uygulamaya hazırsınız. AdMob, uygulamanızın kullanıcı deneyimine en uygun olanı seçebilmeniz için çeşitli reklam biçimleri sunar.
Banner
Cihaz ekranının üst veya alt kısmında görünen dikdörtgen reklamlardır. Banner reklamlar, kullanıcılar uygulamayla etkileşim kurarken ekranda kalmaya devam eder ve belirli bir süre sonra otomatik olarak yenilenebilir. Mobil reklamcılıkta yeniyseniz bu reklamlar başlamak için idealdir.
Geçiş reklamı
Kullanıcı tarafından kapatılana kadar bir uygulamanın arayüzünü kaplayan tam ekran reklamlar. Bu reklamlar, bir uygulamanın yürütme akışındaki doğal duraklamalarda (ör. bir oyunun seviyeleri arasında veya bir görev tamamlandıktan hemen sonra) kullanıldığında en iyi sonucu verir.
Ödüllü
Kısa videoları izleyen, ayrıca oynanabilir reklam ve anketlerle etkileşimde bulunan kullanıcıları ödüllendiren reklamlardır. Ücretsiz oynanabilen uygulamalardan para kazanmak için kullanılır.