If you don’t like authentication steps like me, this story is for you!

Image for post
Image for post

Once you install an app you always open it with an ambition that comes with the question, What is there inside the app?. As soon as the app launches you lost your all enthusiasm that’s because of a MOTHERF*CKER login screen.

Besides of I am an iOS developer, also as a user, I really hate login screens. I must not give an email, mobile phone, nickname, password without seeing the inside of the app.

TL;DR

You can use the Keychain via a keychain manager class to store a unique identifier for each user. That provides you to not ask for any email, password, or mobile phone. …


Image for post
Image for post

As developers, we build apps for two main points, to make users happy and to earn money. These are related to each other. If users are happy, we earn money, but earning money is not equal to make users happy. So, the main thing we have to focus on is making users happy, and then money will come eventually.

There are plenty of ways to make users happy, and I am not going to tell their in this article. I am focusing on how we can be aware of it. I think the first data we should look at it is AppStore reviews. If users are unhappy or angry about your app, they would be cruel in their reviews. Otherwise, they would enrich you. …


Image for post
Image for post

Problem

Calling multiple functions in a sequence is complicated.

Solution

We have to build a chain in which its items communicate asynchronously. We can able to add new items to any position of the chain. PromiseKit is a tool which helps us to build the chain, in a structure.

Image for post
Image for post

Have you ever called more than one function at the launching of an application? Of course, you have called. Probably, you have checked camera permission and location permission at the same time. What about other checks such as if the user logged in, sending the request for the first data, etc. …


Image for post
Image for post

Problem

Struggling in the network layer when sending requests and parsing responses.

Solution

Applying generic, modular network layer. The solution includes Generic Type, Completion, Singleton, Codable, URLSession and OOP(Object Oriented Programming) terms.

According to most of the mobile developers, the number one subject or layer or structure in mobile development is Network Layer. A lot of mobile applications work online then the Network Layer is the hearth of them. The point is, how can we build a strong network layer against even for complex applications? Let’s find the answer!

What are we going to do?

We are going to build a service manager, request and response classes, a middle layer to communicate between controller and service calls and data models. All are very similar for every developer but the difference is our response classes are generic. …


Image for post
Image for post

Problem

Wasting time when running tests.

Solution

Automating tests with Fastlane. It sends test results to a Slack channel to monitorize.

Every developer wishes to write bug-free code. They analyze cases, think about edge cases, write tests, etc. The part that we are interested in on all of these is test.

Fastlane

Fastlane is an open-source platform aimed at simplifying Android and iOS deployment. Fastlane lets you automate every aspect of your development and release workflow.(source: https://fastlane.tools)

Fastlane is a quite useful tool for mobile developers. It handles running tests, uploading screenshots, signing code, distributing via Testflight, even publishing to the App Store.

In this article, we are going to see how to run tests via Fastlane and send the test results to a Slack channel. …


Hello from the other side! If you have not read the first story, here is the link.

As we remember, we separated schemes as debug, test and release. We did set the app name by the scheme. What can we do more?

What About Bundle ID?

Sometimes, we need to separate the app because we would like to watch analytics by released or tested apps. Dividing the app helps us to diagnose what we are looking for.

Image for post
Image for post

Run the app with three different schemes and you see 3 different apps.

App Icon, Your Turn!

We have created 3 different app icons. …


I, as an iOS developer, face some situations like someone comes to me and says, “Hey, the app crashes, look at that” Assume that I have two versions installed from testflight or app store. I ask, “Which version is it?” and the answer might be “I don’t remember” I wanted to solve this problem without asking any question to the person who comes to me. Also, I wanted to add some controls where the app installed like testflight, app store or via Xcode. I wished to separate the versions with configuration. The answer is schemes.

When creating a new project, debug and release configurations comes automatically. …


Image for post
Image for post

Bir önceki yazıda VIPER’a ufaktan bir giriş yapmıştık. Önceki yazıya burdan ulaşabilirsiniz. Eğer VIPER’ı ilk defa duyuyorsanız lütfen önceki yazıdan başlayın.

Bu yazıda VIPER katmanlarını oluşturup her birinin detaylı açıklamasını yapacağım. Daha sonra ufak bir örnekle mimariyi daha rahat anlayacağız. Daha kolay anlaşılabilmesi için adım adım gideceğim. Bu yüzden lütfen atlamadan okumaya özen gösterin.

Basit bir rehber uygulaması yapacağız. Ana sayfada bütün kişiler olacak. Herhangi bir kişiye tıklandığında onun detayına gideceğiz. Ana sayfamız için VIPER mimarisini kurduğumuzda sınıflarımız şu şekilde olacaktır. (Ana sayfa adı olarak “Home”u kullandım)

Image for post
Image for post
HomeInteractor
HomePresenter
HomeProtocols
HomeRouter
HomeTableController

Şimdi Home modülünü uygulama açıldığında görünür yapacağız. VIPER mimarimizin daha verimli olabilmesi için storyboard kullanmayacağız. Ayrıca UITableViewController kullanarak component bazlı ilerleyeceğiz. …


Image for post
Image for post

Merhaba, bu yazıda her iOS geliştirenin bilmesi gereken bir mimari olan VIPER mimarisini dilim döndüğünce anlatmaya çalışacağım. Yazının hedef kitlesi şu şekildedir; ortamlarda VIPER’ı duymuş ama ne işe yarar tam emin olamayan, VIPER ile ufak tefek 1–2 proje yapmış ama mantığını tam olarak anlayamamış ve ya anladığını pekiştirmek isteyen kişilerdir.

Geliştirdiğimiz her projeyi belirli bir mimari üzerine kurarız. Seçeceğimiz mimarinin kolay entegre edilebilir ve ek geliştirmelere uyumlu olmasını isteriz. Aynı zamanda kodumuzun okunabilir olmasını ve arkadaşlarımıza gösterdiğimizde havalı bulmalarını bekleriz. Kısaca biz yazılımcılar bi mimariden çok şey bekleriz.

Image for post
Image for post
Bknz: bir mimarinin görevleri

Şüphesiz ki iOS uygulama geliştirirken uygulanan en popüler mimari MVC’dir. Apple tarafından en uygun görülen mimari olan MVC, proje ilerledikçe içinden çıkılamaz bir hale gelebilir. …


Merhaba ben Yusuf. Beykent Üniversitesi yazılım mühendisliği bölümünü bu ay içinde son 2 dersimi vererek inşallah bitiriyorum :) Sektöre üniversite 2. sınıfın sonunda Android yazarak girdim. 1 sene Akbank Direkt uygulamasının ekibiyle birlikte Android yazdıktan sonra iOS platformunda geliştirme yapma kararı aldım. 1,5 senedir iGones Labs’de iOS geliştirmekteyim. Yazılım sektörüne erken girdim ve bunun bana çeşitli artıları oldu. Öğrencilik hayatı ile yazılım sektörü arasında mekik dokuyarak çok değerli tecrübeler edindim. Bu nacizane tecrübelerimi yazılım sektöründe kariyer hedefi olan öğrenci arkadaşlarıma aktarmak istiyorum. Yazılım sektörünün iş hayatına nasıl hazırlanılması gerektiğini kendi bakış açımdan yol rehberi tadında anlatmaya çalışacağım.

Alan Seçimi

Microsoft mu Apple mı, mobil mi web mi, özgür yazılım mı parayı verir düdüğü çalarım mı? …

About

Yusuf Demirci

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store