PhoneGap ile Kolayca iPhone ve Android Uygulamaları Geliştirin


Mobil dünyanın geliştiricilerin en büyük şikayeti, bir cihaz için yazdıkları uygulamanın diğer cihazlarda çalışmamasıdır. Aynı üreticiye ait cihazlar arasındaki farklar çok büyük olmasa da, farklı üreticilerin cihazları arasındaki uçurum çok büyüktür. Dolayısıyla bir uygulamanın bir çok cihazda/platformda çalışabilir hale gelmesinin maliyeti çok yüksek olmaktadır.

İlk bakışta, bu maliyeti azaltmak için, sayıları her geçen gün artan yeni nesil mobil cihazların web tarayıcılarının daha gelişmiş olmasından dolayı native yerine artık web tabanlı uygulamalar geliştirmek daha mantıklı gibi görülebilir. Fakat klasik web (html/javascript) uygulamaları, mobil cihazların donanım fonkisyonlarına (GPS, Camera,  Accelerometer, Contacts, etc.) erişemedikleri için yetenekleri kısıtlıdır. Dolayısıyla heme yetenekli, hem de kolay mobil uygulama geliştirmek mümkün değildir.

İşte PhoneGap,  web sayfaları içerisinden iPhone, Android ve BlackBerry cihazlarının donanımsal fonksiyonlarına erişim imkanı vererek bu ihtiyacı karşılamayı hedeflemektedir. PhoneGap’in cross-platform desteği sayesinde html/javacscript tabanlı web uygulamaları çok fazla değişikliğe uğramadan hem iPhone’da, hem Android’de hem de BlackBerry’de çalışabilmektedir.

Objective-C’nin diğer programlama dillerine göre öğrenilmesinin daha zor oluşu, PhoneGap’in aslında en çok iPhone’da uygulama geliştirmek isteyenlerin rağbet edeceği bir platform olacağını gösteriyor. PhoneGap’te uygulama geliştirmek de çok kolay, çünkü klasik bir web uygulaması nasıl geliştiriliyorsa PhoneGap uygulamaları da aynı şekilde geliştiriliyor. Tek fark GPS, Accelerometer, vs gibi donanıma özel bir fonksiyon çağırılmak istendiğinde aşağıdaki javascript fonksiyonlarının ilgili html kodunda çağırılması gerekiyor.

    getLocation();
    watchAccel();
    vibrate();
 
    var getLocation = function() {
      var suc = function(p){
		    alert(p.latitude + " " + p.longitude);
      };
      var fail = function(){};
      navigator.geolocation.getCurrentPosition(suc,fail);
    }
 
    var vibrate = function(){
      navigator.notification.vibrate(0);
    }
 
    var watchAccel = function() {
      var suc = function(a){
    		document.getElementById('x').innerHTML = roundNumber(a.x);
  		document.getElementById('y').innerHTML = roundNumber(a.y);
  		document.getElementById('z').innerHTML = roundNumber(a.z);
      };
      var fail = function(){};
      var opt = {};
      opt.frequency = 100;
      timer = navigator.accelerometer.watchAcceleration(suc,fail,opt);
    }

Bu javascript fonksiyonları da phonegap.js isimli bir javascript dosyasında hazır olarak bulunuyor. PhoneGap’in tek yaptığı önceden tanımladığımız uygulamanın giriş sayfasını (index.html) çalıştırmak ve sanki bir native uygulamasındaymış gibi html sayfalarını web tarayıcısı içinde göstermek. Yukarıdaki javascript fonksiyonlarını çağırdığımızda da kendi API’si  üzerinden sayfada göstermek. PhoneGap ayrıca web sayfalarını istersek offline modda cihaz üzerinden, istersek de online modda internet üzerinden çalıştırmamıza imkan veriyor.

phonegap_example
PhoneGap ile geliştirdiğimiz uygulamaları benzer mantıkla nerdeyse hiç değiştirmeden Anroid ve BlackBerry tabanlı cihazlarda da çalıştırabiliyoruz. Fakat PhoneGap halen geliştirme aşamasında olduğu için cihaza özel yetenekleri tüm platformlarda aynı değil. Merak edenler için hemen belirtelim Apple PhoneGap’le geliştirilmiş uygulamalara engel olmuyor. Bu linkte App Store’a kabul edilmiş PhoneGap ile geliştirilmiş uygulamaların bir listesini bulabilirsiniz.

Eğer PhoneGap’in çok detaylı olmasa da giriş seviyesi için yeterli bir dokümantasyonu bulunuyor. Eğer ilginizi çektiyse PhoneGap’e aşağıdaki linkten ulaşabilirsiniz.

http://phonegap.com/

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

  1. #2 by suleymancalik - February 26th, 2010 at 03:16

    Şu an durum nedir bilen var mı? Apple Phonegap uygulamalarını kabul ediyor mu etmiyor mu?

Yorum yazabilmeniz için giriş yapmış olmalısınız

  1. No trackbacks yet.