Bu kılavuz, uygulama açılış reklamlarını entegre eden yayıncılar için hazırlanmıştır.
Uygulama açılış reklamları, uygulama yükleme ekranlarından para kazanmak isteyen yayıncılar için tasarlanmış özel bir reklam biçimidir. Uygulama açılış reklamları, kullanıcılarınız tarafından istedikleri zaman kapatılabilir. Uygulama açılış reklamları, kullanıcılar uygulamanızı ön plana getirdiğinde gösterilebilir.
Uygulama açılış reklamları, kullanıcılara uygulamanızda olduklarını hatırlatmak için otomatik olarak küçük bir marka alanı gösterir. Uygulama açılış reklamının nasıl göründüğüne dair bir örneği aşağıda bulabilirsiniz:

Uygulama açılış reklamlarını uygulamak için gereken adımlar genel olarak şunlardır:
- Reklamı göstermeniz gerekmeden önce reklamı yükleyen bir yönetici sınıfı oluşturun.
- Uygulamanın ön plana alma etkinlikleri sırasında reklamı gösterin.
- Sunu geri çağırmalarını işleme
Ön koşullar
- Kurulum Google Mobile Ads SDK.
- Cihazınızı test cihazı olarak nasıl yapılandıracağınızı öğrenin.
Her zaman test reklamlarıyla test edin
Uygulamalarınızı oluştururken ve test ederken yayındaki üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu koşula uymamanız halinde hesabınız askıya alınabilir.
Test reklamlarını yüklemenin en kolay yolu, uygulama açılış reklamları için özel test reklam birimi kimliğimizi kullanmaktır:
ca-app-pub-3940256099942544/5575463023
Bu kimlik, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu kimliği kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirmeyi unutmayın.
Google Mobile Ads SDK test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test Reklamları başlıklı makaleyi inceleyin.
Yönetici sınıfı uygulama
Reklamınızın hızlı bir şekilde gösterilmesi gerekir. Bu nedenle, reklamınızı göstermeniz gerekmeden önce yüklemeniz en iyisidir. Böylece, kullanıcı uygulamanıza girer girmez reklamınız hazır olur. Reklamı göstermeniz gereken zamandan önce reklam istekleri göndermek için bir yönetici sınıfı uygulayın.
AppOpenAdManager adında yeni bir singleton sınıfı oluşturun:
Swift
class AppOpenAdManager: NSObject {
/// The app open ad.
var appOpenAd: AppOpenAd?
/// Maintains a reference to the delegate.
weak var appOpenAdManagerDelegate: AppOpenAdManagerDelegate?
/// Keeps track of if an app open ad is loading.
var isLoadingAd = false
/// Keeps track of if an app open ad is showing.
var isShowingAd = false
/// Keeps track of the time when an app open ad was loaded to discard expired ad.
var loadTime: Date?
/// For more interval details, see https://support.google.com/admob/answer/9341964
let timeoutInterval: TimeInterval = 4 * 3_600
static let shared = AppOpenAdManager()
Objective-C
@interface AppOpenAdManager ()
/// The app open ad.
@property(nonatomic, strong, nullable) GADAppOpenAd *appOpenAd;
/// Keeps track of if an app open ad is loading.
@property(nonatomic, assign) BOOL isLoadingAd;
/// Keeps track of if an app open ad is showing.
@property(nonatomic, assign) BOOL isShowingAd;
/// Keeps track of the time when an app open ad was loaded to discard expired ad.
@property(nonatomic, strong, nullable) NSDate *loadTime;
@end
/// For more interval details, see https://support.google.com/admob/answer/9341964
static const NSInteger kTimeoutInterval = 4;
@implementation AppOpenAdManager
+ (nonnull AppOpenAdManager *)sharedInstance {
static AppOpenAdManager *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[AppOpenAdManager alloc] init];
});
return instance;
}
Ve AppOpenAdManagerDelegate protokolünü uygulayın:
Swift
protocol AppOpenAdManagerDelegate: AnyObject {
/// Method to be invoked when an app open ad life cycle is complete (i.e. dismissed or fails to
/// show).
func appOpenAdManagerAdDidComplete(_ appOpenAdManager: AppOpenAdManager)
}
Objective-C
@protocol AppOpenAdManagerDelegate <NSObject>
/// Method to be invoked when an app open ad life cycle is complete (i.e. dismissed or fails to
/// show).
- (void)adDidComplete;
@end
Reklam yükleme
Bir sonraki adım, uygulama açılış reklamı yüklemektir:
Swift
func loadAd() async {
// Do not load ad if there is an unused ad or one is already loading.
if isLoadingAd || isAdAvailable() {
return
}
isLoadingAd = true
do {
appOpenAd = try await AppOpenAd.load(
with: "ca-app-pub-3940256099942544/5575463023", request: Request())
appOpenAd?.fullScreenContentDelegate = self
loadTime = Date()
} catch {
print("App open ad failed to load with error: \(error.localizedDescription)")
appOpenAd = nil
loadTime = nil
}
isLoadingAd = false
}
Objective-C
- (void)loadAd {
// Do not load ad if there is an unused ad or one is already loading.
if ([self isAdAvailable] || self.isLoadingAd) {
return;
}
self.isLoadingAd = YES;
[GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5575463023"
request:[GADRequest request]
completionHandler:^(GADAppOpenAd * _Nullable appOpenAd, NSError * _Nullable error) {
self.isLoadingAd = NO;
if (error) {
NSLog(@"App open ad failed to load with error: %@", error);
self.appOpenAd = nil;
self.loadTime = nil;
return;
}
self.appOpenAd = appOpenAd;
self.appOpenAd.fullScreenContentDelegate = self;
self.loadTime = [NSDate date];
}];
}
Reklam göster
Bir sonraki adım, uygulama açılış reklamı göstermektir. Reklam yoksa yeni bir reklam yüklemeye çalışın.
Swift
func showAdIfAvailable() {
// If the app open ad is already showing, do not show the ad again.
if isShowingAd {
return print("App open ad is already showing.")
}
// If the app open ad is not available yet but is supposed to show, load
// a new ad.
if !isAdAvailable() {
print("App open ad is not ready yet.")
// The app open ad is considered to be complete in this example.
appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
// Load a new ad.
return
}
if let appOpenAd {
appOpenAd.present(from: nil)
isShowingAd = true
}
}
Objective-C
- (void)showAdIfAvailable {
// If the app open ad is already showing, do not show the ad again.
if (self.isShowingAd) {
NSLog(@"App open ad is already showing.");
return;
}
// If the app open ad is not available yet but is supposed to show, load
// a new ad.
if (![self isAdAvailable]) {
NSLog(@"App open ad is not ready yet.");
// The app open ad is considered to be complete in this example.
[self adDidComplete];
// Load a new ad.
return;
}
[self.appOpenAd presentFromRootViewController:nil];
self.isShowingAd = YES;
}
Reklamı, uygulamanın ön plana alma etkinlikleri sırasında gösterir.
Uygulama etkin hale geldiğinde, varsa reklam göstermek için showAdIfAvailable() yöntemini çağırır veya yeni bir reklam yükler.
Swift
func applicationDidBecomeActive(_ application: UIApplication) {
// Show the app open ad when the app is foregrounded.
AppOpenAdManager.shared.showAdIfAvailable()
}
Objective-C
- (void) applicationDidBecomeActive:(UIApplication *)application {
// Show the app open ad when the app is foregrounded.
[AppOpenAdManager.sharedInstance showAdIfAvailable];
}
Sunu geri çağırmalarını işleme
Sunu etkinlikleriyle ilgili bildirim almak için döndürülen reklamın fullScreenContentDelegate özelliğine GADFullScreenContentDelegate atamanız gerekir:
Swift
appOpenAd?.fullScreenContentDelegate = self
Objective-C
self.appOpenAd.fullScreenContentDelegate = self;
Özellikle, ilk reklamın sunumu bittikten sonra bir sonraki uygulama açılış reklamını istemeniz gerekir. Aşağıdaki kodda, protokolün AppOpenAdManager dosyanızda nasıl uygulanacağı gösterilmektedir:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("App open ad recorded an impression.")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("App open ad recorded a click.")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("App open ad will be dismissed.")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("App open ad will be presented.")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("App open ad was dismissed.")
appOpenAd = nil
isShowingAd = false
appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
Task {
await loadAd()
}
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("App open ad failed to present with error: \(error.localizedDescription)")
appOpenAd = nil
isShowingAd = false
appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
Task {
await loadAd()
}
}
Objective-C
- (void)adDidRecordImpression:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"App open ad recorded an impression.");
}
- (void)adDidRecordClick:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"App open ad recorded a click.");
}
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"App open ad will be presented.");
}
- (void)adWillDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"App open ad will be dismissed.");
}
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"App open ad was dismissed.");
self.appOpenAd = nil;
self.isShowingAd = NO;
[self adDidComplete];
[self loadAd];
}
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"App open ad failed to present with error: %@", error.localizedDescription);
self.appOpenAd = nil;
self.isShowingAd = NO;
[self adDidComplete];
[self loadAd];
}
Reklam geçerlilik süresini göz önünde bulundurma
Süresi dolmuş bir reklam göstermediğinizden emin olmak için uygulama temsilcisine, reklam referansınız yüklendikten sonra geçen süreyi kontrol eden bir yöntem ekleyebilirsiniz.
AppOpenAdManager öğenize loadTime adlı bir Date özelliği ekleyin ve reklamınız yüklendiğinde bu özelliği ayarlayın. Ardından, reklamınız yüklendikten sonra belirli bir saatten daha az süre geçtiyse true değerini döndüren bir yöntem ekleyebilirsiniz. Reklamı göstermeye çalışmadan önce reklam referansınızın geçerliliğini kontrol ettiğinizden emin olun.
Swift
private func wasLoadTimeLessThanNHoursAgo(timeoutInterval: TimeInterval) -> Bool {
// Check if ad was loaded more than n hours ago.
if let loadTime = loadTime {
return Date().timeIntervalSince(loadTime) < timeoutInterval
}
return false
}
private func isAdAvailable() -> Bool {
// Check if ad exists and can be shown.
return appOpenAd != nil && wasLoadTimeLessThanNHoursAgo(timeoutInterval: timeoutInterval)
}
Objective-C
- (BOOL)wasLoadTimeLessThanNHoursAgo:(int)n {
// Check if ad was loaded more than n hours ago.
NSDate *now = [NSDate date];
NSTimeInterval timeIntervalBetweenNowAndLoadTime = [now timeIntervalSinceDate:self.loadTime];
double secondsPerHour = 3600.0;
double intervalInHours = timeIntervalBetweenNowAndLoadTime / secondsPerHour;
return intervalInHours < n;
}
- (BOOL)isAdAvailable {
// Check if ad exists and can be shown.
return _appOpenAd && [self wasLoadTimeLessThanNHoursAgo:kTimeoutInterval];
}
Baştan başlatmalar ve yükleme ekranları
Belgelerde, uygulama açılış reklamlarını yalnızca kullanıcılar uygulamanızı bellekte askıya alındığında ön plana getirdiğinde gösterdiğiniz varsayılır. "Baştan başlatma", uygulamanız başlatıldığında ancak daha önce bellekte askıya alınmadığında gerçekleşir.
Kullanıcının uygulamanızı ilk kez açması, baştan başlatmaya örnek olarak verilebilir. Baştan başlatmalarda, hemen gösterilmeye hazır, önceden yüklenmiş bir uygulama açılış reklamınız olmaz. Reklam isteğinde bulunmanız ile reklamın size geri gönderilmesi arasında geçen süre, kullanıcıların uygulamanızı kısa bir süre kullanmasına ve ardından bağlam dışı bir reklamla karşılaşmasına neden olabilir. Kötü bir kullanıcı deneyimi olduğu için bundan kaçınılmalıdır.
Uygulama açılış reklamlarını baştan başlatmalarda kullanmanın tercih edilen yolu, oyun veya uygulama öğelerinizi yüklemek için bir yükleme ekranı kullanmak ve reklamı yalnızca yükleme ekranından göstermektir. Uygulamanız yüklemeyi tamamladıysa ve kullanıcıyı uygulamanızın ana içeriğine yönlendirdiyse reklamı göstermeyin.
En iyi uygulamalar
Google, uygulamanızın yükleme ekranından para kazanmanıza yardımcı olmak için uygulama açılış reklamlarını geliştirdi. Ancak kullanıcılarınızın uygulamanızı keyifle kullanması için en iyi uygulamaları göz önünde bulundurmanız önemlidir. Şunları yaptığınızdan emin olun:
- İlk uygulama açılış reklamınızı göstermek için kullanıcılarınızın uygulamanızı birkaç kez kullanmasını bekleyin.
- Uygulama açılış reklamlarını, kullanıcılarınızın uygulamanızın yüklenmesini beklediği zamanlarda gösterin.
- Uygulama açılış reklamının altında yükleme ekranınız varsa ve reklam kapatılmadan önce yükleme ekranınızın yüklenmesi tamamlanırsa, yükleme ekranınızı
adDidDismissFullScreenContentyönteminde kapatmayı deneyebilirsiniz.
GitHub'daki eksiksiz örnek
Sonraki adımlar
Kullanıcı gizliliği hakkında daha fazla bilgi edinin.