Önce Çevrimdışı

İnternet bağlantıları kesintili olabileceği veya var olmayabileceği için öncelikle çevrimdışı olma seçeneğini değerlendirmeniz gerekir: uygulamanızı internet bağlantısı yokmuş gibi yazma. Uygulamanız çevrimdışı çalışmaya başladığında ağ işlevselliği, uygulamanız çevrimiçi olduğunda daha fazla şey yapmak için ihtiyaç duyacağınız ağ işlevleri sunar. Şu konularla ilgili ipuçları için okumaya devam edin: çevrimdışı özellikli uygulamanızı uygulamanıza yardımcı olabilir.

Genel Bakış

Chrome Uygulamaları şunları ücretsiz olarak edinir:

  • Uygulamanızın dosyaları (JavaScript, CSS ve yazı tiplerinin tamamı, ayrıca ihtiyaç duyduğu diğer kaynaklar (ör. resimler) önceden indirilmiştir.
  • Uygulamanız, Chrome Storage API'yi kullanarak az miktarda veriyi kaydedebilir ve isteğe bağlı olarak senkronize edebilir.
  • Uygulamanız, online ve çevrimdışı etkinlikleri dinleyerek bağlantıdaki değişiklikleri algılayabilir.

Ancak bu özellikler, uygulamanızın çevrimdışı olarak çalışacağını garanti etmek için yeterli değildir. Çevrimdışı özelliği etkin aşağıdaki kurallara uygun olmalıdır:

Mümkün olduğunda yerel verileri kullanın.
İnternetteki kaynakları kullanırken almak için XMLHttpRequest kullanın, ardından verileri kaydedin yerel olarak. 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ünü ve verileri ayırmak yalnızca uygulamanızın tasarımını iyileştirmekle kalmaz, ayrıca etkinleştirme görevini de kolaylaştırır çevrimdışı kullanımı ancak kullanıcı verilerinin farklı görünümlerini sunmanıza da olanak tanır. MVC çerçevesi bu soruna kullanıcı arayüzünü ve verileri ayrı tutmanız gerekir.
Uygulamanızın herhangi bir zamanda kapatılabileceğini varsayın.
Kullanıcıların istedikleri yerden haberdar olabilmeleri için uygulama durumunu (mümkünse yerel ve uzaktan) kaydedin. geri dönüyorlar.
Uygulamanızı kapsamlı bir şekilde test edin.
Uygulamanızın hem yaygın ve zor durumlarda iyi çalıştığından emin olun.

Güvenlik kısıtlamaları

Chrome Uygulamaları'nın kaynaklarını nereye yerleştirebileceği konusunda sınırlamalar vardır:

  • Yerel veriler kullanıcının makinesinde görünür olduğundan ve güvenli bir şekilde şifrelenemediğinden, 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, uygulamanın paketinde olmalıdır. Satır içi olamaz.
  • Tüm CSS stilleri, resimler ve yazı tipleri başlangıçta uygulamanın paketinde bulunabilir ya da uzak bir URL'de bulabilirsiniz. Kaynak uzaksa HTML'nizde belirtilemez. Bunun yerine verilerini XMLHttpRequest kullanarak dışa aktarabilirsiniz (Harici kaynakları referans gösterme bölümüne bakın). Daha sonra, veya (daha da iyisi) Filesystem API'yi kullanarak verileri kaydedip yüklemeniz gerekir.

Ancak harici sitelerden videolar ve sesler gibi büyük medya kaynaklarını yükleyebilirsiniz. Bir kural için bu istisnanın nedeni, <video> ve <audio> öğelerinin iyi bir yedeğe sahip olmasıdır. bir uygulamanın bağlantısı sınırlı olduğunda veya hiç olmadığında geçerli olan bir davranıştır. Diğer bir sebep de, getirme ve sunmanın XMLHttpRequest ve blob URL'leri içeren medyalar şu anda akışa veya kısmi arabelleğe almaya izin vermiyor.

Korumalı alana alınmış bir iframe sağlamak için bir <webview> etiketi oluşturabilirsiniz. İçeriği uzaktan olabilir ama Chrome uygulaması API'lerine doğrudan erişimi yoktur (Harici web sayfalarını yerleştirme bölümüne bakın).

Chrome uygulamalarındaki kısıtlamalardan bazıları İçerik Güvenliği Politikası (İGP) tarafından uygulanır. her zaman şudur ve Chrome Uygulamaları için değiştirilemez:

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 belirtiliyor

Uygulamanızın çevrimdışıyken de iyi davrandığı varsayılır. Aksi halde, bu gerçeğin reklamını yapmanız gerekir. Kullanıcı çevrimdışıyken başlat simgesinin karartıldığını söyler. Bunun için offline_enabled politikasını false olarak ayarlayın. uygulama manifest dosyasında:

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

Verileri yerel olarak kaydetme

Aşağıdaki tabloda, verileri yerel olarak kaydetme seçenekleri gösterilmektedir (Verileri Yönetme başlıklı makaleyi de inceleyin).

APIEn iyi kullanımNotlar
Chrome Depolama API'sıAz miktarda dize verisiAyarlar ve durum açısından idealdir. Uzaktan senkronizasyon kolaydır (ancak bu zorunlu değildir). Kotalar nedeniyle büyük veri miktarları için uygun değildir.
IndexedDB API'sıYapılandırılmış veriVerilerde hızlı aramaları etkinleştirir. unlimitedStorage izni ile kullanın.
Dosya Sistemi API'sıDiğerDosyaları depolayabileceğiniz korumalı alanlı bir alan sağlar. unlimitedStorage izni ile kullanın.

Verileri uzaktan kaydetme

Genel olarak, verileri uzaktan nasıl kaydedeceğiniz size bağlıdır ancak bazı çerçeveler ve API'ler bu konuda size yardımcı olabilir (bkz. MVC) Mimari). Chrome Storage API'yi kullanırsanız tüm senkronize edilebilir veriler otomatik olarak Uygulama çevrimiçi olduğunda ve kullanıcı Chrome'da oturum açtığında senkronize edilir. Kullanıcı oturum açmamışsa oturum açmaları istenir. Ancak, kullanıcı tarafından senkronize edilen verilerin silineceğini unutmayın. uygulamanızı kaldırır. {QUESTION: true?}

Kullanıcılarınızın uygulamanızın kaldırılmasından sonra en az 30 gün boyunca uygulamanızı yeniden yüklerlerse iyi bir deneyim yaşarlar.

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

MVC çerçevesi kullanmak, uygulamanızı verilerin tamamen olduğu gibi tasarlayıp uygulamanıza yardımcı olabilir uygulamanın verilerdeki görünümünden ayrıdır. MVC çerçevelerinin listesi için MVC Mimarisi bölümüne bakın.

Uygulamanız özel bir sunucuyla iletişim kuruyorsa sunucu size HTML parçalarını değil, verileri sağlamalıdır. Düşünün şartlarına tabidir.

Verileriniz uygulamanızdan ayrı olduğunda, verilerin alternatif görünümlerini sağlamak çok daha kolaydır. Örneğin, herkese açık herhangi bir verinin web sitesi görünümünü sağlayabilirsiniz. Web sitesi görünümü yalnızca yararlı olsa da arama motorlarının verileri bulmasını sağlayabilir.

Test

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

  • Uygulama yüklenir ve hemen çevrimdışı olur. Başka bir deyişle, uygulamanın ilk kullanımı çevrimdışı.
  • Uygulama bir bilgisayara yüklenir ve sonra başka bir bilgisayara senkronize edilir.
  • Uygulama kaldırılır ve ardından hemen tekrar yüklenir.
  • Uygulama aynı profille aynı anda iki bilgisayarda çalışmaktadır. Uygulama bir bilgisayar çevrimdışı olduğunda, kullanıcı bilgisayarda pek çok şey yapar ve bilgisayar tekrar çevrimiçi olur.
  • Uygulamada kesintili bağlantı var ve bu bağlantı genellikle çevrimiçi ve çevrimdışı arasında geçiş yapıyor.

Ayrıca uygulamanın, kullanıcının cihazında hassas kullanıcı verisi (örneğin, şifreler) kaydetmediğinden emin olun üretiliyor.