Posted by Mustafa Tan in Genel, iPhone on March 6th, 2009
iPhone için uygulama geliştirme konusunda yeni yatırım yapacakların (özellikle GSM operatörlerine özel iPhone uygulamaları geliştirmeyi düşünenlerin), bu işe girişmeden evvel iPhone SDK’sının kısıtlarını çok iyi bilmeleri gerekiyor. Apple, geliştiricilerin, diğer telefonlarda yapa bildiği bir çok şeyi yapmasına izin vermiyor. Bunun da aslında kabaca 3 ana nedeni bulunuyor:
a) Güvenlik
b) Pil Ömrü
c) Ticari Kaygı
Bu nedenlerden dolayı da Apple’ın SDK’da kısıtladıkları da aşağıdakiler oluyor:
* SIM Kart’a Erişim. Apple hiç bir şekilde geliştiricilerin cihaza takılı SIM karta erişimine izin vermiyor. Dolayısıyla hiç bir uygulama, bırakın kullanıcının telefon numarasını hangi operatörü kullandığını bile anlayamıyor. Benzer şekilde uygulamalar cihazın IMEI numarasına da erişemiyor. Apple bir tek SDK’da, UDID (Unique Data Item Description) şeklinde adlandırılan ve her cihaz için eşsiz (unique) olan numarayı almamıza izin veriyor.
* Telefon, SMS ve Mail Uygulamalarına Erişim. Apple geliştiricilerin Telefon, SMS ve Mail uygulamalarına erişime de izin vermiyor. Dolayısıyla geliştiriciler daha yetenekli bir SMS uygulaması yazamıyor. Eminim bir çok geliştiricinin aklından “Çalarken Reklam Dinlet” konseptinde olduğu gibi “iPhone’da Ararken Reklam İzlet” şeklinde bir telefon uygulaması geliştirmek geçmiştir. Maalesef SDK’nın kısıtlarından dolayı bu mümkün değildir.
* Private veya Unpublished API Kullanımı. Apple yukarıdaki maddelerden saydığımız, SDK’da olmaması nedeniyle kullanılamayan fonksiyonların özel veya henüz yayınlanmamış API’ler üzerinden erişimine de izin vermiyor. Bu şekilde bir kullanım farkettiğinde uygulamanın App Store’a çıkmasına izin vermiyor.
3.3.1 Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs. (iPhone SDK Agreement)
* Diğer Uygulamaların Verilerine Erişim. Apple bir kaç istisna hariç uygulamanın kendisine ayrılan veri alanın haricindeki yerlere ulaşımına, özellikle diğer uygulamaların verilerine ve uygulamaların kendisine erişim izni veriyor. Sadece Fotoğraf Albumü (Photo Album), Rehber (Contact List) gibi kısıtlı sayıdaki noktalara erişim izni veriyor.
3.3.4 An Application may write data on a device only to the Application’s designated container area, except as otherwise specified by Apple. (iPhone SDK Agreement)
* Üçüncü Parti API Kullanımı. Apple geliştiricilerin, başklarının geliştirdiği ve önceden derlediği API’leri, uygulamaları kullanmalarına veya çalıştırmalarına izin vermiyor. Üçüncü partilerin geliştirdiği uygulamaları kullanmanın tek yolu, ilgili uygulamanın kodunu kendi uygulamamız içine gömerek ve Apple’ın API’si ile derleyerek paketlemeden geçiyor.
3.3.2 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and builtin interpreter(s). (iPhone SDK Agreement)
* Uygulamalarda Açık Kaynak API Kullanımı. Apple, iPhone uygulamaları içerisinde yukarıdaki maddeye uygun olacak şekilde Açık Kaynak kütüphanelerine kullanımına bir yasak getirmiyor. Fakat kullanılan kütüphanenin kullanım sözleşmesi, iPhone SDK anlaşması ile çelişiyorsa bu durumda ilgili kütüphanenin kullanımını yasaklıyor.
3.3.14 If Your Application includes any FOSS, You agree to comply with all applicable FOSS licensing terms. You also agree not to use any FOSS in the development of Your Application in such a way that would cause the non-FOSS portions of the SDK to be subject to any FOSS licensing terms or obligations.
* Sistem Dosyalarına ve Ayarlarına Erişim. Apple’ın iPhone uygulamalarının sistem dosyalarına ve ayarlarına erişime izin vermiyor. Örneğin uygulama içerisinden Wi-Fi kapatılıp açılamıyor ya da uygulamanın internete çıkış noktası (Wi-Fi veya EDGE) değiştirilemiyor.
* Cellular Network (GPRS/EDGE/3G) Kullanımı. Apple, VOIP uygulamalarının Operatör Ağları (EDGE/3G) üzerinden veri transferine izin vermiyor. Ayrıca uygulamaların sadece EDGE/3G üzerinden internete çıkmasını da kabul etmiyor. Bu yüzden geliştireceğiniz iPhone uygulamasının mutlaka Wi-Fi üzerinden de internete çıkabilir olması gerekiyor.
3.3.15 If an Application requires or will have access to the cellular network, then additionally such Application:
- Must comply with Apple’s best practices and other guidelines on how Applications should access and use the cellular network;
- Must not in Apple’s reasonable judgment excessively use or unduly burden network capacity or bandwidth;
- May not have Voice over Internet Protocol (VoIP) functionality using the cellular network. (iPhone SDK Agreement)
* APN Tanımı. Apple, iPhone’da baz istasyonları üzerinden internete çıkış imkanı veren APN tanımının sadece bir tane olmasına izin veriyor. Ayrıca bu apn tanımı üzerinde detaylı bir konfigürasyon yapılamıyor. Bu tanımı da sadece kullanıcının değiştirmesine izin veriyor. Zaten kullanıcılar da bunu internet APN’i olarak kullanıyorlar. Dolayısıyla MMS gibi farklı APN tanımı isteyen uygulamalar çalışamıyor.
* Video Streaming. Apple’ın bu konuda kesin bir yasağı olmamasına rağmen SDK’sında video streaming ile ilgili bir API’nin bulunmamasından dolayı, geliştiricilerin video streaming uygulamaları geliştirmesi çok zor oluyor. Apple gayri resmi açıklamalarında bunun nedenini streaming’in cihazın pil ömrünü çok kısa sürede bitirmesi olarak açıklıyor. Fakat buna rağmen App Store’da sayılı firma tarafından geliştirilmiş “Live Video Streaming” uygulamaları da bulunuyor.
* Human Interfance Guidelines ile Uyumluluk. Apple, iPhone için geliştirilmiş uygulamaların Human Interface Guidelines ismini verdiği dokümana göre geliştirilmesini istiyor. Apple’ın burdaki amacı, iPhone kullanıcı alışkanlığını ve tecrübesini bir seviyeye kadar standart tutup, uygulamayı ilk defa kullanacak birinin zorlanmadan uygulamaya alışması. Uygulamalara App Store’a çıkmadan evvel Apple çalışanları tarafından bizzat test edilip kullanıldığı için Human Interface Guidelines’a aykırı uygulamalar her zaman olmasa da çoğunlukla yakalanıyor.
3.3.5 Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple. (iPhone SDK Agreement)
* Limited Utility. Apple, SDK sözleşmesinde yer almasa da bazı uygulamaları gereksiz ya da saçma bularak “Limited Utility” başlağı altında kabul etmeyebiliyor. Bu yüzden geliştiricilerin “ama SDK sözleşmesinde böyle bir yasak yoktu” diyerekten Apple’a itiraz etme imkanları bulunmuyor.
* Duplicate Functionality. Apple yine SDK anlaşmasında yer almamasına rağmen bazı uygulamaları, sırf kendi uygulamaları ile rekabet ediyor bahanesiyle “Duplicate Functionality” başlığı altında reddediyor.
Yukarıda bir geliştiricinin iPhone uygulaması geliştirirken karşısına çıkabilecek, SDK anlaşmasında yazılı olan veya olmayan kısıtlamaları tecrübelerimiz ışığında paylaşmaya çalıştım. Bu kısıtlamalara takılmak istemeyen geliştiriciler jailbreak’li cihazlar için istedikleri gibi uygulama geliştirebiliyorlar. Fakat bu uygulamalar App Store’da yer almıyor doğal olarak.
Eğer sizin de benzer tecrübeleriniz olursa lütfen yazıya yorum girerek paylaşın, bu yazıya ekleme yapalım.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
#1 by Akın İdil - March 7th, 2009 at 20:55
Aslında sınırlar bunlarlada bitmiyor. Mesela kamera fonksiyonlarına yada Bluetooth kullanmaya karar verdiğinizde bu sınırlar ile karşılaşıyorsunuz. UIImagePickerController isminde yer alan class ile kamerayı kullanabiliyorsunuz. Ama bu kamera donanımına direk erişim anlamına gelmiyor. Alt fonksiyonları olan
UIImagePickerControllerSourceTypePhotoLibrary
UIImagePickerControllerSourceTypeCamera
UIImagePickerControllerSourceTypeSavedPhotosAlbum
seçenekleri ile isimlerindende anlaşılacağı gibi Photo Library, Camera yada Photo Album içerisinden resim alabiliyorsunuz.
Camera kısmına geçtiğinizde standart bir fotoğraf çekme arayüzü ile karşılaşıyorsunuz. Belki üzerine başka bir transparan katman giydirerek özelleştirebilirsiniz. Ama yinede fotoğrafın çekilmesi sonlandıktan ve siz bu arayüze bu resmi kullan dediğinizde ancak o resim ile ilgili işlem yapmaya başlayabiliyorsunuz.
Aslında yorum yapmak için yazıyordum ama açıklama gibi oldu. Yazı ile ilgili tek olumsuz yorumum var. O da bu bilgilerin yeni yazılım geliştirmeye başlayacakları vazgeçmeye doğru sürükleyecek gibi görünmesi…
//A.i.
#2 by suleymancalik - October 21st, 2009 at 14:17
Aslında yeni başlayacak olanların bunları bilmesi daha iyi olacaktır çünkü neyi yapabileceğini neyi yapamayacağını bilirse ona göre platformunu seçer veya yapamayacağı şeyleri tasarlamak yerine yapılması mümkün fikirler doğrultusunda ilerler.
#3 by gazibilisim - November 25th, 2009 at 10:52
Merhaba arkadaşlar;
Yazdığımız kodların apple ın istediğine uygun olup olmadığını test edebileceğimiz bir tool mevcut mu? Yoksa; gözümüzden kaçan küçük bir detay için red yeme ihtimalimiz oldukça yüksek gibi gözüküyor. Test sürecinin ortalama 2-3 hafta sürdüğünü düşünürsek kaydeceğimiz zaman oldukça yüksek…
#4 by Teorik Deli - December 14th, 2009 at 06:34
Bu demek oluyorki cihazdaki şarkılara da erişemiyoruz hazırladığımız programlarda? En basitinden cihazdaki şarkıları kullanan bir oyun yapamayız… Pfff…
#5 by Mustafa Tan - December 14th, 2009 at 08:19
Selamlar,
3.0 versiyonu ile birlikte uygulama içinden müziklere erişim geldi. Tabii kullanıcıya seçtirmeniz gerekiyor çalınacak parçaları.
Örnek:
http://www.iphoneturkey.biz/2009/06/30da-ipod-ve-oyun-keyfi-birarada.html
#6 by ugur - February 25th, 2010 at 10:17
sms ve call fonksiyonlarına erişim var artık. kendi sms uygulamlarına alternatif olabilecekleri kabul edeceklerini sanmıyorum; ama uygulamalarımızın içinde kullanabiliyoruz yine de.
#7 by Amy - September 6th, 2011 at 17:19
SMS ve arama işlevleri artık mevcut değilse, o zaman ne iyi bir iphone?Apple bu konuda oldukça sinsi.