Önce Çevrimdışı

İnternet bağlantıları yavaş olabileceği veya var olmadığı için önce çevrimdışı seçeneğini düşünmeniz gerekir. Uygulamanızı internet bağlantısı yokmuş gibi yazın. Uygulamanız çevrimdışı çalıştığında, internete bağlıyken daha fazlasını yapabilmesi için ihtiyacınız olan ağ işlevini ekleyin. Çevrimdışı kullanım özelliğine sahip uygulamanızı uygulamaya yönelik ipuçları için okumaya devam edin.

Genel bakış

Chrome Uygulamaları şu özellikleri ücretsiz olarak edinir:

Ancak bu özellikler, uygulamanızın çevrimdışı olarak çalışacağını garanti etmek için yeterli değildir. Çevrimdışı özellikli uygulamanız şu kurallara uymalıdır:

Mümkün olduğunda yerel verileri kullanın.
İnternetteki kaynakları kullanırken bunu almak için XMLHttpRequest uygulamasını kullanın, ardından verileri yerel olarak kaydedin. Verileri yerel olarak kaydetmek için Chrome Storage API, IndexedDB veya Filesystem API'yi kullanabilirsiniz.
Uygulamanızın kullanıcı arayüzünü verilerinden ayırın.
Kullanıcı arayüzü ile verileri ayırmak hem uygulamanızın tasarımını iyileştirir hem de çevrimdışı kullanımı etkinleştirme işini kolaylaştırmakla kalmaz, aynı zamanda kullanıcı verilerine dair başka görünümler elde etmenizi de sağlar. MVC çerçevesi ise kullanıcı arayüzünü ve verileri ayrı tutmanıza yardımcı olabilir.
Uygulamanızın her an kapatılabileceğini varsayın.
Kullanıcıların kaldıkları yerden devam edebilmeleri için uygulama durumunu (mümkünse hem yerel olarak hem de uzaktan) kaydedin.
Uygulamanızı kapsamlı bir şekilde test edin.
Uygulamanızın hem sık karşılaşılan hem de zorlu senaryolarda düzgün çalıştığından emin olun.

Güvenlik kısıtlamaları

Chrome Uygulamaları, kaynaklarını yalnızca kullanabilecekleri yerler açısından sınırlıdır:

  • Yerel veriler kullanıcının makinesinde görünür olduğu ve güvenli bir şekilde şifrelenemediği için hassas veriler sunucuda kalmalıdır. Örneğin, şifreleri veya kredi kartı numaralarını yerel olarak saklamayın.
  • Uygulamanın çalıştırdığı tüm JavaScript ise uygulamanın paketinde olmalıdır. Satır içi olamaz.
  • Tüm CSS stilleri, resimler ve yazı tipleri başlangıçta uygulama paketinde veya uzak bir URL'de bulunabilir. Kaynak uzaksa onu HTML'nizde belirtemezsiniz. Bunun yerine, verileri XMLHttpRequest kullanarak alın (Harici kaynakları referans alma bölümünü inceleyin). Ardından ya blob URL'siyle verilere bakın ya da (daha iyisi) kaydedin ve Filesystem API'yi kullanarak yükleyin.

Ancak, harici sitelerden video ve ses gibi büyük medya kaynaklarını yükleyebilirsiniz. Kural için bu istisnanın bir nedeni, bir uygulamanın bağlantı sayısı sınırlı olduğunda ya da hiç olmadığında <video> ve <audio> öğelerinin iyi bir yedek davranışı sergilemesidir. Başka bir neden de XMLHttpRequest ve blob URL'leriyle medya getirme ve sunmanın şu anda akışa veya kısmi arabelleğe almaya izin vermemesidir.

Korumalı alana alınmış bir iframe sağlamak için <webview> etiketi oluşturabilirsiniz. İçeriği uzaktan olabilir, ancak Chrome uygulaması API'larına doğrudan erişimi yoktur (bkz. Harici web sayfaları yerleştirme).

Chrome Uygulamalarıyla ilgili bazı kısıtlamalar, her zaman aşağıdaki olan ve Chrome Uygulamaları için değiştirilemeyen İçerik Güvenliği Politikası (İGP) tarafından uygulanır:

default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' blob: data: filesystem: 'unsafe-inline';
img-src 'self' blob: data: filesystem:;
frame-src 'self' blob: data: filesystem:;
font-src 'self' blob: data: filesystem:;
media-src * data: blob: filesystem:;

offline_enabled belirtme

Uygulamanızın çevrimdışıyken iyi davrandığı varsayılır. Kullanıcı çevrimdışıyken başlatma simgesi karartılacak şekilde, işe yaramıyorsa bu durumun reklamını yapmanız gerekir. Bunun için uygulama manifest dosyasında offline_enabled politikasını false olarak ayarlayın:

{
  "name": "My app",
  ...
  "offline_enabled": false,
  ...
}

Verileri yerel olarak kaydetme

Aşağıdaki tabloda, verileri yerel olarak kaydetme seçenekleriniz gösterilmektedir (ayrıca bkz. Verileri Yönetme).

APIEn iyi kullanımNotlar
Chrome Depolama API'siKüçük miktarlarda dize verisiAyarlar ve durum için mükemmel. Uzaktan senkronize etmek kolaydır (ancak mecbur değilsiniz). Kotalar nedeniyle, büyük miktarlarda veri için uygun değildir.
IndexedDB API'sıYapılandırılmış veriVeriler üzerinde hızlı aramaları etkinleştirir. unlimitedStorage izniyle kullanın.
Dosya Sistemi API'sıDiğerDosyaları depolayabileceğiniz korumalı bir alan sağlar. unlimitedStorage izniyle kullanın.

Uzaktan veri tasarrufu

Genel olarak, verileri uzaktan nasıl kaydedeceğiniz size bağlıdır ancak bazı çerçeveler ve API'ler yardımcı olabilir (bkz. MVC Mimarisi). Chrome Storage API'yi kullanırsanız uygulama internete bağlandığında ve kullanıcı Chrome'da oturum açtığında, senkronize edilebilir tüm veriler otomatik olarak senkronize edilir. Kullanıcı oturum açmamışsa oturum açması istenir. Ancak, kullanıcı uygulamanızı kaldırırsa senkronize edilmiş verilerin de silineceğini unutmayın. {QUESTION: true?}

Uygulamanızın yüklemesi kaldırıldıktan sonra en az 30 gün boyunca kullanıcıların verilerini kaydetmenizi öneririz. Bu sayede, uygulamanızı yeniden yükleyen kullanıcılar iyi bir deneyim yaşar.

Kullanıcı arayüzünü verilerden ayırma

Bir MVC çerçevesi kullanmak, uygulamanızı verilerin, uygulamanın veri görünümünden tamamen ayrı olacağı şekilde tasarlamanıza ve uygulamanıza yardımcı olabilir. MVC çerçevelerinin listesi için MVC Mimarisi bölümüne bakın.

Uygulamanız özel bir sunucuyla iletişim kuruyorsa, sunucunun size HTML parçaları yerine veri sağlaması gerekir. Bunu RESTful API'ler şeklinde düşünün.

Verileriniz uygulamanızdan ayrıldıktan sonra, alternatif veri görünümleri sağlamak çok daha kolay olur. Örneğin, herkese açık tüm verilerin web sitesi görünümünü sağlayabilirsiniz. Web sitesi görünümü yalnızca kullanıcınız Chrome'dan uzakta olduğunda faydalı olmakla kalmaz, aynı zamanda arama motorlarının bu verileri bulmasını sağlayabilir.

Test

Uygulamanızın aşağıdaki koşullarda iyi çalıştığından emin olun:

  • Uygulama yüklenir ve hemen çevrimdışı olur. Diğer bir deyişle, uygulamanın ilk kullanımı çevrimdışıdır.
  • Uygulama bir bilgisayara yüklenir ve daha sonra başka bir bilgisayara senkronize edilir.
  • Uygulama kaldırılır ve hemen tekrar yüklenir.
  • Uygulama aynı profille, aynı anda iki bilgisayarda çalışıyor. Bir bilgisayar çevrimdışı olduğunda, kullanıcı o bilgisayarda bir takım şeyler yaptığında ve ardından bilgisayar tekrar çevrimiçi olduğunda uygulamanın makul bir şekilde davranması gerekir.
  • Uygulama, çevrimiçi ve çevrimdışı durumlar arasında sık sık geçiş yapan kesintili bir bağlantıya sahip.

Ayrıca uygulamanın, kullanıcının makinesine hassas kullanıcı verilerini (şifreler gibi) kaydetmediğinden emin olun.