Mobil uygulamada backend nasıl olmalı?
Herkese merhaba,
Bugün önemli bir konuya değineceğim. Mobil uygulamaların görünmeyen ama en önemli kısmı. Backend.
Backend ne demek ne işe yarar kısaca önce bundan bahsedelim. Daha önceki yazılarımda yönetilebilir mobil uygulamalar ve yönetim paneli nasıl olmalı onlardan bahsetmiştim. Bu yazıyı da okumanızda fayda var. Bkz:
https://ferhatbalaban.com/yonetilebilir-mobil-uygulamalar/
Backend, yönetim paneli ile karıştırılmamalı. Yönetilebilir uygulamaların mutlaka bir backend i vardır. Neden mi? Yönetilebilir olması demek aynı zamanda client app lerin yani ios ve android in ayarları çektiği işlemleri yaptığı bir backend api si vardır. Bu api genelde json formatında çıktılar verir client mobil uygulamalara.
Basit anlamda bir mobil uygulama backend şunlardan oluşur.
1 – Veritabanı
2 – Backend Api
Örneğin en basit anlamda backend api de bulunan bir settings servisi veritabanında bulunan settings tablosundan gerekli verileri çekerek json a dönüştürür ve clientlara iletir.
Örnek json çıktısı:
{
“success”: true,
“error_code”: 0,
“error_message”: “”,
“data”: [
{
“key”: “default_banner_mode”,
“value”: “2”
},
{
“key”: “admob_app_id_ios”,
“value”: “ca-app-pub-34534345345345~4361065035”
},
{
“key”: “admob_banner_id_ios”,
“value”: “ca-app-pub-43353453453/7181055093”
}
]
}
Bu çıktıda ios a gerekli bazı ayarlar gönderilmiştir. Backend istek yapan client a bakarak ve istek yapan user a göre gerekli dönüşleri yapabilir. İşte tüm bu kurgu yani nasıl çıktı vereceği veritabanındaki değerleri nasıl döneceği yada veritabanına nasıl insert/update/delete yapacağına backend api karar verir.
Peki bu backend api nasıl hazırlanıyor?
Öncelikle backend api yi oluşturacağınız yazılım dilini seçiyorsunuz. Bu dotnet, php olabilir. Hangi platformu seçerseniz onunda içinde kullanacağınız mvc framework lerden birini seçmeniz gerekiyor.
Dotnet için:
.net mvc framework
.net mvc core framework
Php için:
Laravel
Symphony
Codeignitor
…
Tüm bu seçimleri nasıl yapmalısınız ne seçmelisiniz buna bu yazıda girmeyeceğim ancak müşteriniz yada yazılımcılarınız hangi platformu tercih ediyorsa onu seçiyorsunuz genelde. Ancak seçim şansınız varsa ne seçmelisiniz? Buna başka bir yazıda değineceğim çünkü çok uzun olacak o yazıda. Sebebi de bu konu en çok tartışma konusu ve özellikle microsoft ile çalışanların .net kullananların php tercih etmemesi yada linux ile çalışanların .net e çok uzak olması sebebi ile 2 platform arasında şu daha iyidir gibi tartışmalar çok oluyor.
Bu güne kadar hem müşterilerin tercihi sebebi ile hem de bilgi edinmek amacı ile 2 tarafta da oldukça tecrübem oldu. Ağırlıklı olarak php-mysql tercih etsekte .net ve .net core kullandım ve karşılaştırma şansım oldu. Ancak son zamanlarda eğer tercih bize bırakılırsa Php-Laravel tercih ediyoruz. Bunu da başka bir yazıda anlatacağım.
Php kullananlar da genelde php ile tam uyumlu mysql veritabanını kullanmayı seçiyor. Laravel framework ile de backend api yi oluşturarak sağlam bir backend api yi kolayca yapabiliyorlar.
Birçok yerde Laravel nedir nasıl çalışır bilgi alabilirsiniz ancak ben gözlemlediğim en büyük faydaları yazacağım burada.
1 – Güvenlik: Php framework lerde birçok yapı hazır gelir. Bunlar içinde en önemliside bence kullanıcıların authentication yani yetkilendirme işlemleridir. Hangi kullanıcı ne yapabilecek hangi api functionlarını çağırabilecek gibi tüm bunları Laravel altyapısı ile sağlam şekilde kurgulamak çok kolay ve etkili sonuçlar verir.
2 – Migration: Veritabanınızı migration lar ile yönetmek oldukça pratiktir. Özellikle test ortamınız var diyelim burada bir tablo yada kolon oluşturdunuz aynısını prod a da yapmanız lazım hazır olduğunuzda. Ne yapmıştım diye hep test db sini incelemek zorunda kalırsınız. Migration lar ile tüm bunların kaydını tutabilir ve kolayca tek bir komutla bunu prod ortamına aktarabilirsiniz.
3 – MVC: Kullanılan her framework günümüzde bir mvc yapısından oluşur. Yani Model-View-Controller. Modeller veritabanındaki tabloları simgelerken, Controller arayüzünüzle veritabanı arasında tüm kurgularınızın yer aldığı işi yapan kısımdır. View ler ise arayüz yani ekranda görünen kısımdır. Laravel de buna ek olarak bu model, view ve controller ları komutlar ile kolay şekilde oluşturabilir ve hızlı şekilde kod geliştirebilirsiniz.
4 – Performans: Cache yapısı Laravel de iyi kurgulanmış ve kullanması çok kolay. Sürekli veri çekmeniz gerekmeyen tablolarınız illaki olacaktır. Bunları cache yani önbellek ile saatlik , günlük cache ler ile kullanabilir ve performansınızı kolay şekilde yönetebilirsiniz.
5 – Model – Tablo İlişkisi: Modellerimiz ile sql yazmadan php kodları ile select/insert/update/delete işlemlerini kolay şekilde yapabiliriz.
6 – Hazır kütüphaneler: Laravel birçok hazır kütüphane içeriyor ve bunları kolay şekilde projeye import edebiliyorsunuz.
Bunların dışında hiçbir framework siz iyi kurgulamazsanız backend api tam olarak iyi olmaz. Birazda bunlardan bahsedelim.
1 – Loglama: Her işlemi loglamanızda fayda vardır. Bunun için bir log request tablosu yaratabilir ve client ların yaptığı her request i ve dönüşlerinizi loglayabilirsiniz. Laravel burada yine imdadımıza yetişiyor. Middleware dediğimiz katmanda tek bir class ile bu işlemleri yapabiliyorsunuz. Hatta 500 hataları oluştuğunda yada client lara verdiğiniz response ların süreleri belli değerleri aştığında alert ler üretip ilgili kişilere mail ve sms atabilirsiniz burada. Bu sayede bir problem olduğunda anında haberiniz olur.
2 – Kritik kontroller: Backend i yazarken örneğin kritik işlemler var ise bunları çok iyi kontrol etmek ve açık kapılar bırakmamak gerekir. Örneğin bir satınalma işleminiz var ise Apple store yada Google play üzerinden bu satınalma genelde client dan yapılır ancak alınan receipt yani fatura çıktısı diyelim buna bu backend e iletilmeli ve backend tarafında yine google ve apple a sorgulama yapılarakçift kontrol yapılmalıdır. Çünkü backend api nizin yapısını çözen biri mutlaka satınalma yapmış gibi backend inize istek yapabilir. Bundan dolayı bu gibi yerlerde yani kritik yerlerde mutlaka çok fazla detaylı düşünmeli her aşamada kontroller koymalı ve bazende bir hacker gibi düşünmeniz gerekmektedir.
Daha anlatacak tabi çok şey var ama çok da uzun yazmak istemiyorum. Sadece genel bilgi vermek istedim. Başka yazılarda backend ile ilgili farklı detaylara girmeye devam edeceğim. Şimdilik hoşçakalın.
Mobil Uygulama Geliştirme
Merhaba,
Mobil uygulama geliştirmek isteyenler yada mobil uygulama yaptırmak isteyenler için mobil uygulama geliştirme nasıl oluyor ve aşamaları neler bunları aktarmak istiyorum. Çünkü sürekli sorulan bu sorulara basit ve anlaşılır cevaplar vermek çok önemli.
1 – Mobil Uygulama Geliştirmelerini Kimler Yapar?
Mobil Uygulama bir yazılım firması yada bu işi bilen mobil uygulama yazılımcısı tarafından yapılabilir. Burada kimin yaptığından daha çok nasıl destek alacağınız ve nasıl çalışacağını önemlidir. Genelde freelance mobil yazılımcı olarak çalışanlar ek bir iş olarak bu işi yapabilmektedir ve buda bazı sıkıntıları beraberinde getirir. Freelance sürekli bu iş ile uğraşıyorsa yani bir yerde çalışıp ek zamanında yapmıyorsa sürekli bu işle uğraşıyorsa sorun olmayabilir ancak bu durumda da yaptığı işi yasal yapıyormu , en azından şahıs firması varmı ve referansları sağlam mı sorgulamak gerekir. Eğer bir yerde çalışıyor ve bu işi yapıyorsa o zaman işiniz yapılsa bile devamında destek konusunda sıkıntılar yaşayabilirsiniz. Bir mobil uygulama yapıldıktan sonrada sıkıntı yaşadığınızda bu işi başkasına aktarmak o kadar kolay bir iş değildir. Bu yüzden en iyi çözüm seçtiğiniz firma yada kişi ile devam etmektedir. Ancak bu konuda aktarım yapmak durumunda kalırsanız da bir başka yazımızda anlatacağımız bu yazının konusu olmayan yazımı okumanızı tavsiye ederim. Linki burada daha sonra paylaşacağım.
İş yaptığınız firma yada şahıstan mutlaka bu bilgileri isteyin.
- Firma yada şahıs referanslarında bulunduğu web sitesi
- Ne kadar zamandır bu işi yapıyor
- Hangi yöntemi kullanıyor? (Madde 2 de anlattığım 3 yöntemden biri?)
- Sonrasında nasıl destek veriyor?
- Destek vermez ise ne olacak? Bu durumda desteği garanti altına almak için sözleşme yapmanızı şiddetle tavsiye ederim.
- Tasarım konusunda çözüm sunabiliyor mu? Bunu sizde başka birileri ile çalışarak halledebilirsiniz ancak tek bir yerden tüm hizmetleri almanız daha iyi olacaktır. Bu yüzden bunu mutlaka sorun. Eğer bu konuda hizmet vermiyorsa başka bir çözüm bulmanız gerekecektir.
- Proje bazlı anlaştınız devamında ek istekleriniz çıktı bu durumda ek istekler için nasıl bir fiyatlama yapıyor. Örneğin adam/gün ücreti nedir. Bir işin kaç gün süreceğini neye göre belirliyor.
2 – Mobil Uygulama Geliştirmesi Nasıl Yapılır?
Mobil uygulama 3 farklı şekilde hazırlanabilir. Günümüzde en çok tercih edilen bu 3 yöntemi ve avantaj dezavantajlarını da başka bir yazımda paylaşacağım bu yazıyı çok uzun tutmamak adına şimdilik bu 3 yöntemden bahsedelim.
2-a – Native Mobil Uygulama Geliştirme:
Native dediğimiz uygulama geliştirme yöntemi aslında Google ve Apple ın önerdiği her platforma yani android e uygun Android Studio da Java yada Kotlin dilleri ile veya Ios için Xcode Uygulamasında Swift yada Objective-C dilinde yapılan geliştirmelerdir. Günümüzde Android için Java , Ios için Swift dilleri daha çok tercih edilmektedir. Kotlin yaklaşık 1 sene oldu aşağı yukarı çıkalı ancak şahsi görüşüm ben ısınamadım bana garip geldi. Java yada Swift i tercih ederim. Eğer projenize sıfırdan başlanacak ise ve ileride yazılımcı bulma konusunda sıkıntı yaşamak istemiyorsanız en çok tercih edilen bu dilleri kullanan mobil yazılımcıları yada firmaları tercih etmenizi öneririm.
Bu aşamadan sonra diğer anlatılan yöntemlere Cross Platform Mobil Uygulama Geliştirme Yöntemleri denir. Cross platform özetle bir ortamda geliştirme yapıp 2 platform içinde uygulama üretebilmektir. Android için ayrı Ios için ayrı kod yazılmaz. Bu maliyet ve zaman konusunda tasarruf etmenizi sağlar. Ancak madem bu kadar iyi neden öyle yapmıyor herkes dediğinizi duyar gibiyim 🙂 Elbette dezavantajları da var. Bunları da yine anlatacağım.
2-b React Native ile Mobil Uygulama Geliştirme:
Facebook tarafından desteklenen bir cross platform. Facebook uygulamasında mesela bu kullanılıyor.
Ancak detaya girmeden daha fazla ingilizce bilenler yada çeviri yaparak bu yazıyı okuyabilirsiniz.
https://medium.com/mop-developers/mobile-app-development-react-native-vs-native-ios-android-49c5c168045b
Özetle şunu söylüyor , facebook uygulamasında da kullanılan bu sistem facebook tarafından bir gün desteklenmez ise ne olacak. Yada facebook react native de çıkan hataları facebook app ini çok etkilemiyorsa 2. öncelik vererek sonraya bırakabiliyor. Yada google ve apple ın yeni çıkardığı bir özellik react native de sonradan yapılabiliyor.
Avantajı ise aynı anda 2 platform içinde mobil uygulama geliştirme yapabilmesi. Bu yüzden çok tercih ediliyor. Yoksa kimse native varken riske girmek istemez yada facebook böyle bir işe soyunmaz.
2-c Cordova ile Mobil Uygulama Geliştirme
Cordova aslında cihaz içindeki browser da çalışan html tabanlı bir uygulama sunuyor. Basit işler için tercih edilebilir ancak native bir uygulama hissiyatı veremiyor. Bu yüzden bence en son tercih edilecek seçenek bu. Bu konuda daha önceki yazılarımu şu linkden bakarak okuyabilirsiniz https://ferhatbalaban.com/tag/cordova/
2-d Soru; Özet;
React native kullanmaya değer mi? Cevap: Değişir ancak çoğu sorunun cevabı gördüğünüz üzere Native dir.
Sadece ios yada sadece android uygulama mı yaptıracaksınız ? Native
Küçük bir ekibiniz yada kısıtlı zamanınız ve bütçeniz mi var? React Native.
Çok kapsamlı bir uygulama mı yaptıracaksınız ? Native.
Yaptırdığınız mobil uygulama çok uzun süreler hayatta kalacak mı, Facebook a ya birşey olursa korkunuzu atamıyormusunuz? Native.
Çıkar çıkmaz yeni cihaz özelliklerini desteklemeye ihtiyacınız var mı ? Native.
Genel Özet;
Tüm bu kriterleri değerlendirerek mobil yazılım geliştirme yapacak yada yaptıracak iseniz çalışacağını kişiyi ve çalıştığı platformu iyi değerlendirin. İşiniz için büyük emekler verip paralar harcıyorsanız iyi düşünmek ve iyi bir karar vermek çok önemli diye düşünüyorum. Sorularınız olursa ana sayfadaki iletişim bölümünden benimle irtibata geçebilirsiniz.
Saygılar, sevgiler.
Yönetilebilir mobil uygulamalar
Merhaba,
Bu yazımda olmazsa olmaz bir konudan bahsedeceğim. Yönetim paneli nedir ? Nasıl olmalıdır? Neler içermelidir?
Önce nedir bundan başlayalım. Yönetim paneli genelde atlanan bir konu oluyor bu yüzden bu konuya değinmek istedim. Bir mobil uygulama yada web sitesi yani online olarak çalışan bir uygulama yapmak istediniz diyelim. Bu uygulama yaptığı işe göre değişir ama her online çalışan uygulamanın bir yönetim sistemine mutlaka ihtiyacı vardır. Tamamen client tarafında çalışsa bile mutlaka bazı ayarlar dinamik, bazı içeriklerde dinamik yönetilmelidir. Bu şekilde olması pratik ve avantajlı olandır.
Örnek vermek gerekirse yaptığını uygulama açılırken cihaz bilgilerini bildirim gönderebilmek için api aracılığı ile backend e göndermelidir. Yada uygulama içindeki bazı bilgileri yada sayfaları api aracılığı ile çekmelidir. Yoksa uygulama statik çalışan ve yönetilemeyen bir uygulama olarak kalır. En basitinden uygulamanızı kullanan kullanıcılara bildirimler göndermek için bile bir yönetim paneline ihtiyacınız olacaktır.
En basit olan bu ihtiyaçları karşılayacak ve işinizi kolaylaştıracak bazı hazır çözümler geliştirilmiştir. Mesela firebase , onesignal gibi platformlar bu işlemleri kolay şekilde halletmenize olanak sağlar. Toplu bildirimler göndermek için bu gibi platformları kullanabilirsiniz. Ancak bazı ayarları dinamik olarak çekmek , bazı içerikleri dinamik olarak uygulamaya getirmek yada kafanızda yer alan özellikleri yönetmek için daha kapsamlı bir yönetim paneline ihtiyacınız olacaktır.
Mesela bu bahsettiğimiz platformlardan firebase de çoğu içeriği yönetebileceğiniz ve uygulama ile konuşan bir api ve arka planda çalışan bir veritabanına sahip olabilirsiniz. Bu durumda uygulamanızı da firebase e göre yazmanız gerekir.
Bazı basit işlemlerde bu tercih edilebilir. Yada sadece push bildirimleri göndermek için onesignal seçebilirsiniz. Ancak şöyle bir düşündüğümüzde biz ne isteriz?
Biz aslında bir uygulamaya sahip olacaksak tüm kontrol bizde olsun isteriz. Bir platforma bağımlı olmasın, bir sistem kapanırsa biz ondan etkilenmeyelim.
Buna geçmişten güzel bir örnek vermek gerekirse, belki duymuşsunuzdur yada duymadıysanız anlatayım bundan birkaç sene önce herkes parse platformu üzerine uygulama geliştiriyordu. Evet çok kolaylıklar sağlıyordu hatta talep üzerinde bizde bazı işler yaptık. Ancak hep içimde bir şüphe vardı bu tip altyapılar kullanırken pratik ama uzun vadede bize ait değil ve bağımlı hale geliyoruz diye. Nitekim bunları düşünürken platform sahipleri sistemi kapatacaklarını açıkladı. İnsanları mağdur etmemek için ise kodları aık kaynak olarak paylaştılar. Yani platform kodlarını. Bu tip altyapılar karmaşık sistemler ve herkese hitap eden sistemler olduğundan kodları anlamak yada sistemi kendi sunucularınızda çalıştırmak o kadar kolay bir iş değil. Bir sorun çıktığında müdahale etmeniz o kadar kolay değil. Birçok insan ise bu platformu ya kurmaya çalıştı kendi sunucularında yada yapılarında değişikliklere gitti. Bildiğim çoğu değiştirdi çünkü en güzel olan sistem yönetebildiğiniz ve hakim olduğunuz sistemdir.
Şimdi bu örneklerden sonra ihtiyacımız olan yönetilebilir sistemin nasıl olması gerektiğinden bahsedelim.
Mobil yada web uygulamaları için ihtiyacımız olan 2 bileşen var. Hatta veritabanını da düşünürsek 3 diyebiliriz.
1 – Veritabanı : Tüm uygulama ile ilgili verilerinizin saklandığı yer. Bu veritabanı, mssql, mysql, oracle, postgresql gibi veritabanları olabilir.
2 – Yönetim paneli: Veritabanı ile konuşan ve tim veritabanını yönetmenizi, ayarları değiştirmenizi ve işlemler yapabilmenizi sağlayan web tabanlı arayüz. Bu arayüzün mobil uygulama olması pratik değildir. Web tabanlı olması sebebi genelde bu ayarları mobil haldeyken yapmazsınız. İşinizin başına oturur ayarları yapar ve kalkarsınız. Web tabanlı arayüzler geliştirmek ve güncellemek için daha pratiktir. App store a çıkmanızı da gerek yoktur. Değişiklik için hosting de bulunan kodları değiştirirsiniz ve web yönetim paneli isteğinize göre şekillenir. Ayrıca mobil cihazınızdan da kullanabilirsiniz. Tabi bunun için hazırlanan yönetim panelinin de mobil uyumlu yani responsive dediğimiz şekilde olmalıdır.
3 – Api: Client yani app leriniz ile konuşan sizin görmediğiniz ama web servis dediğimiz kendi response dili olan (xml yada json) bir servistir. Bu serviste yönetim paneli gibi hazırlanabilir ancak arayüzü web gibi değildir. Genelde yazılımcıların yazılımcılar ile haberleştiği bir katman gibi düşünün. Mobil uygulama yazılımcısı bu api yi kullanmak için api yi yazan kişiden api doc ister. Yani api kullanım klavuzu. Mobil yazılımcı direk yönetim panelinden işlem yapamaz – yapmamalıdır. Yada direk veritabanına veri gönderemez. Bunu yapmak için belli kurallar çerçevesinde api yi çağırır. Api ye veri gönderir, api bunu işler ve veritabanına yazar ve api client a yani mobil uygulamaya haber verir. Uygulama sahibi de yönetim panelinden tüm bunları görür bu işlemleri inceler ve yönetir. Yani api bu işe yarar, client app ler ile backend arasında bağlantı kurar.
Şimdi birde yönetim panelimizin neler içermesi gerekir bundan bahsedelim.
Yapacağınız işe göre , ihtiyaçlarınıza göre şekillendirebilirsiniz. Örneğin içerik ağırlıklı bir app var ise mesela Kategoriler ve buna bağlı yazılar var. Bu kayıtları ekleme, silme, güncelleme yapabilmelisiniz. Tüm bu kayıtları kolay şekilde aratabilmeli, sıralatabilmeli, filtreleyebilmeli, çok kayıt olduğunda da size liste şeklinde sayfalama yaparak gösterebilmelidir. Özetle bu işlemlere kayıt yönetimi diyelim. Bunu içermelidir elbette.
Ancak burada yapacağınız işleri yönetmek dışında olması gereken bazı konular var.
1 – Güvenlik :
Bu konu genelde atlanan bir özelliktir. Yönetim paneli en çok korunması gereken yerlerden biridir. Buraya sızan bir kişi herşeyi değiştirebilir öyle düşünün. Sıradan bir kullanıcı adı ve şifre ile bu yönetim paneline girmemelisiniz. Bir parola politikası , birden fazla yanlış denemeye – brute force saldırı yani çoklu şifre denemelerine karşı korumalı olması gerekmektedir. Şifrelernizi bu yüzden karmaşık şifreler olarak belirlemelisiniz. Zaten yönetim paneli şifre belirlerken basit şifre girmenize izin vermemelidir.
2 – Yönetici yönetimi ve roller:
Ayrıca ana yönetici olarak farklı yöneticiler yaratabilmeli ve yönetim panelinin belli yerlerini kullanabilme imkanı sağlayabilmelisiniz. Bu yönetim panelini sadece ben kullanacağım diye düşünmeyin. İlerde işiniz büyüdüğünde bu basit özellik yok ise yine ihtiyacınız olacak ve tek kullanıcının olduğu sistemde şu sorunları yaşayacaksınız. Herkes aynı kullanıcı ile işlem yaptığından bir sorun olduğunda kimin ne yaptığını bilemeyiz.
3 – Log:
Bunu anlamak için herkes farklı kullanıcılar ile girmeli ve yönetim paneli altyapınız audit log dediğimiz yönetim loglarını tutmalıdır. Yani kim ne işlem yaptı ne değiştirdi bunu süper yönetici rolundeki kişiler kolay şekilde görebilmelidir. Yani yönetim panelinden süper yönetici roller, izinler , yeni yöneticiler belirleyebilmelidir. Her yönetici tipi farklı işler yapabilir. Bu yüzden yönetim panelinizin her giren kişi için farklı menüler ve haklar ile çalışması gerektiği ortaya çıkar.
4 – Mobil uyumluluk: Bu çok önemli olmasada bilgisayar başında değilken rahat işinizi yapabilmeniz acilen bir ayar değiştirmeniz gerektiğinizde zorlanmamanız açısından yönetim panelinizin mobil uyumlu olması önemlidir.
Bu yazıda yaptırdığınız yada yapacağınız mobil uygulamada yönetim paneli neden önemli ve neleri içermeli onu anlatmaya çalıştım. Sorularınız olursa lütfen çekinmeyin.
Bir uygulama denemesi
Bir uygulamanın serüvenini burada anlatacağım ve başarıya nasıl ulaştığını paylaşacağım. Uygulamayı yapmanın yeterli olmadığını uygulamayı store a çıktıktan sonra sürekli iyileştirme gerektiğini ve hata raporlarını inceleyerek uygulamayı hatasız hale getirmeniz gerektiğinden bahsedeceğim.
Bir ihtiyaçtan yola çıkarak uber benzeri bir taksi uygulaması yaparken ihtiyaç duyduğumuz ayrı bir uygulama gerekti. Önce varolan uygulamaları inceledim hepsinde eksikler gördüm. İhtiyaç temel olarak oturduğumuz yerden sanki araç sürüyor gibi lokasyon değiştirebilmek ve gerçekçi bir rota üzerinde hareket edebilmekti. Android buna imkan tanıyor ve bu konuda uygulamalar var. Bunların ismine mock yada fake gps yada hide gps location deniyor.
2017 sonlarında çıktığım uygulama hiç tanıtım yapmadan yüklenmeye ve iyi yorumlar almaya başladı ama hem harita hemde kritik bazı işlemler yaptığından bazı crash ler oluyordu. Bunlar ile tek tek ilgilenmek ve yapılan kötü yorumları incelemek ve araştırmak gerekti. Daha kolay kullanım ve anlaşılır şekilde nasıl olabilirdi uygulama sürekli düşünmek gerekti.
Yavaş başlayan hareketlilik giderek hızlandı. Grafikte göreceğiniz üzere uygulamanın potansiyeli açık şekilde görülüyor ve giderek ivmelenen şekilde download sayısı artıyor. 4 civarı olan puanda 4.5 in üzerine çıkmış durumda.
Son durumu ve neler yaptığımı bu yazımda paylaşmaya devam edeceğim. Şimdilik herşey iyi gidiyor.
Uygulamayı buradan android cihazı olanlar yükleyebilir.
Mobil Uygulamada Kullanıcı Sayısını Arttırma Yolları
Merhaba,
Bu yazımda bazı önemli tecrübe ve deneyimlerden bahsedeceğim.
İstediğiniz bir android yada ios mobil uygulamayı yaptınız yada yaptırdınız. Peki sonra, ziyaretçi nasıl elde edeceksiniz nasıl uygulamanızı tanıtacaksınız.
Öncelikle uygulamanızın bir ihtiyaca cevap verdiğiniz bir sorunu çözdüğünü yada bir oyun ise eğlendirdiğini düşünüyorum yoksa zaten pek şansınız yok. Çünkü uygulamanızı tanıtsanız dahi sonrasında uygulamayı kuran kişileri tekrar kaybedersiniz tüm yaptığınız reklam çalışmaları da boşa gider.
Bu yüzden sıralamada 1. sırada yer alan işe yarar bir uygulama yapmak
Gelelim sonraki adıma. Uygulamanızı yaptınız ve yayına aldınız. Burada yayına aldıktan sonra amacımız uygulamanın hatalarını gidermek. Bu sırada da mümkün olduğunca kötü puan almamak amacımız. Bunun 2 yolu var , ya store a çıkmadan önce çok iyi test edeceksiniz yada tam olarak güvenmiyorsanız sağlam olduğuna başka bir isim ile bir uygulama çıkarak store da test edilmesini sağlayacaksınız. Crash raporlarını sürekli takip edip iyileştirme yapacaksınız ta ki hatasız bir app elde edene kadar. Yani 2. sırada çok iyi test var. Bu testi yaparken kullanıcıya ihtiyacım var nasıl test yaptırabilirim store da dediğinizi duyar gibi oldum 🙂 Bunun için ya iyi bir test grubu kurup store a çıkmadan önce beta yayına alacaksınız uygulamanızı yada bu grubunuz yok ise ufak bir reklam ile adwords reklamı yaparak gelen yorumları ve crash leri gözlemleyebilirsiniz. Ancak bu 2. yöntemi tercih ediyorsanız o zaman farklı bir isim ile uygulamanızı store a çıkmanızı tavsiye ederim. Zira gelecek kötü yorumlar olursa uygulamanızın puanını da kötü etkileyecektir. Burada 2 iş olur gibi çekincelere girmeyin. Zahmet olmadan başarı olmuyor malesef.
Android , ios uygulamanızı stable bir hale getirdiniz yani hatasız düzgün çalışır bir hale geldi. Bundan sonra gözlemlemek ve sürekli iyileştirme de 3. sırada yer alıyor. Gözlemlemek derken sürekli crash raporları ve gelen yorumları takip etmeniz anlamına geliyor. Bu aşamada ufak ufak reklama devam edip 2. sırada yer alan adımı sağlıklı atlatıp atlatmadığını görmeniz ve emin olmanız gerekiyor.
Arada kötü yorumlar illaki gelecektir, store da yorum yaparken insanlar biraz acımasız olabiliyor hele ki uygulamanızda rahatsız edici reklamlar var ise. Bu yüzden size tavsiyem reklamları 3. sırada iyi yorumlar aldıktan sonra devreye sokmanız. Reklam olan uygulamalara hele de popup açılan reklamlar varsa yani rahatsız edici düzgün yerleştirilmemiş reklamlar varsa bu durumda alacağınız puanlar daha acımasız olabiliyor. Ücretsiz ve reklamsız uygulamalar daha çok seviliyor bu yüzden 4. sırada amacımız mümkün olduğunca olumlu yorum ve puan almak. Her yorumu olumluda olsa olumsuz da olsa cevap verin bunun faydası olacaktır. İnsanlar uygulama ile ilgilendiğinizi görsün.
5. sırada uygulamanıza yeni özellikler eklemek. Uygulamanız ne kadar sık güncellenirse o kadar iyi. Hataları giderdiğinizde güncelleme çıkın ama birde ne gibi iyileştirmeler yapabilirim ne gibi özellikler ekleyebilirim bunları değerlendirin. Mutlaka birşeyler bulacaksınız.
Bunları yapıyorsanız ve ufak reklam çalışmaları yaptıysanız uygulamanızı insanlar indirmeye başladı ve çok fazla geri silmiyor olması lazım.
Sizler ile daha iyi anlayabilmeniz için 2 örnek uygulama grafiği paylaşacağım. 1 tanesi indirilme sonrası kayıplar yaşamış diğeri de sürekli indirilmeye ve kaybetmemeye devam ediyor. 2 uygulamaya da belli reklam çalışmaları başta yapılmış ama son zamanda yapılmıyor. 2. örnekteki kaybetmiyor çünkü bu kuralları daha iyi uygulamış.
Mobil Yazılım Uzmanı
Mobil Yazılım uzmanı, mobil uygulama geliştirme konusunda uzmanlaşmış bilgisayar mühendisi yada programlama bölümlerinden mezun kişilere denir. Aynı zamanda mobil uygulama geliştiricisi, uygulama geliştiricisi, uygulama yazılımcısı , android yazılımcısı, ios yazılımcısı gibi isimleri de vardır.
Bu çok çeşitli isimlendirmelerden dolayı biraz kafamız karışabiliyor. Birde mobil uygulama geliştirme işine bağlı olarak yapılan backend yazılım geliştirme var ona daha sonra değineceğim.
Mobil yazılım uzmanı, android yada ios konusunda ayrı olarak uzmanlaşmış da olabilir. Her ikisinide yapıyor olabilir.
Birde normal uygulamar ile oyun uygulamaları arasında da farklar vardır. Oyun konusunda uzmanlaşmış bir mobil yazılımcı oyun konusunda daha iyi çözümler üretirken, iş yazılımları yada diğer mobil uygulamar konusunda uzmanlaşan bir mobil yazılımcı oyun konusunda zayıf kalabilir.
Eskiden bu kadar çeşitlilik yokken yazılım dünyasında mobil yazılımcı, web yazılımcısı , yada desktop yazılımcısı hatta backend yazılımcısı gibi ayrımlar pek yoktu. Ancak günümüzde o kadar çok çeşitlilik varki, artık yazılımcılar kendi aralarında uzmanlaşarak belli konuda daha ileri seviyelere erişiyorlar. Herkesin herşeyi bilmesi çok mümkün değil ve sürekli güncellenen ve gelişen bir teknolojiyi sürekli takip etmesi de çok zor. Bu yüzden mobil veya android,ios gibi yazılım uzmanlıkları ortaya çıktı.
Özetle, bir mobil yazılımcı mobil yazılım geliştirirken native yada hybrid ortamları tercih edebiliyor.
Native yazacak ise Android için Java programlama dilinde, ios yazacak ise Xcode swift yada objective-c programlama dilini seçebiliyor. Hybrid yazacak ise cordova gibi birçok hybrid çözümlerinden birini tercih ederek yazılım yapabiliyor. Hybrid vs Native yazımı okuyabilirsiniz bunla ilgili daha detaya burada girmeyeceğim.
Yazılımcı , tasarımcıdan gelen tasarımları yazılım arayüzlerine yerleştirerek gerekli algoritmalar ile iş akışını bu arayüzler ile bağlamak, gerekli testlerini yapmak ve tüm mobil cihazlar ile uyumlu çalıştırmak yükümlülüğüne sahiptir. Aynı zamanda store a yani app marketlerine çıktıktan sonra takip etmesi ve gerekli bugfix (hata düzeltmelerini) yapması gerekir. İşin arkasında durmak bunu gerektirir.
Aynı zamanda iletişim becerileri iyi olmalıdır ki müşteriden gelen bilgileri iyi analiz edebilmeli, geri bildirimlerde bulunabilmeli, işe katkı sağlayabilmelidir. Unutmamak lazım ki hiçbir müşteri o dünyada yaşayan mobil android ios yazılımcısı kadar bu işi bilemez. Çoğu zaman ui ve ux konusunda hem tasarımcıyı hemde müşteriyi yönlendirmeli ve olmayacak arayüzler ve kurguları eleştirmeli ve yapıcı rol oynamalıdır.
Detaylara önem vermelidir. Her açıdan bakabilmeli ve işi bittikten sonra bir kullanıcı gibi uygulamayı kullanıp atladığı yerler, açıklar, yada görünmeyen ama hata oluşturabilecek kullanımı etkileyebilecek bir yer varmı bakmalıdır.








