Push Messaging API'si, kullanıcının Tarayıcı kapatıldı. Birçok geliştirici bu mesajları kullanarak tarayıcı açık olmadan içeriği güncelleyip senkronize edebilir, ancak API, önemli bir kısıtlama var: her zaman bir bildirim göstermelisiniz. tek push mesajı alındı.
Bir kullanıcının cihazında verileri senkronize etmek veya gizlemek için push mesajı gönderebilme ve daha önce gösterdiğiniz bir bildirim, hem kullanıcılar hem de Ancak bir web uygulamasının kullanıcı olmadan arka planda çalışmasına izin vermek açık olduğunu anlamamız gerekir.
Bütçe API'si, geliştiricilerin arka planda sınırlı miktarda çalışma yapmasına olanak sağlamak için tasarlanmış yeni bir API'dir kullanıcıyı bilgilendirmeden (ör. sessiz itme veya arka plan değiştirme) getir. Chrome 60 ve sonraki sürümlerde bu API'yi ve Chrome ekibi, geliştiricilerden geri bildirim almak için çok istekli.
Geliştiricilerin, bir kullanıcının kaynaklarını arka planda kullanabilmesi için web platformu, yeni Bütçe API'sini kullanarak bütçe kavramını kullanıma sunuyor. Her biri web sitesine doğrudan erişimi olan kullanıcılar arka plan işlemleri için kullanabilir, örneğin sessiz itme gibi. Her işlem bütçeyi tüketir. bütçe harcanır, arka plan işlemleri artık kullanıcı olmadan görünürlük. Bütçeyi belirlemekten kullanıcı aracısı sorumludur. buluşsal yöntemlere göre bir web uygulamasına atanmış olmalıdır (ör. bütçe tahsisi) ilişkili olduğunu açıkladık. Her tarayıcı kendi bulgusal yaklaşımına karar verebilir.
Özet: Bütçe API'si; bütçe ayırmanızı, bütçe kullanmanızı, ve arka plan işlemlerinin maliyetini anlamak
Bütçe ayırma
Chrome 60 ve sonraki sürümlerde navigator.budget.reserve()
yöntemi kullanılabilir.
hiçbir işaret yok.
reserve()
yöntemi, belirli bir işlem için bütçe istemenize ve
bütçenin ayrılıp ayrılamayacağını belirten bir boole değeri döndürür. Eğer
bütçe ayrılmışsa, arka planınızla ilgili olarak kullanıcıyı bilgilendirmenize gerek yoktur.
iş yeri.
Push bildirimleri örneğinde, belirli bir süre için
"sessiz itme" işlemidir ve reserve()
true değeriyle çözülürse işlem
izin verilir. Aksi takdirde "yanlış" değerini döndürür ve bir bildirim göstermeniz gerekir.
self.addEventListener('push', event => {
const promiseChain = navigator.budget.reserve('silent-push')
.then((reserved) => {
if (reserved) {
// No need to show a notification.
return;
}
// Not enough budget is available, must show a notification.
return registration.showNotification(...);
});
event.waitUntil(promiseChain);
});
Chrome 60'ta "sessiz itme" diğer tek işlem türü ise ama isterseniz kendi aranızda özelliklerdeki işlem türlerinin tam listesine bakın. Test veya hata ayıklama için bütçenizi artırmanın kolay bir yolu da yoktur. ancak geçici bir çözüm olarak geçici bir çözüm olarak yeni bir profildir. Maalesef bunun için de gizli modu Bütçe olarak API, Gizli modda sıfır değerinde bütçe döndürür (ancak hatayla sonuçlanan hata ayıklama sırasında belirleniyor).
reserve()
işlevini yalnızca yapmak istediğiniz işlemi gerçekleştirmek istediğinizde aramalısınız.
rezervasyon yaptırmanız gerekir. Rezervasyon seçeneğini
ancak yine de bir bildirim görüntülemiş olsanız bile bütçe kullanılmaya devam edecektir.
Yalnızca reserve()
tarafından etkinleştirilmeyen yaygın kullanım alanlarından biri,
bir arka uçtan sessiz bir aktarım planlamaktır. Bütçe API'sinde, bütçe oluşturma işlemi için
ancak şu anda Chrome'da bunlar üzerinde çalışılmaya devam ediyor
yalnızca flag'lerin arkasında ve / veya Kaynak Denemesi'nde kullanılabilir.
Bütçe API ve Kaynak Denemeleri
Web uygulamaları tarafından kullanılabilen iki yöntem (getBudget()
ve getCost()
) bulunur
zaman planlamasına
yardımcı olur.
Chrome 60'ta kaynak deneme sürümüne kaydolursanız bu yöntemlerin ikisi de kullanılabilir ancak test için bunları yerel olarak kullanabilirsiniz. Deneysel Web Platformu özellikleri işaretle (chrome://flags/#enable-experimental-web-platform-features sayfasını şurada açın: Chrome) açın.
Bu API'lerin nasıl kullanılacağına bakalım.
Bütçenizi öğrenin
Kullanılabilir bütçenizi getBudget()
yöntemini kullanarak bulabilirsiniz. Bazı tarayıcılar
(Chrome gibi) bütçeye "azalma" yol açar Bu yüzden, size her zaman
görünürlük, bütçenizin ne kadar olduğunu gösteren bir BudgetStates
dizisi döndürür
farklı zamanlarda e-posta alırsınız.
Çalıştırabileceğimiz bütçe girişlerini listelemek için:
navigator.budget.getBudget()
.then((budgets) => {
budgets.forEach((element) => {
console.log(\`At '${new Date(element.time).toString()}' \` +
\`your budget will be '${element.budgetAt}'.\`);
});
});
İlk giriş mevcut bütçeniz, ek değerler gösterilir ne kadar harcama yapacağınızı düşünün.
At 'Mon Jun 05 2017 12:47:20' you will have a budget of '3'.
At 'Fri Jun 09 2017 10:42:57' you will have a budget of '2'.
At 'Fri Jun 09 2017 12:31:09' you will have a budget of '1'.
Gelecekteki bütçe ayrımlarını da dahil etmenin faydalarından biri, Sunucu tarafı davranışlarını uyarlamak için bu bilgileri arka uçlarıyla paylaşırlar (ör. yalnızca müşterinin bütçesi olduğunda güncellemeyi tetiklemek için push mesajı gönderme) .
İşlemin Maliyetini Alın
Bir işlemin ne kadara mal olacağını öğrenmek için getCost()
çağrısı yapıldığında bir
yani telefonla ararsanız harcanacak maksimum bütçe tutarını
bu işlem için reserve()
.
Örneğin, bir bildirimi almamanın maliyetini bulabiliriz ve aşağıdakileri içeren bir push mesajı (ör. sessiz aktarma maliyeti) alabilir kod:
navigator.budget.getCost('silent-push')
.then((cost) => {
console.log('Cost of silent push is:', cost);
})
.catch((err) => {
console.error('Unable to get cost:', err);
});
Yazma sırasında Chrome 60 şunları yazdırır:
Cost of silent push is: 2
reserve()
ve getCost()
yöntemlerinde dikkat edilmesi gereken noktalardan biri,
bir işlemin gerçek maliyeti, getCost()
tarafından döndürülen maliyetten düşük olabilir.
Mevcut bütçeniz daha azsa yine de işlem ayırabilirsiniz
belirtilen maliyetten daha yüksek olur. Spesifikasyondaki belirli ayrıntılar şunlardır:
takip eder:
Bu, Chrome'daki mevcut API'dir ve web, yeni API'leri desteklemeye devam etmektedir. arka planda getirme gibi arka plan çalışmaları yapabilen bir araç kullanıyorsanız Bütçe API'si Kullanıcıyı bilgilendirmeden gerçekleştirebileceğiniz işlem sayısını yönetmek.
API'yi kullanırken lütfen GitHub Repo ile ilgili geri bildirimde bulunun. veya Chrome hatalarını crbug.com adresinden bildirin.