1. Giriş
Reklamlar, uygulamanızın genel kullanıcı deneyiminin önemli bir parçasıdır. İyi reklam uygulamaları, genel uygulama deneyiminizi iyileştirmenize, hatta kullanıcıları elde tutma ve etkileşimi artırmanıza yardımcı olabilir. Örneğin, ödüllü reklamlar, video reklam izleyen kullanıcıları uygulama içi para birimi veya öğelerle ödüllendirmenize olanak tanır. Böylece kullanıcılar, aksi takdirde takılıp kalabilecekleri ve kullanıcı kaybına yol açabilecek noktalarda yeni başarılara ulaşabilir.
Ancak mükemmel bir reklam deneyimi oluşturmak kolay değildir. Şu gibi sorularınız olabilir: Bu reklamları ne sıklıkta göstermelisiniz? Nerede ve ne zaman göstermelisiniz? Ödül ne olmalı? Maalesef bu sorunun yanıtı uygulamadan uygulamaya ve yerleşimden yerleşime değişir. Herkes için geçerli tek bir cevap yoktur.
Firebase için Google Analytics, AdMob ve Firebase'in sunduğu diğer birçok güçlü ancak kullanımı kolay araç sayesinde uygulamanızı veriye dayalı bir şekilde ince ayarlamak artık çok daha kolay ve sorunsuz. Bugün, bu özellikten nasıl yararlanmaya başlayabileceğinizi göstereceğiz.
Ne oluşturacaksınız?
Bu codelab, Awesome Drawing Quiz adlı bir uygulama oluşturma sürecinde size yol gösterecek üç codelab'den ilkidir. Bu uygulama, oyuncuların çizimin adını tahmin etmesine olanak tanıyan bir oyundur. Ödüllü reklamları ve Firebase hizmetlerini oyununuza nasıl dahil edebileceğinizi gösterir.
Bu codelab'de, bazı önemli uygulama etkinliklerini kaydetmek için Firebase için Google Analytics'i entegre edeceksiniz. Ayrıca, Firebase konsolunda gösterilen uygulama analizlerini nasıl okuyacağınızı da öğreneceksiniz.
|
|
Neler öğreneceksiniz?
- Uygulamanızda Firebase için Google Analytics'i ayarlama
- Uygulama etkinliklerini kaydetme
- Firebase konsolunda gösterilen uygulama analizlerini okuma
Gerekenler
- Unity 2018.4.4f1 veya daha yeni bir sürüm
- Xcode 10 veya üzeri (iOS için hedef oluşturmak üzere)
- Google Hesabı
- Cihazınızı bağlamak için USB kablosuyla Android 5.0 veya sonraki bir sürümün yüklü olduğu bir test cihazı ya da Play Store/Google API'lerini destekleyen bir sistem görüntüsüyle AVD(Android Sanal Cihaz) çalıştıran bir Android Emulator
- iOS 8.0 veya sonraki sürümlerin yüklü olduğu bir iOS cihaz ya da simülatör
AdMob ile ilgili deneyim düzeyinizi nasıl değerlendirirsiniz?
Firebase ile ilgili deneyim seviyenizi nasıl değerlendirirsiniz?
2. Geliştirme ortamını kurma
Kodu indirme
Bu codelab'in tüm kodunu indirmek için aşağıdaki düğmeyi tıklayın:
İndirilen ZIP dosyasını açın. Bu işlem, admob-firebase-codelabs-unity-master adlı bir kök klasörü açar.
...veya GitHub deposunu komut satırından kopyalayın.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Depoda aşağıdaki dört klasör bulunur:
101-base: Bu codelab'de oluşturacağınız başlangıç kodu.
101-complete_and_102-base: Bu codelab'in tamamlanmış kodu ve 102 numaralı codelab'in başlangıç kodu.
102-complete: 102 numaralı Codelab'in tamamlanmış kodu.
Gerekli dosyaları hazırlama
Awesome Drawing Quiz, projeyi derlemek ve çalıştırmak için gerekli olan çeşitli açık kaynak kodları kullanır.
Terminali açın ve depo kök dizinine gidin. Ardından, gerekli dosyaları projeye kopyalamak için terminalden ./gradlew :prepareThirdPartyFiles (Windows'da gradlew.bat :prepareThirdPartyFiles) komutunu çalıştırın.
Başlangıç uygulamasını içe aktarma
Unity'yi başlatın ve karşılama ekranında "Open" (Aç) seçeneğini belirleyin. Ardından, indirdiğiniz koddan 101-base dizinini seçin.
Proje artık Unity'de açık olmalıdır.
3. Ödüllü video reklam birimi oluşturma (isteğe bağlı)
Başlangıç uygulamasında, kolaylık sağlamak için özel bir ödüllü video reklam birimi zaten yer alıyor. AdMob hesabınızda yeni bir hesap oluşturmak istemiyorsanız bu adımı atlayabilirsiniz.
Android'de kurulum
Hesabınızda yeni bir AdMob uygulaması oluşturmak için lütfen aşağıdaki talimatları uygulayın:
- AdMob Konsolu'na gidin.
- Uygulamalar menüsünde "Uygulama Ekle"yi tıklayın.
- "Uygulamanızı Google Play veya App Store'da yayınladınız mı?" sorusuna "HAYIR" yanıtını verin.
- Uygulamaya "Awesome Drawing Quiz" adını verin, Platform olarak "Android"i seçin ve "Ekle"yi tıklayın.
Hesabınızda bir AdMob uygulaması oluşturduktan sonra yeni bir ödüllü video reklam birimi oluşturmak için aşağıdaki adımları uygulayın.
- AdMob ön uç bölümünde Uygulamalar menüsünü tıklayın, ardından uygulama listesinden "Awesome Drawing Quiz" uygulamasını seçin.
- Reklam birimleri menüsünü ve ardından yeni bir ödüllü video reklam birimi oluşturmak için REKLAM BİRİMİ EKLE'yi tıklayın.
- Reklam biçimi için Ödüllü'yü seçin.

- Reklam biriminin adını istediğiniz gibi girin. Ardından, ödül miktarını 1, ödül öğesini ise "ipucu" olarak ayarlayın (Bunlar, uygulamanın şu anda kullanıcılara verdiği ödüllerdir). Yeni bir ödüllü video reklam birimi oluşturmak için REKLAM BİRİMİ OLUŞTUR'u tıklayın.

- Başarıyla oluşturulduğunda aşağıdaki gibi talimatlar görürsünüz.

- Unity projesine geri dönün ve AdMob uygulama kimliği ile reklam birimi kimliği sabitlerini önceki adımda oluşturduğunuz kimliklerle güncelleyin.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_ANDROID
private const string APP_ID = APP_ID_ANDROID;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
iOS için kurulum
Hesabınızda yeni bir AdMob uygulaması oluşturmak için lütfen aşağıdaki talimatları uygulayın:
- AdMob Konsolu'na gidin.
- Uygulamalar menüsünde "Uygulama Ekle"yi tıklayın.
- "Uygulamanızı Google Play veya App Store'da yayınladınız mı?" sorusuna "HAYIR" yanıtını verin.
- Uygulamaya "Awesome Drawing Quiz" adını verin, Platform olarak "iOS"'u seçin ve "Ekle"yi tıklayın.
Hesabınızda bir AdMob uygulaması oluşturduktan sonra yeni bir ödüllü video reklam birimi oluşturmak için aşağıdaki adımları uygulayın.
- AdMob ön uç bölümünde Uygulamalar menüsünü tıklayın, ardından uygulama listesinden "Awesome Drawing Quiz" uygulamasını seçin.
- Reklam birimleri menüsünü ve ardından yeni bir ödüllü video reklam birimi oluşturmak için REKLAM BİRİMİ EKLE'yi tıklayın.
- Reklam biçimi için Ödüllü'yü seçin.

- Reklam biriminin adını istediğiniz gibi girin. Ardından, ödül miktarını 1, ödül öğesini ise "ipucu" olarak ayarlayın (Bunlar, uygulamanın şu anda kullanıcılara verdiği ödüllerdir). Yeni bir ödüllü video reklam birimi oluşturmak için REKLAM BİRİMİ OLUŞTUR'u tıklayın.

- Başarıyla oluşturulduğunda aşağıdaki gibi talimatlar görürsünüz.

- Unity projesine geri dönün ve AdMob uygulama kimliği ile reklam birimi kimliği sabitlerini önceki adımda oluşturduğunuz kimliklerle güncelleyin.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_IOS
private const string APP_ID = APP_ID_IOS;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
4. Google Mobile Ads Unity eklentisini ekleme
Eklentiyi içe aktarma
Unity uygulamasında AdMob reklamları yayınlamak için Google Mobile Ads Unity eklentisini projeye eklemeniz gerekir.
- Google Mobile Ads Unity eklentisi 3.18.1 paketini indirin. (Bu Codelab'in eklentinin diğer sürümüyle uyumlu olmayabileceğini unutmayın.)
- Awesome Drawing Quiz Unity projesinde. Projede Assets > Import Package > Custom Package (Öğeler > Paket İçe Aktar > Özel Paket) bölümüne gidin.
- İndirdiğiniz projeye GoogleMobileAds.unitypackage dosyasını aktarın.
AdMob uygulama kimliğini yapılandırma
Unity Editor'da menüden Assets > Google Mobile Ads > Settings'i (Öğeler > Google Mobil Reklamlar > Ayarlar) seçin.

Google AdMob bölümündeki Etkin onay kutusunu tıklayarak AdMob'u etkinleştirin. Ardından AdMob uygulama kimliğini aşağıdaki gibi girin:
- Android:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

5. Firebase projesi oluşturma
Firebase konsolundan yeni bir proje oluşturma
- Firebase konsoluna gidin.
- Proje Ekle'yi seçin ve projenize "Harika Çizim Testi" adını verin.
Unity uygulamasını ekleme
- Yeni projenizin genel bakış ekranında Firebase'i Unity uygulamanıza ekleyin'i tıklayın.
- iOS uygulaması olarak kaydet onay kutusunu işaretleyin.
- iOS paket kimliğini şu şekilde girin: com.codelab.awesomedrawingquiz.unity
- Uygulama takma adını şu şekilde girin: Awesome Drawing Quiz (iOS'te Unity)
- Android uygulaması olarak kaydet onay kutusunu işaretleyin.
- Android paket adını şu şekilde girin: com.codelab.awesomedrawingquiz.unity
- Uygulama takma adını şu şekilde girin: Awesome Drawing Quiz (Android'de Unity)
- Hem Android hem de iOS uygulamalarını kaydetmek için Uygulamayı Kaydet'i seçin.
Firebase yapılandırma dosyalarını Unity projesine ekleme
Ardından, uygulamanız için gerekli tüm Firebase meta verilerini içeren bir yapılandırma dosyasını indirebileceğiniz bir ekran gösterilir. google-service.json ve GoogleService-Info.plist dosyalarını indirip Unity projesindeki
Assets klasörüne taşıyın.

Firebase Analytics SDK'sını ekleme
- Firebase Unity SDK 5.5.0'ı indirip uygun bir konumda arşivden çıkarın.
- Awesome Drawing Quiz Unity projesini açın ve Assets > Import Package > Custom Package'e (Öğeler > Paket İçe Aktar > Özel Paket) gidin.
- Arşivden çıkarılan SDK'dan Remote Config SDK'sını (
dotnet4/FirebaseAnalytics.unitypackage) içe aktarın. - Unity paketini içe aktarma penceresinde İçe aktar'ı tıklayın.
6. AdMob'u Firebase projesine bağlama
Uygulamalarınızı Firebase'e bağlamak için aşağıdaki adımları tamamlayın.
- https://apps.admob.com adresine giderek AdMob hesabınızda oturum açın.
- Kenar çubuğundaki Uygulamalar'ı tıklayın.
- "Awesome Drawing Quiz"i (Harika Çizim Testi) seçin. Son kullanılan uygulamalar listesinde uygulamayı göremiyorsanız, AdMob'a eklediğiniz tüm uygulamaları içeren listede arama yapmak için Tüm uygulamaları görüntüle'yi tıklayabilirsiniz.
- Kenar çubuğundaki Uygulama ayarları'nı tıklayın.
- Firebase'e bağla'yı tıklayın.
- "Mevcut bir Firebase projesine bağla ve yeni bir Firebase uygulaması oluştur" seçeneğini belirleyin. Ardından, açılır menüden "Awesome Drawing Quiz" projesini seçin.
- "DEVAM" düğmesini tıkladığınızda "Başarıyla bağlandı" mesajını görürsünüz. İşlemi tamamlamak için "BİTTİ" düğmesini tıklayın.
AdMob uygulamanızı Firebase projesine bağladığınızda hem AdMob hem de Firebase konsolunda aşağıdaki gibi bazı ek özellikler etkinleştirilir:
Gelir kartı (AdMob)
Gelir kartından, olası tüm gelir akışlarına tek bir yerden bütünsel olarak bakabilirsiniz. Desteklenen gelir kaynakları şunlardır:
- AdMob (tahmini)
- Uyumlulaştırılmış Reklam Ağları (Gözlemlenen)
- Uygulama içi satın alma işlemleri
- E-ticaret satın alma işlemleri

Kullanıcı metrikleri kartı (AdMob)
Kullanıcı metrikleri kartından, reklam deneyiminizde yapılan değişikliklerin kullanıcı davranışını nasıl etkileyebileceğini görebilirsiniz.

Ödüllü reklam raporu (AdMob)
Ödüllü reklam raporu, yayıncıların kullanıcıların ödüllü reklamlarıyla nasıl etkileşim kurduğunu anlamalarına yardımcı olacak çeşitli metrikler sunar.

Toplam gelir kartı (Firebase)
AdMob uygulamanızı Firebase'e bağladıktan sonra Firebase kontrol panelindeki Toplam gelir kartında, uygulama içi satın alma işlemleri ve e-ticaret satın alma işlemlerinin yanı sıra AdMob'dan elde edilen gelir de gösterilir.

Reklam etkinlikleri raporları (Firebase)
Reklama özgü etkinlikler (tıklama, gösterim ve ödül etkinlikleri) otomatik olarak toplanır ve Firebase için Google Analytics'te kullanılabilir.

7. Projeyi yürütme
Projeyi derleyip çalıştırdıktan sonra uygulama başladığında aşağıdaki ekranı görürsünüz.

"OYUN BAŞLAT" seçeneğini tıkladığınızda ekranda bir çizim görürsünüz. Göreviniz, en üstte gösterilen ipucunu kullanarak çizimin adını tahmin etmektir. Bu ipucundan, çizimin adının ilk harfini ve uzunluğunu çıkarabilirsiniz.

Çizimin adını bilmiyorsanız "ATLA" düğmesini tıklayarak seviyeyi atlayabilirsiniz.
Cevabı tahmin etmenize yardımcı olacak ek bir ipucu isteyebilirsiniz. "İPUCU" düğmesini tıklayıp ödüllü video reklam izleyerek ek ipucu alabilirsiniz. Reklamı izlemeyi tamamladığınızda ödül olarak bir harf daha açıklanır.

8. Uygulama etkinlikleri ekleme
Awesome Drawing Quiz'deki kullanıcı yolculuğunu ayrıntılı olarak anlamak için oyundaki kullanıcı davranışını aşağıdaki gibi izleyen birkaç özel etkinlik tanımlayacaksınız:
Etkinlik adı | Tetiklendi... | Parametreler |
game_start | Kullanıcı yeni bir oyuna başladığında | yok |
level_start | Kullanıcı bir aşamada yeni bir seviyeye (yeni bir çizim sınavı) başladığında (Bir aşamada 6 seviye vardır) | level_name |
level_wrong_answer | Kullanıcı yanlış yanıt gönderdiğinde | level_name |
ad_reward_prompt | Kullanıcı ipucu düğmesine dokunduğunda ve ödüllü video reklam izlemesi istendiğinde | ad_unit_id |
ad_reward_impression | Kullanıcı ödüllü video reklamı izlemeye başladığında | ad_unit_id |
level_success | Kullanıcı doğru yanıt gönderdiğinde (bir seviyeyi tamamladığında) | level_name, number_of_attempts, elapsed_time_sec, hint_used |
level_fail | Kullanıcı bir seviyeyi atladığında | level_name, number_of_attempts, elapsed_time_sec, hint_used |
game_complete | Oyun bittiğinde | number_of_correct_answers |
Her etkinlikle ilişkili her parametrenin açıklaması aşağıdaki gibidir:
Etkinlik adı | Parametre adı | Açıklama |
level_start | level_name | Seviyede gösterilen çizimin adı (ör. "muz") |
level_wrong_answer | level_name | Seviyede gösterilen çizimin adı (ör. "muz") |
ad_reward_prompt | ad_unit_id | Ödüllü video reklam görüntülemek için kullanılan bir reklam birimi kimliği |
ad_reward_impression | ad_unit_id | Ödüllü video reklam görüntülemek için kullanılan bir reklam birimi kimliği |
level_success | level_name | Seviyede gösterilen çizimin adı (ör. "muz") |
level_success | number_of_attempts | Bir seviyeyi geçmek için yapılan deneme sayısı |
level_success | elapsed_time_sec | Bir seviyeyi tamamlamak için geçen süre (saniye) |
level_success | hint_used | Kullanıcının bir seviyeyi geçmek için ipucu kullanıp kullanmadığı (ödüllü video reklam izleyip izlemediği) (1: ipucu kullanıldı / 0: seviye ipucu kullanılmadan geçildi) |
level_fail | level_name | Seviyede gösterilen çizimin adı (ör. "muz") |
level_fail | number_of_attempts | Bir seviyeyi geçmek için yapılan deneme sayısı |
level_fail | elapsed_time_sec | Bir seviyeyi tamamlamak için geçen süre (saniye) |
level_fail | hint_used | Kullanıcının bir seviyeyi geçmek için ipucu kullanıp kullanmadığı (ödüllü video reklam izleyip izlemediği) (1: ipucu kullanıldı / 0: seviye ipucu kullanılmadan geçildi) |
game_complete | number_of_correct_answers | Oyunda temizlenen seviye sayısı |
Özel etkinliklerin günlük kaydı için yardımcı sınıf oluşturma
Analiz etkinliğini kolayca günlüğe kaydetmek için özel etkinlikleri yönetecek bir yardımcı sınıf oluşturacaksınız.
Öncelikle Assets/Scripts klasörünün altında yeni bir klasör oluşturun ve bu klasöre Analytics adını verin. Ardından, Analytics klasöründe yeni bir C# Script (C# Komut Dosyası) oluşturup QuizAnalytics.cs olarak adlandırın.
Aşağıdaki kodu QuizAnalytics.cs dosyasına ekleyin.
Analytics/QuizAnalytics.cs
using Firebase.Analytics;
namespace AwesomeDrawingQuiz.Analytics {
public class QuizAnalytics {
private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";
private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";
private const string EVENT_LEVEL_FAIL = "level_fail";
private const string EVENT_LEVEL_SUCCESS = "level_success";
private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";
private const string EVENT_GAME_START = "game_start";
private const string EVENT_GAME_COMPLETE = "game_complete";
private const string PARAM_AD_UNIT_ID = "ad_unit_id";
private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";
private const string PARAM_HINT_USED = "hint_used";
private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";
private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";
public const string SCREEN_MAIN = "main";
public const string SCREEN_GAME = "game";
public static void LogGameStart() {
FirebaseAnalytics.LogEvent(EVENT_GAME_START);
}
public static void LogLevelStart(string levelName) {
FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogLevelWrongAnswer(string levelName) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogAdRewardPrompt(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogAdRewardImpression(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogLevelSuccess(
string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogLevelFail(
string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogGameComplete(int numberOfCorrectAnswers) {
FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE,
PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
}
public static void SetScreenName(string screenName) {
FirebaseAnalytics.SetCurrentScreen(screenName, null);
}
}
}
Oyundaki analiz etkinliklerini günlüğe kaydetme
Assets/Scripts/Scenes klasöründeki Game.cs dosyasını açın. QuizAnalytics sınıfını kullanmak için (AwesomeDrawingQuiz.Analytics ad alanının altında bulunur) using yönergesini aşağıdaki gibi ekleyin.
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Ardından, Start() işlevinde, mevcut ekranın adını değiştirmek için QuizAnalytics.SetScreenName() işlevini çağırın. Ayrıca, bir maçın başladığını belirtmek için QuizAnalytics.LogGameStart() çağrısı yapın.
Scenes/Game.cs
void Start () {
// TODO: Log screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);
...
SetHintButtonEnabled(false);
// TODO: Log game_start event (101)
QuizAnalytics.LogGameStart();
...
}
Ardından, geri çağırma işlevlerine özel etkinlikleri aşağıdaki gibi günlüğe kaydetmek için çağrılar ekleyin:
Scenes/Game.cs
public void OnClickHint() {
// TODO: Log ad_reward_prompt event (101)
QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);
...
}
...
public void OnAdStarted(object sender, EventArgs args) {
// TODO: Log ad_reward_impression event (101)
QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}
...
public void OnGameOver(object sender, GameOverEventArgs args) {
// TODO: Log game_complete event (101)
QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);
...
}
public void OnLevelCleared(object sender, LevelClearEventArgs args) {
// TODO: Log level_success event (101)
QuizAnalytics.LogLevelSuccess(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
...
}
public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
// TODO: Log level_fail event (101)
QuizAnalytics.LogLevelFail(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}
public void OnNewLevel(object sender, NewLevelEventArgs args) {
// TODO: Log level_start event (101)
QuizAnalytics.LogLevelStart(args.Drawing.word);
...
}
public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
// TODO: Log level_wrong_answer event (101)
QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);
...
}
Son olarak, Assets/Scripts/Scenes klasöründeki Main.cs dosyasını güncelleyin. Firebase SDK'sında herhangi bir yöntemi çağırmadan önce Firebase'in hazır olup olmadığını kontrol etmeniz gerekir.
Scenes/Main.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
public class Main : MonoBehaviour {
...
void Start () {
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#if UNITY_ANDROID
// Disable 'Start a game' button until
// Firebase dependencies are ready to use on the Android
buttonStartGame.interactable = false;
// TODO: Check Google Play Services on Android (101)
// Check Google Play Services on Android device is up to date
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
Debug.Log("All Firebase services are available");
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
} else {
throw new System.InvalidOperationException(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
}
}).ContinueWith(task => {
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
#endif
}
...
}
}
9. Analiz etkinliklerinde hata ayıklama
Etkinliklerin doğru şekilde günlüğe kaydedildiğini doğrulamak için DebugView'u kullanabilirsiniz. DebugView, geliştirme cihazlarında uygulamanız tarafından kaydedilen ham etkinlik verilerini neredeyse anlık olarak görmenizi sağlar.
Bu, geliştirmenin enstrümantasyon aşamasında doğrulama amacıyla çok kullanışlıdır ve analiz uygulamanızdaki hataları ve yanlışları keşfetmenize yardımcı olabilir.
Android'de hata ayıklama modunu etkinleştirme
Genellikle, uygulamanızda kaydedilen etkinlikler yaklaşık bir saatlik bir süre boyunca gruplandırılır ve birlikte yüklenir. Analiz uygulamanızı anında doğrulamak için, etkinlikleri minimum gecikmeyle yüklemek üzere geliştirme cihazınızda hata ayıklama modunu etkinleştirmeniz gerekir.
Öncelikle Android Studio'da Terminal aracını açın. Bu simge, alt araç çubuğunda yer alır.

Ardından aşağıdaki komutu çalıştırın (test Android cihazının bilgisayarınıza bağlı olduğundan veya Android Emulator'ın çalıştığından emin olun):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Aşağıdaki komutu çalıştırarak hata ayıklama modunu açıkça devre dışı bırakıncaya kadar bu davranış devam eder:
adb shell setprop debug.firebase.analytics.app .none.
iOS'te hata ayıklama modunu etkinleştirme
Geliştirme cihazınızda Analytics hata ayıklama modunu etkinleştirmek için Xcode'da şu komut satırı bağımsız değişkenini belirtin:
-FIRDebugEnabled
Siz aşağıdaki komut satırı bağımsız değişkenini belirterek Hata Ayıklama modunu açıkça devre dışı bırakana bu davranış kadar devam eder:
-FIRDebugDisabled
DebugView ile Analytics etkinliklerinde hata ayıklama
Test cihazınızda hata ayıklama modunu etkinleştirdikten sonra Firebase konsoluna gidip menüden DebugView'u seçin. Ardından, etkinliklerin günlüğe kaydedilip DebugView raporunda gösterildiğini görmek için test cihazınızda oyununuzu oynayın.

Etkinlik adını tıklayarak her etkinlik hakkında ayrıntılı bilgiye erişebilirsiniz. Örneğin, aşağıdaki ekran görüntüsünde level_start etkinliğiyle ilişkili parametre ayrıntıları gösterilmektedir.

Daha fazla bilgi için lütfen DebugView Yardım Merkezi makalesini inceleyin.
10. Parametre raporlamayı etkinleştirme
Firebase için Google Analytics, etkinlik sayılarının toplamını varsayılan olarak toplar ancak özel parametrelerle ilgili raporlamanın, ilgilendiğiniz her etkinlik parametresi için açıkça etkinleştirilmesi gerekir. Bu özellik etkinleştirildikten sonra Firebase için Google Analytics, özel parametrelerin istatistiklerini göstermek üzere ek kartlar görüntüler.
Bir etkinliğe özel parametreler kaydetmek için:
- Firebase konsoluna gidin ve daha önce oluşturduğunuz Awesome Drawing Quiz projesini seçin.
- Gezinme menüsünden Etkinlikler'i tıklayın.
- Değiştirmek istediğiniz etkinliğin satırında
> Parametre raporlamasını düzenleyin'i tıklayın.

- Parametre adını girin alanına, kaydetmek istediğiniz parametrenin adını girin.
Not: Eşleşme bulunmazsa parametre adını girip EKLE'yi tıklayın.
5. Aşağıdaki tabloya bakın ve Tür alanını buna göre Metin veya Sayı olarak ayarlayın. Sayısal parametreler için Ölçü Birimi alanını da ayarladığınızdan emin olun. 6. Kurulumu tamamlamak için KAYDET düğmesini tıklayın.
Aşağıda listelenen her etkinlikte parametre raporlamasını etkinleştirin.
Etkinlik adı | Parametre adı | Parametre türü | Ölçü Birimi |
level_start | level_name | Metin | Yok |
level_wrong_answer | level_name | Metin | Yok |
level_success | level_name | Metin | Yok |
level_success | number_of_attempts | Sayı | Standart |
level_success | elapsed_time_sec | Sayı | Saniye |
level_success | hint_used | Sayı | Standart |
level_fail | level_name | Metin | Yok |
level_fail | number_of_attempts | Sayı | Standart |
level_fail | elapsed_time_sec | Sayı | Saniye |
level_fail | hint_used | Sayı | Standart |
game_complete | number_of_correct_answers | Sayı | Standart |
Aşağıdaki örnekte, level_success etkinliği için özel parametre raporlama ayarları gösterilmektedir:

Parametre raporlama ayarlarını tamamladıktan sonra, parametre raporlamanın etkin olduğu her etkinlikle ilişkili parametreleri görebilirsiniz.

11. Etkinlik raporundan analiz alma
Oyuna birkaç etkinlik eklediğiniz için oyunun kullanıcı davranışıyla ilgili soruları yanıtlayabilirsiniz. Firebase etkinlikleri raporundan elde edebileceğiniz bazı analizler aşağıda verilmiştir.
Hangi seviyede en fazla yanlış cevap var?
Bu soruyu yanıtlamak için her düzeyde kaç level_wrong_answer etkinliğinin tetiklendiğini öğrenmeniz gerekir.
Etkinlik raporunda level_wrong_answer simgesini tıklayın. level_wrong_answer etkinlik raporunda level_name kartını bulun. level_name parametresiyle ilişkilendirilen değerleri bu kartta aşağıdaki gibi görürsünüz.

Yukarıdaki ekran görüntüsüne göre, en fazla yanlış yanıtın horizon seviyesinde olduğunu kolayca görebilirsiniz. Bu da bu seviyenin diğer seviyelere kıyasla kullanıcılar için daha zor olduğu anlamına gelir.
Buradan edindiğiniz analizleri kullanarak, elde tutma oranını yüksek tutmak için yeni kullanıcılara zor seviyeler sunmamaya karar verebilirsiniz.
Bir seviyeyi geçmek için ortalama kaç deneme yapıldı?
Kullanıcılar, Awesome Drawing Quiz'de her seviyenin yanıtını istedikleri kadar gönderebilir.
level_success etkinliğinde number_of_attempts parametresinde parametre raporlamasını etkinleştirdiğiniz için bu parametreyle ilgili ayrıntılı metrikleri görebilirsiniz.
Etkinlik raporundaki level_success etkinliğini tıklayın. level_success etkinlik raporunda number_of_attemps kartını bulun. İlgili karttaki ortalama deneme sayısını aşağıdaki gibi görürsünüz:

Buradaki analizlerden yararlanarak oyunun ortalama zorluk seviyesini optimize edebilirsiniz. Örneğin, ortalama deneme sayısı 1'e çok yakınsa oyunu biraz daha zorlaştırmayı düşünebilirsiniz.
Kullanıcılar, son seviyeyi geçememiş olsalar bile ipucu alarak soruyu çözmeye çalıştı mı?
Bir kullanıcı seviye atlamaya karar verdiğinde level_fail etkinliği tetiklenir. Kullanıcının bu kararı vermesinin birçok nedeni olabilir.
Ancak oyun, kullanıcılar ödüllü video reklam izledikten sonra ipucu verebildiğinden, kullanıcının en azından ipucu yardımıyla seviyeyi geçmeye çalışıp çalışmadığını bilmek önemlidir.
Etkinlik raporundaki level_fail etkinliğini tıklayın. level_fail etkinlik raporunda hint_used kartını bulun. hint_used etkinlik parametrelerinin ortalama sayısını görürsünüz. İpucu kullanıldığında değerin 1, kullanılmadığında ise 0 olarak ayarlandığını unutmayın.

hint_used kartındaki sayılar 0'a yakınsa ödülün (ipucu) kullanıcılar için pek çekici olmadığı anlaşılır. Ayrıca, ödüllü video reklamdan elde edilen geliri artırma fırsatını da kaçırıyorsunuz.
Bu nedenle, ödülü kullanıcılar için daha faydalı hale getirmeyi düşünebilirsiniz. Böylece kullanıcılar oyunla daha derinlemesine etkileşime geçebilir ve ödüllü video reklamdan elde edilen gelir artabilir.
Her oyunda ortalama kaç seviye geçildi?
Müthiş Çizim Testi'ndeki her oyunda toplam 6 seviye bulunur. Kullanıcı altı seviyeyi tamamladığında (her seviyeyi geçip geçmediğine bakılmaksızın) game_complete etkinliği, parametre olarak number_of_correct_answers ile tetiklenir.
number_of_correct_answers, kullanıcının kaç seviyeyi tamamladığını (doğru yanıt verdiğini) gösterdiğinden number_of_correct_answers parametresinin metriklerine bakarak yanıtı bulabilirsiniz.
Etkinlik raporunda game_complete etkinliğini tıklayın. game_complete etkinlik raporunda number_of_correct_answers kartını bulun. number_of_correct_answers etkinlik parametrelerinin ortalama sayısını görürsünüz.

Tamamlanan seviyelerin ortalama sayısı çok düşükse oyunu yeniden düzenleyerek kullanıcıların seviyeleri geçmesine yardımcı olmanız gerekir. Böylece kullanıcılar ilgilerini kaybetmeden oyununuzu oynamaya devam edebilir.
12. İşlem tamamlandı
AdMob+Firebase 101 Unity Codelab'ini tamamlamış olmanız gerekir. Bu Codelab'in tamamlanmış kodunu
101-complete_and_102-base klasöründe bulabilirsiniz.
AdMob+Firebase Codelab'in bir sonraki bölümünde, uygulama etkinliği akışını görselleştirmek için dönüşüm hunisini nasıl kullanacağınızı öğreneceksiniz. Ayrıca, uygulama güncellemesi olmadan oyundaki parametre değerini optimize etmek için Remote Config ve A/B Testi'nin nasıl kullanılacağı da ele alınacaktır.