IOS Environment Settings [Xcode]

Taha Muhsin Yılmaz
Arcelik IoT Labs
Published in
4 min readMar 9, 2020

Herkese merhabalar. Bu yazımızda XCode üzerinden farklı ortamların ayarlanması işlemini anlatacağız. Farklı ortamların kullanılması neden önemli bunlardan bahsedeceğiz. Daha sonra bu işlemin yapılmasından bahsedeceğiz. Umarım faydalı olur.

Çoğu projelerde yazılım geliştirme aşamasında farklı ortamların kullanılması tercşh edilir. Bunlar genelde development ortamı, staging ortamı ve production ortamı olmak üzere 3 tane olur. Development ortamları geliştirmenin yapıldığı lokal ortamlardır. Staging denilen ortamlar yayın ile aynı olacak olan ve testlerin gerçekleştiği ortamlardır. Production ortamı ise yazımların kullanıma açıldığı veya yayına alındığı ortamlardır. Peki neden böyle bir işleme ihtiyaç vardır?

Bu ortamların kullanımı web geliştiricilerin proje yönetimi açısından büyük önem arz etmektedir. Biz mobil geliştiriciler de RestAPI kullanımı açısından bu ortamlara bağlı kalmaktayız. Çünkü bu ortamlarda kullanılan endpointler farklılık göstermektedir. Bazen de staging de farklı appicon kullanımı, farklı image setleri kullanımı veya her ortam için farklı uygulama yani farklı BundleId gibi talepler gelebiliyor. Bu yüzden tek code base ile bu farklılıkları gerçekleştirebilmek hayati önem arz etmektedir.

XCode üzerinden birkaç adım işlem ile bu işlem kolaylıkla gerçekleştirilebilmektedir. Şimdi bu işlemi adım adım gerçekleştirelim. Bu işlem için yeni bir proje oluşturalım. Daha sonra project navigator üzerinden base projeye tıklandığında info kısmında Configurations altında Debug ve Release konfigurasyonları görülmektedir.

Burada her ortam için bir adet debug ve bir adet release konfigurasyonu oluşturmamız gerekektedir. Alttaki + butonuna bassarak üstteki konfigurasyonların aynısını kopyalayıp ismini değiştirebilirsiniz.

Bu işlemin ardından .xcconfig uzantılı konfigurasyon dosyalarını oluşturmamız gerekmektedir. File->New->File->Configuration Settings File ile bu işlemi gerçekleştirebilirsiniz.

Ben bu işlem için Development, Staging ve Production isminde 3 adet xcconfig dosyası oluşturdum.

Daha sonra bu dosyaların içlerini istediğimiz değişilikler ile değiştirmemiz gerekmektedir. Ben base web service url’ini, app ismini, bundle Id’yi ve app iconu farklı ortamlar için konfigure edeceğim. Bu işlem için öncelikle farklı ortamlar için bu özellikleri tanımlayalım. Oluşturduğum dosyalara base url, appname ve bundle id özellikleri tanımlandı.

Bu işlemin ardından bu değerlerin tanıtılması için info.plist üzerinden atama yapılmalı. Bundle id için plist’ de bulunan Bundle Identifier keyinin değerine $(PRODUCT_BUNDLE_IDENTIFIER) yerine $(APP_BUNDLE_ID) yazıyoruz. Bundle Name keyinin değerine $(PRODUCT_NAME) yerine $(APP_NAME) yazıyoruz.

Bu işlemin ardından yapılan konfigürasyonların tanımlandığı ayrı ayrı scheme’ler oluşturmamız gerekmektedir. Bunun için manage schemes üzerinden yeni tanımlamalar yapacağız.

Üç ortam için de ayrı ayrı scheme oluşturuldu. Son olarak oluşturulan xcconfig dosyaları konfigürasyon üzerinden tekrar setleniyor.

Daha sonra uygulamayı üç ortam için de derliyoruz.

Not: Eğer Cocoapods kullanılıyorsa .xcworkspace ve Podfile.lock dosyaları silinmeli ve yeniden pod install yapılmalıdır.

Bu işlemin ardından her ortam için ayrı AppIcon ayarlamasını yapacağız. Öncellikle 3 ayrı AppIcon oluşturuyoruz. Assets.xcassets seçiyoruz. Sağ tık yapıp AppIcon & Launch Image -> New IOS App Icon seçiyoruz.

Daha sonra ikonların ayarlamasını yapıyoruz.

Daha sonra ikonları ortamlara atıyoruz. Bunun için Project Navigator’den base projeyi seçip target’ a geliyoruz. Build Settings altında AssetCatalogCompiler- Options altında ortamların ikonlarını atıyoruz.

Daha sonra farklı scheme’lerde uygulamayı derliyoruz.

Görüldüğü gibi her ortam için farklı appicon setlenmiş oldu. Son olarak burada verilen bir değerin kod içerisinde okunması işlemine bakalım. Yukarıda da belirtildiği gibi farklı ortamlar için farklı endpointler olabilmekte, bu yüzden başlangıçta xcconfig dosyasına endpointleri tanımladık. Şimdi bu endpointlerin kod içerisinde okunması işlemine bakacağız.

Bu işlemi gerçekleştirirken verdiğimiz endpointler gerçek olmadığından sadece ekranda bastırma işlemini gerçekleştireceğiz. Ana ekrana bir adet label koyuyoruz ve view controller içerisinde bu değerleri okuyup label’ a setliyoruz. Bu değerleri okuyabilmek için info.plist dosyasına erişip oradan key ile değeri çağıracağız. Dolayısıyla verdiğimiz değeri info.plist dosyasına tanıtmamız gerekmektedir. xcconfig doyasında verdiğimiz ROOT_URL keyini info plist e tanıtıyoruz. Burada dikkat edilmesi gereken konu değeri verirken $ işareti ile parantez() kullanmak gerektiği.

Daha sonra koda geçip info.plist dosyasına erişiyoruz.

Bu işlemin ardından 3 ortamda da derleme işlemini gerçekleştiriyoruz.

Bu yazı ile farklı ortamların XCode üzerinden kurulumu anlatıldı. Umarım faydalı olur. İyi kodlamalar.

--

--