Bu sorunu göz önünde bulundurarak çok zaman harcayan bir mobil geliştiriciyim.
Neden soruyorsun?
Büyük olasılıkla, uygulama geliştirme maliyetlerini şu şekilde azaltmayı umuyorsunuz:
- Mevcut HTML5 / Javascript geliştirme becerilerini kullanma
- Sıfırdan birden fazla uygulama yazmadan birden fazla platformu hedefleme
- Gelecekte birden fazla kod tabanı tutmak zorunda değilsiniz
Sebepler ayrıca şunları içerebilir:
- HTML5 / Javascript geliştirme, yerel platform geliştirmeden daha "kolay" olarak algılandı
- Geliştirici programı kayıt ücretlerinin ödenmemesi
- Uygulama mağazası içerik kısıtlamalarından kaçınma (kumar vb.)
- Geliştirme donanımının satın alınmasından kaçınılması (örneğin, iPhone geliştirme için Mac)
Tanımlar
Sözü geçen üç yaklaşımdan her biri ile tam olarak ne demek istediğimizi belirleyelim:
Yerel
Bir cihaza yüklü bir uygulama, genellikle kendi uygulama mağazasından (bazen yan yana yüklenebilir). Bu tartışmanın amaçları doğrultusunda, yerel bir uygulamanın kullanıcı arayüzü genellikle tam ekran web görünümünden ibaret değildir.
Mobil web
Bu aslında herhangi bir web sayfası olabilir, ancak bu tartışma için yerel bir uygulamanın görünümünü ve izlenimini taklit etmeye çalışan tek sayfalık bir web uygulaması düşünelim. Yerel bir uygulama değil, cihazın tarayıcısında çalışıyor.
Hibrit
Hibrit uygulaması instanceof
yerel uygulaması.
Çoğu kişi muhtemelen hibrit bir uygulamayı tek sayfalık bir mobil web uygulaması olarak anlar (yine de büyük olasılıkla yerel bir uygulamanın görünümünü taklit eder), ancak yerel hizmetlere erişimi olan yerel bir uygulama olarak paketlenir (à la Phonegap).
Ancak, Phonegap modeli ile daha sonra geleceğim tamamen doğal olan bir spektrum var.
Mobil web
Teknik kısıtlamalar
Öncelikle, yaptığınız işe bağlı olarak kendi başlarına anlaşma yaratabilecek mobil web uygulamalarındaki bazı teknik kısıtlamaları listeleyelim:
- Yalnızca HTML / tuval kullanıcı arayüzü
- Bazı cihaz etkinliklerine ve servislerine erişim yok (bunlar yaygın olarak belgelenmiştir)
- Uygulama mağazalarında listelenemez (keşfedilebilirliği etkiler)
- Tam ekran olabilir ve iOS'ta ana ekran simgesine sahip olabilir, ancak bu çoğu kullanıcı için alışılmadık ve alışılmadık bir deneyimdir
Yukarıdakilerin hepsiyle yaşayabiliyorsanız, tek sayfalık yerel stil web uygulamalarının zorlukları hakkında daha fazla bilgi için okumaya devam edin. Ancak bu bölüm, FT uygulamasına atıfta bulunmadan tamamlanmış sayılmaz.
Financial Times FT web uygulaması uygulamanın bu tarz ünlü bir örneğidir. İşte İngiltere Guardian gazetesinden bu konuda ilginç bir özellik.
Kesinlikle dikkat çekici bir mühendislik harikası. Şu anda yalnızca yalnızca iOS'ta kullanılabildiğini unutmayın; bu durum , gelişmiş tarayıcılar arası geliştirmenin zorluklarının çözülmesinin gerçekten çok zor olduğunu bulduklarını söylüyor.
Tek sayfalık yerel stil web uygulamaları
Bu bölüm hem mobil web hem de Phonegap tarzı uygulamalar için geçerlidir.
Bir web uygulaması içindeki yerel görünüm ve his genellikle , kullanmanız için bir UI bileşenleri paketi sağlayan Sencha Touch gibi bir çerçeveyle elde edilir .
Bu çerçeveler çok basit UI'ler için iyidir. Ancak esneklikten yoksundurlar. Sencha kullanarak herhangi bir yerel uygulama tasarımını uygulayamazsınız, tasarımınızı çerçevenin taşıyabileceği şeye uyarlamanız gerekir.
Bu çerçevelerin çektiği temel yol, platformun kendi kullanıcı arayüzü karmaşıklıklarını taklit etmeye çalışmaktır. İPhone'daki bir listenin sonuna kaydırdığınızda elde ettiğiniz o küçük güzel sıçrama efekti? Çerçevenizin Javascript'te öykünmesi gerekiyor. Tamamen yeniden oluşturmak imkansız, yavaşlamaya eğilimli olacak ve kullanıcılarınız yerli gibi görünen ama açıkça görünmeyen ve teknik olmayan bir uygulamanın "tekinsiz vadisinde" kalacak. kullanıcı parmaklarını tam olarak neden kullanamayacak.
"HTML5 / Javascript kolaydır" efsanesi
Web tarayıcılarında cihaz parçalanması zordur ve en temel HTML ve CSS'yi aştığınızda işlerin beklediğiniz gibi çalışmadığını fark edersiniz. Kendinizi yerel UI sorunlarını çözmek için, iki kez doğal yolla kaydettiğinizden daha fazla zaman harcayarak bulabilirsiniz. Yerelleşiyorsanız, yerel uygulama web görünümlerinin cihaz tarayıcıları ile aynı olmadığını ve kendi parçalanma sorunları olduğunu unutmayın.
Uygulamanız daha işlevsel bir şekilde karmaşıklaştıkça, Javascript'inizi temiz ve bakımlı tutmak için temel jquery becerilerinden daha fazlasına ihtiyacınız olduğunu göreceksiniz.
Bununla birlikte, bu yaklaşımla oldukça hızlı bir şekilde basit, işlevsel uygulamalar oluşturmak son derece mümkün. Ancak bir uygulama bunu yaparken oldukça açık.
Spektrum boyunca daha ileri
Bu yüzden, Phonegap tarzı uygulamaların baştan sona kesinlikle her şeyi yazmadan sunabileceğinden daha iyi bir UX istiyoruz. Ne yapabiliriz?
UI olmayan kodu paylaş
Birden fazla yerel platformda iş mantığını paylaşmak için kullanılabilecek çeşitli teknikler vardır. Google, Java'yı Objective-C'ye çeviren J2ObjC'yi başlattı . Dikkatli bir şekilde faktoring işlemi yaparak, Android ve iOS'ta bir Java kütüphanesi kullanılabilir.
Calatrava ve Kirin gibi kütüphaneler , Javascript'te (ve dolayısıyla Javascript'te derlenebilecek herhangi bir şeyin) yerel kodlardan manipüle edilmesine izin verir. Feragatname: Kirin'i yaratan Gelecek Platformları için çalışıyorum; iOS'ta Javascript ile GWT ile oluşturulan Javascript ile birlikte kullanmakta büyük başarı elde ettik, Java kodu Android'de doğal olarak çalıştırılıyor.
Web görünümlerini kullanın ... uygunsa
Tam ekran web görünümleri, ekran geçişlerini ve sıçrama efektlerini taklit edebilmek için yapılacak çok iş var. Ancak yerel uygulama kromu içindeki bir web görünümü yerelden ayırt edilemez olabilir.
Yerel uygulamalar ve web görünümlerinin iletişim kurması için standart ve iyi belgelenmiş yöntemler vardır.
Listeler ve tablolar, bu şekilde yapıldığında özellikle iyi çalışabilir, ancak metin girişi, yerel olarak en iyi işlenen şeylerin bir örneğidir (klavye üzerinde tam kontrol için).
Özetle
Sizin için doğru olan yaklaşım uygulamanızın ne kadar karmaşık olduğuna ve hangi düzeyde UI cila uygulamasından memnun kalacağınıza bağlıdır.
Sloganım: Web görünümlerini mümkün olan her yerde kullanın, ancak kullanıcılarınızın söyleyemediğinden emin olun .