Xamarin Forms Firebase Analytics

Merhaba arkadaşlar. Bu yazımızda Xamarin Forms’da Firebase ile nasıl event gönderilir ve nasıl bu eventler debug edilir bundan bahsedeceğiz. Öncelikle bir Firebase üzerinden bir proje açmamız gerekiyor. Sonrasında ise bu projeden 2 farklı uygulama oluşturacağız. Bunlardan birisi iOS için diğeri ise Android için olacak.

Proje içinde uygulama oluştururken bundle id’nin doğru olduğundan emin olunuz. Uygulama oluşturmanın en son adımı olan Android için google-services.json ve iOS için GoogleServiceInfo.plist dosyalarını indirip projemize eklememiz gerekiyor. Burada dikkat etmemiz gereken nokta ise; Android tarafında json dosyasını ekledikten sonra BuildAction kısmında bunun bir GoogleServicesJson olduğunu belirtmemiz gerekiyor. Eğer bu seçenek gelmiyorsa VS For Mac’in saçmalığı tamamen. Projenin android tarafında csproj dosyasını editlemeniz gerekiyor.

Csproj dosyanızı herhangi bir editörle açtığınızda muhtemelen google-services.json dosyanızın None şeklinde olduğunuzu göreceksiniz. Bunu kendini GoogleServicesJson olarak ekleyip, projenizi tekrar çalıştırdığınızda düzelmiş olduğunu göreceksiniz.

Ardından iOS tarafında ise eklediğimiz GoogleServices-Infp.plist dosyasının ise Build Action seçeneğinden BundleResource olarak set edildiğinden emin olmalıyız

Şimdi Xamarin tarafına gelebiliriz. Burada her platform için farklı işlemler yapacağımız için DependencyService üzerinden ilerleyeceğiz. Eğer DependencyService nedir daha fazla bilgi almak isterseniz, burada daha detaylı bir anlatımı mevcut. İlk olarak bu serviste hangi fonksiyonları kullanacaksak bunlar için bir arayüz tasarlıyoruz. Ben sadece bir event loglayacağım için bu interface işimi görecektir. Siz kendi ihtiyaçlarınıza göre özelleştirebilirsiniz.

Sonrasında ilk olarak Android tarafına geçiyorum. Burada paket yüklememiz gerekiyor. Bu paketler;

Paketleri yükledikten sonra Android katmanında FirebaseEvents sınıfı oluşturup IFirebaseEvents’ten kalıtım almasını sağlıyorum. Sonrasında eklediğim paketler sayesinde eventleri loglayabiliyorum. Burada dikkat etmeniz gereken kısım, FirebaseAnalytics’ten bir instance almaya çalıştığında sizden bir activity istiyor. MainActivity üzerinde static bir değişken tanımladıktan sonra onCreate fonksiyonun MainActivity’nin kendisini set ederseniz sorun çözülecektir.

Bir sonraki aşama ise iOS kısmı. Burada yine Android tarfında yaptığımız gibi yeni bir sınıf oluşturup; bu sınıfın, oluşturduğumuz interface’ten kalıtım almasını sağlıyoruz. Sonrasında ise Xamarin.Firebase.iOS.Analytics paketini eklememiz gerekiyor.

Paketi ekledikten sonra oluşturduğumuz sınıfa bu kodları eklememiz gerekiyor.

En son işlem ise AppDelegate üzerinde olacak. Burada Firebase’i configure etmek gerekiyor.

Burada dikkat etmemiz gereken nokta ise; logladığımız eventler ertesi gün console’a düşüyor. Eventleri test ederken debug yapabilirsiniz. Bunun için bir sonraki yazıya bakmanız yararınıza olacaktır.

Sormak istediğiniz yerleri mail veya yorum atarak sorabilirsiniz. İyi çalışmalar.

3 thoughts on “Xamarin Forms Firebase Analytics

  1. var firebaseAnalytics = FirebaseAnalytics.GetInstance(MainActivity.activity); this line required a Context so it should be
    => var firebaseAnalytics = FirebaseAnalytics.GetInstance(Forms.Context);
    And when I check the “firebaseAnalytics” it said:

    FirebaseInstanceId = Java.Lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.xxxx. Make sure to call FirebaseApp…

    Am I missing something?
    Btw amazing article!!!

    1. Hi,

      First of all thank you for your comment. Did you add FirebaseApp.InitializeApp() to your MainActivity? If you can share your project with me on Github, i can help to you. My github username is omersezer.

      Good works.

      1. Thank you for your reply. My problem was that my “package_name” in the google-services.json did not match the app’s package name. Even though it also happened on the IOS side when the “BUNDLE_ID” in the GoogleService-Info.plist does not correspond with the “Bundle identifier” in Info.plist, but it worked excellent :D. You want to pay more attention when working with those files.

Leave a Comment

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.