mobil uygulamayı geliştirip markete koydunuz. ya sonra ... geektalks by gdg ankara
TRANSCRIPT
Uygulamayı Geliştirip Markete Koydunuz.
Ya Sonra?
Olcay Ay ayolcay
Key Performance Indicators (KPIs)
Geliştirdiğiniz Uygulamada Sizi Ne Mutlu Eder?
● Satış● Reklama tıklama● İçerik üretme ( Yorum, fotoğraf, video, ses )● İçerik tüketme● Uygulama indirme● Uygulamada geçirilen süre● Uygulama içi satın almalar
KPIs
● Tweet atma● Tweet görüntüleme● Takip etme● Uygulamada geçirilen süre >
5dk● Gezilen sayfa sayısı > 5
● Durum paylaşma● Fotoğraf yükleme● Video izleme● Arkadaş ekleme● Arkadaş profillerini gezme● Uygulamada geçirilen süre >
10 dk● Gezilen sayfa sayısı > 10
● Fotoğraf yükleme● Filtre kullanma● Fotoğraflara bakma● Fotoğraf beğenme● Fotoğrafa yorum yapma● Fotoğraf izleme adeti > 10● Uygulamada geçirilen süre >
5 dk
YapıKredi Bankası
YapıKredi Bankası
● Hesap açma● Havale yapma● EFT yapma● Kredi kartı ödeme
"Çözülmeye çalışılan problem de çözüm de belirsiz"
"Hayat kimsenin kullanmak istemediği ürünler geliştirmek
için çok kısa"
"Bütün startuplar çok kötü fikirlerle yola çıkarlar. Ancak
başarılı startuplar fikirlerinin çok kötü olduğunu anlayıp çok
geçmeden fikirlerini değiştirirler"
"Büyük düşün küçük başla"Minimum Viable Product
"Hızlı ölçeklendir"
"Eğer başarısız olacaksan erken başarısız ol"
● Ziyaretçileriniz kim● Sizi nasıl buluyorlar● Sitede nasıl vakit geçiriyorlar● Onlardan beklediğiniz şeyleri yerine getiyorlar
mı?● Anlık trafik analizi
Google Analytics
● Web Tracking● Android SDK● IOS SDK
Google Analytics
● Mobile özgü ekstra bilgiler● Ekran ( sayfa yerine )● Google Play entegrasyonu● Hata raporları● Uygulama hızı● Satış gelirleri● Uygulama içi satın almalar
Google Analytics Mobile SDK
● Entegrasyon yapabileceğiniz bir uygulama● Google Analytics SDK for Android v3'nın
indirilerek, libGoogleAnalyticsServices.jar dosyasının libs dizinine konup build patha eklenmesi
● Mobil uygulamalar için açılmış yeni bir Google Analytics hesabı
Entegrasyon – Başlamadan Önce
● Aktif olarak geliştirilmesi devam ediyor● Hala Beta'da● V1, V2, V3● Eğer eski bir versiyon kullanıyorsan migration
dokümanları mevcut.
Son Versiyonu Kullandığından Emin Ol
Manifest Dosyasına Gerekli İzinlerin Eklenmesi
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
Activitylere Easy Tracker Komutlarının Eklenmesi
public void onStart() { super.onStart(); ... // The rest of your onStart() code. EasyTracker.getInstance(this).activityStart(this); // Add this method. }
public void onStop() { super.onStop(); ... // The rest of your onStop() code. EasyTracker.getInstance(this).activityStop(this); // Add this method. }
analytics.xml Dosyasının Oluşturulması
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<!--Replace placeholder ID with your tracking ID-->
<string name="ga_trackingId">UA-XXXX-Y</string>
<!--Enable automatic activity tracking-->
<bool name="ga_autoActivityTracking">true</bool>
<!--Enable automatic exception tracking-->
<bool name="ga_reportUncaughtExceptions">true</bool>
</resources>
Ekran Görüntüleme Mesajlarının Otomatik Olarak Gönderilmesi
<-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>
<-- The screen names that will appear in reports -->
<string name="com.example.app.BaseActivity">Home</string>
<string
name="com.example.app.PrefsActivity">Preferences</string>
Ekran Görüntüleme Mesajlarının Manuel Olarak Gönderilmesi
Tracker easyTracker = EasyTracker.getInstance(this);
easyTracker.set(Fields.SCREEN_NAME, "Home Screen");
easyTracker.send(MapBuilder
.createAppView()
.build()
);
Event Mesajlarının Gönderilmesi
@Override
public void onClick(View v) {
EasyTracker easyTracker = EasyTracker.getInstance(this);
easyTracker.send(MapBuilder
.createEvent("ui_action", // Event category (required)
"button_press", // Event action (required)
"play_button", // Event label
null) // Event value
.build()
);
}
Event Mesajlarının Gönderilmesi
@Override
public void onClick(View v) {
EasyTracker easyTracker = EasyTracker.getInstance(this);
easyTracker.send(MapBuilder
.createEvent("ui_action", // Event category (required)
"button_press", // Event action (required)
"play_button", // Event label
null) // Event value
.build()
);
}
● EasyTracker ile oldukça kolay● Analytics.xml'e aşağıdaki satırı ekle
<bool name="ga_reportUncaughtExceptions">true</bool>
Yakalanamayan Hata Raporlarının Gönderilmesi
try {
// Request some scores from the network.
ArrayList highScores = getHighScoresFromCloud();
} catch (IOException e) {
EasyTracker easyTracker = EasyTracker.getInstance(this);
easyTracker.send(MapBuilder.createException(new
StandardExceptionParser(this, null)
.getDescription(Thread.currentThread().getName(), e),false).build()
);
Yakalanan Hata Raporlarının Gönderilmesi
● GA event mekanizması kullanılabilir● Videonun play etmemesi● Fotoğrafın yüklenmesi● API'nin cevap vermemesi ( 404, 502 )● API'nin boş cevap dönmesi
Özel Hataların Takip Edilmesi
Özel Hataların Takip Edilmesi
public void onError(View v, String error_action, String error_label ) {
EasyTracker easyTracker = EasyTracker.getInstance(this);
easyTracker.send(MapBuilder
.createEvent("error", // Event category (required) error_action, // Event action (required) error_label, // Event label
null) // Event value
.build()
);
}
onError("video_play_error","502");onError("api_error","user_not_found");
● Video start süresi● Fotoğrafların yükleme süresi● Web servisin cevap verme süresi● Kullanıcının herhangi bir aksiyona cevap verme
süresi
Uygulama Hızının Ölçülmesi
public void onLoad(long loadTime) {
Tracker easyTracker = EasyTracker.getInstance(this);
easyTracker.send(MapBuilder
.createTiming("resources", // Timing category (required)
loadTime, // Timing interval in milliseconds
(required)
"high scores", // Timing name
null) // Timing label
.build()
);
}
Uygulama Hızının Ölçülmesi
● Kullanıcıların sizi nasıl buluyor● Uygulama marketinden● Reklam kampanyaları● Market linklerini referrer parametresi ile paylaş
Kampanya Ölçümleme
● Uygulamayı güncelleme çıkarmadan webden konfigure edebilirsiniz
● Değişebileceğini öngördüğün şeyleri /assets/tagmanager dizininde <Container_ID>.json dosyasına koy
● Bir container oluşturarak kodun içinden bu değişkeni çekebilirsiniz
● String title = mContainer.getStringValue("title_string");
Tag Manager
Teşekkürler
Olcay Ay ayolcay