Android uygulamadan para kazanmada farklı reklam firmaları

Herkese selam diyerek bu seferki yazıma başlayabilirim. Aşağıdaki yazılarımda Android (aslında mobil) uygulama geliştirirken nasıl para kazanacağımızdan kısaca bahsetmiştim.

Bu sefer ki yazımızda yine reklamcılık üzerinden para kazanmaya devam edeceğiz. Admob (Google) reklamcılığına ek olarak bu sefer AdBuddiz ve Vungle ile bu konuyu biraz daha açıklayacağım. 2014 Haziran ayının başında Google geliştiricilere bir mail atarak, bundan sonra yerel para kodlarını kullanacağını belirtti ve domain adında değişikliğe gitti. Hal böyle olunca Temmuz ayında yeni ödeme şeklini kabul edip yeni kontrol paneline geçmiş bulundum.

Öncelikle şunu söyleyeyim ki başlangıçta yadırgadığım, kontrol paneli ile Google Admob ve Adsense 'i birleştirme yoluna gitmiş. Size yeni Admob panelini açarken aslında bir Adsense hesabını da açmış oluyor ve gelirleri Adsense hesabından takip etmenize olanak sağlıyor. Yeni panele geçmeden önce forumlar sürekli bahsedilen TL hesabına geçince gelirlerde azalma oluyor konusunu yaşamadım. Hatta yeni panelden midir anlayamadım ama gelirlerde bir artış olduğu da kesin.

Google 'ın Admob üzerindeki yeni geliştirmeleri devam ederken mail hesabıma sürekli gelen "bizi deneyim biz daha çok tık başı para veriyoruz" şeklindeki maillerden birisi için artık dayanamayıp deneme kararı verdim.

Seçtiğim firma Adbuddiz oldu. Bu ismi bile zor söylenen firma için özel bir tercih nedenim olmadı. Tam sayfa reklam verebilme imkanı ile kolay entegrasyonu görünce denemek istedim. Gerekli SDK 'yı projeye ekledikten sonra  ufak bir kodlama ile uygulama içerisinde reklamı çalışır hale getirdim. Play Store uygulamalarında fazlaca reklama boğulmuş, kenarından köşesinden reklam fırlayan uygulamalardan ben de bunaldığım için sadece çıkış ekranına deneme amaçlı tam sayfa reklam koydum. Kullanıcı Home tuşuyla da uygulamadan çıkabildiği için belki  de hiç görülemeyecek bir reklam ekranı olmuştu. Birden fazla uygulamama bu şekilde yerleşim yaptıktan sonra Adbuddiz performans analizini sizinle paylaşmak istiyorum;

Adbuddiz dashboard

  1. Reklamı getirecek kodun uygulaması oldukça basit
  2. Google dışı gelir arayanlar için tercih edilebilir
  3. Paypal üzerinden%0.2 kesinti ile ödeme aldım
  4. Tam sayfa (interstitial) reklamcılık google için de geldi. Neden tercih edeyim sorusunun cevabı yok.
  5. Daha fazla para verdiği söylüyor ama bana pek inandırıcı gelmedi
  6. 100$ limit sonrası ödeme için NET45 (kazandığından 45 gün sonra) zaman aralığı koyuyor, Admob yeni panelle birlikte NET20-25 aralığına düşürdü.
Diğer bir reklamcılık kanalı olan Vungle ile tanışmamız biraz daha farklı oldu. Oynadığım oyunların bazılarında ek özellik (item) alımı için video izletenler olunca bu reklam kanalını da denemek istedim. Yine Vungle SDK 'sını indirerek işe başladım. Ufak bir kod geliştirmesiyle birlikte diğer uygulamalarda yaptığım gibi çıkış ekranına reklamı koydum. Sadece tek bir soru farkıyla! Uygulamadan çıkmak isteyen kişi acaba reklam izler miydi? Ben uygulamayı kullanan kişileri bu tarz reklamlara boğma onları sıkma eğiliminden kaçınmak istiyordum ve aklıma bu geldi. Vungle performansına gelecek olursam;
Vungle dashboard

  1. Video reklamları çok hoş duruyor ve ilgi çekiyor. Özellikle oyunlar tercih etmeli
  2. Google (Admob) tarafında bu özelliğe rastlamadım
  3. Reklamın izlenip izlenmediği hakkında bilgi döndüğü için farklı amaçlarla kullanma imkanı doğuyor
  4. Web sitesi performanslı çalışmıyor (çok daha kötüydü biraz düzelttiler)
  5. Her ne kadar gösterim miktarım az olsa da gelirler öyle çok fazla değil
  6. 100$ geçtiğiniz aydan NET60 (60 gün sonra) ödeme alabiliyorsunuz. (Kısaca benim gibi 3 ay beklediniz 4.ayın başında 100$ oldu ama ay sonundan 60 gün sonrasını bekleyeceksiniz)
  7. Paypal üzerinden 6 ay sonra olsa da ödeme aldım.
Kısaca toparlamak gerekirse, önceki yazılarımda da belirttiğim gibi Abmob' a alternatif birçok seçeneğiniz var. Bunlardan denediğim ikisi için uzun zaman zarfında olsa da ödeme aldım. Admob' a gıcığınız yoksa, farklı reklam kanalları denemek istiyorsanız, (bende olmadı ama) gerçekten daha fazla vereni bulma şansınıza inanıyorsanız farklı kanalları tercih edebilirsiniz. Onun dışında henüz kullanmasam da Admob altındaki "Mediation" başlığını incelemenizi tavsiye ederim.

Bu kısımda Vungle' ı ayrı bir yere koymak isterim. Henüz Google alternatifi olmadığından özellikle uygulama içi özellik açmakta reklam izleme zorunluluğu koyarak farklı gelir modeli oluşturabilirsiniz.

Her ne kadar tam sayfa ve video reklamı zorunlu koymasam da aşağıdaki gibi farklı! yorumlara maruz kalabilirsiniz.

Bir sonraki yazıda görüşmek üzere...






Androidde JSON veriyle çalışmak

Üşengeçlik nedeniyle uzun süredir bakmadığım android projelerine bir önceki yazımla birlikte geri dönmemle birlikte ufak tefek işleri de aradan çıkartmak istedim. Bu yazımda sizlere web servis üzerinden gelen JSON verilerle nasıl çalışabilirizi göstermeye çalışacağım.

JSON (Javascript Object Notation) XML veri yapısına alternatif teşkil eden, gözle rahatlıkla okunabilen bir veri yapısı formatıdır. Hal böyle olunca veri transferinde kullanılması aşikardır. Özellikle .Net tabanlı uygulamalarda ağırlıklı olarak XML veri yapısının kullanılması ve ön plana çıkartılması nedeniyle duyulması biraz zaman almıştır.

Veri yapısına bağlı olarak %30 lara varan oranda XML veri yapısından daha az yer kaplamasından ve diğer programlama dilleriyle (Java, Javascript) uyumluğunu göze alarak ben de servislerimde dönüş formatı olarak JSON veri kullanmayı tercih ettim. Böylece ileriki zamanlarda olur da .Net web servislerinden vazgeçersem client tarafında yapılacak iş daha az olacağını ümit ediyorum.

Web Servis metodlarından çıkan DTO (Data Transfer Object) nesnelerini JSON formatında formatladıktan sonra (belki bir sonraki .net yazımız olur) oluşan JSON string 'imizi android uygulamamıza gönderiyoruz. Belki daha önceki yazılarımda bahsetmişimdir, android tarafında .net web servislerini kullanmak için KSOAP2 isimli kütüphaneyi kullanıyorum ve servis sorgulaması sonucu üretilen json stringini android client uygulamasına geçiriyorum. Dilerseniz öncelikle .net tarafında iletmek istediğim veriye ait sınıf yapısını inceleyelim.

Resimde görüldüğü gibi CategoryResponseDTO sınıfı client uygulama tarafına iletmek istediğim asıl nesnedir. Aynı şekilde içerisinde bana ait sınıfları içerebilir ve bu sınıflar birbirlerini miras alabilirler. Böyle karışık (aslında çok da karışık değil) nesneyi JSON formatına çevirdiğimizde aşağıdaki string oluşur.

{"Categories":[{"Image":"/Uploads/533a8bf0-2ca5-4ea1-a860-97ec4b4c6317.jpg","CaptionTR":"Çorbalarx","CaptionEN":"Soups","CaptionFR":"Fr Çorbalar","CaptionGE":"GR çorbalar","CaptionRU":"RUS çorbalar","CaptionAR":"AR çorbalar","ID":1},{"Image":null,"CaptionTR":"Yemekler","CaptionEN":null,"CaptionFR":null,"CaptionGE":null,"CaptionRU":null,"CaptionAR":null,"ID":2},{"Image":"/Uploads/noimage.png","CaptionTR":"Salatalar","CaptionEN":"Salads","CaptionFR":null,"CaptionGE":null,"CaptionRU":null,"CaptionAR":null,"ID":7},{"Image":"/Uploads/4990c79d-5103-4b72-9782-599c4c1a42a8.jpg","CaptionTR":"Doğumgünü Pastaları","CaptionEN":"Birthday Cakes","CaptionFR":"Birthday CakesFR","CaptionGE":"Birthday CakesGR","CaptionRU":"Birthday CakesRU","CaptionAR":"Birthday CakesAR","ID":8}],"ResponseCode":"0000","ResponseStatus":1,"ResponseMessage":null}

JSON formatına baktığımızda aslında verinin ne olduğunu anl
ayabiliyoruz. Yukarıdaki JSON string client uygulamasına geçtikten sonra dilediğiniz gibi parçalayabilirsiniz. Ama JSON verinin client tarafında oluşturulmasını istiyorsanız tıpkı sunucu tarafında olduğu gibi client tarafında da sınıfları tanımlamak gerekecek.

Görüldüğü gibi java kodunda da CategoryResponseDTO sınıfını ve bunun ana sınıfı olan ResponseBaseDTO sınıfını oluşturduk. .Net tarafındaki List<CategoryDTO> yapısını java tarafında ArrayList<CategoryDTO> olarak oluşturmak için aşağıdaki sınıf tanımlamalarını gerçekleştiriyoruz.


Dikkat ederseniz JSON verinin parçalanma işlemini ana sınıflarda (BaseDTO ve ResponseBaseDTO) sınıflarda başlatıp bunları miras alan sınıflarda sadece sınıfa ait üye için işlem yaptırıyorum. Bu sayede kontrollü bir şekilde JSON veriden sunucu tarafındaki veri sınıflarımızı client tarafa taşımış oluyoruz.

JSON veriyi parçalama işleminde JSONObject sınıfını kullanıyoruz. Dizi-liste işlemleri için JSONObject.getJSONArray() fonksiyonuna listeminizin ismini (Burada Categories) veriyoruz. Alınan bu JSON dizi verisi sonrasında diğer sınıflar içerisinde parçalanıp (parse) değişkenlere yerleştiriliyor.

Bu şekilde client uygulamasına gönderdiğiniz veriler, string işlemleri sonucunda ürettiğiniz verilerden daha güvenilir oluyor. Ayrıca işlemler miras mantığında ilerlediğinden belirli bir düzene oturmuş oluyor. Umarım bu yazımda ihtiyacınız olan sorulara yanıt bulmuşsunuzdur. Aklınıza takılanları buradan sorabilirsiniz.