API การรับส่งข้อความพุชช่วยให้เราสามารถส่งการแจ้งเตือนไปยังผู้ใช้ แม้จะ ปิดเบราว์เซอร์แล้ว นักพัฒนาซอฟต์แวร์จำนวนมากต้องการใช้การรับส่งข้อความนี้เพื่อ อัปเดตและซิงค์ข้อมูลเนื้อหาโดยไม่เปิดเบราว์เซอร์ แต่ API ข้อจำกัดสำคัญข้อหนึ่งคือ คุณต้องแสดงการแจ้งเตือนสำหรับ ได้รับข้อความพุชเดียว
สามารถส่งข้อความพุชเพื่อซิงค์ข้อมูลในอุปกรณ์ของผู้ใช้หรือซ่อน การแจ้งเตือนที่คุณเคยแสดงก่อนหน้านี้อาจมีประโยชน์อย่างยิ่งสำหรับผู้ใช้และ แต่การอนุญาตให้เว็บแอปทำงานในเบื้องหลังได้โดยไม่ต้องให้ผู้ใช้ ทั้งที่รู้ว่าเราเปิดใจรับการละเมิด
API งบประมาณ เป็น API ใหม่ที่ออกแบบมาเพื่อช่วยให้นักพัฒนาซอฟต์แวร์ทำงานอยู่เบื้องหลังได้อย่างจำกัด โดยไม่แจ้งให้ผู้ใช้ทราบ เช่น การพุชแบบไม่มีเสียงหรือการดำเนินการในเบื้องหลัง ดึงข้อมูล ใน Chrome 60 ขึ้นไป คุณจะสามารถเริ่มใช้ API นี้และ ทีม Chrome อยากได้รับความคิดเห็นจากนักพัฒนาซอฟต์แวร์
เพื่อให้นักพัฒนาซอฟต์แวร์ใช้ทรัพยากรของผู้ใช้ในเบื้องหลังได้ แพลตฟอร์มนี้กำลังเปิดตัวแนวคิดของงบประมาณโดยใช้ Budget API ใหม่ ชิ้น เว็บไซต์จะได้รับจำนวนทรัพยากรตามการมีส่วนร่วมของผู้ใช้ สามารถใช้ได้สำหรับการดำเนินการในเบื้องหลัง เช่น การพุชแบบไม่มีเสียง ซึ่งการดำเนินการแต่ละอย่างจะทำให้งบประมาณหมดลง เมื่อ ใช้งบประมาณหมดแล้ว ผู้ใช้จะไม่สามารถดำเนินการในเบื้องหลังได้อีกต่อไปหากไม่มีผู้ใช้ การมองเห็น User Agent จะเป็นผู้รับผิดชอบการกำหนดงบประมาณ ที่กำหนดให้กับเว็บแอปตามการเรียนรู้ เช่น งบประมาณที่ใช้ได้ สามารถลิงก์กับการมีส่วนร่วมของผู้ใช้ได้ แต่ละเบราว์เซอร์สามารถตัดสินใจได้จากแต่ละเบราว์เซอร์
TL;DR Budget API ช่วยให้คุณสามารถจองงบประมาณ ใช้งบประมาณ ดูรายการ ของงบประมาณที่เหลือและทำความเข้าใจกับต้นทุนของการดำเนินงานเบื้องหลัง
การจองงบประมาณ
คุณจะใช้เมธอด navigator.budget.reserve()
ใน Chrome 60 ขึ้นไปได้
ที่ไม่มี Flag ใดๆ เลย
เมธอด reserve()
ช่วยให้คุณของบประมาณสำหรับการดำเนินการเฉพาะและ
โฆษณานั้นจะแสดงบูลีนเพื่อระบุว่าสามารถจองงบประมาณได้หรือไม่ ถ้า
งบประมาณนั้นสงวนไว้ ไม่จำเป็นต้องแจ้งให้ผู้ใช้ทราบเกี่ยวกับภูมิหลัง
งาน
ในตัวอย่างข้อความ Push คุณสามารถพยายามจองงบประมาณ
"การดันแบบเงียบ" และหาก reserve()
แก้ไขด้วย true การดำเนินการจะเป็น
อนุญาต มิเช่นนั้น ระบบจะแสดงผลเป็น "เท็จ" และคุณจะต้องแสดงการแจ้งเตือน
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 "silent-push" เป็นการดำเนินการประเภทเดียวที่ ที่มีอยู่ แต่คุณสามารถหา รายการประเภทการดำเนินการทั้งหมดในข้อกำหนด นอกจากนี้ ไม่มีวิธีง่ายๆ ในการเพิ่มงบประมาณสำหรับการทดสอบหรือแก้ไขข้อบกพร่อง เพียงอย่างเดียว แต่เป็นวิธีแก้ปัญหาชั่วคราว คุณสามารถสร้าง โปรไฟล์ใน Chrome คุณใช้โหมดไม่ระบุตัวตนเป็นหน้างบประมาณไม่ได้ API จะแสดงผลงบประมาณเป็น 0 ในโหมดไม่ระบุตัวตน (แต่มี ที่ทำให้เกิดข้อผิดพลาด ระหว่างการทดสอบ)
คุณควรเรียกใช้ reserve()
เฉพาะเมื่อคุณตั้งใจจะดำเนินการตามที่กำหนดไว้เท่านั้น
มีการจองไว้ในอนาคตหรือไม่ โปรดทราบว่าหากคุณโทรหา "จอง" ใน
ข้างต้นแต่ยังคงแสดงการแจ้งเตือน งบประมาณจะยังคงใช้อยู่
Use Case ทั่วไปอย่างหนึ่งที่ reserve()
ไม่ได้เปิดใช้งานคือความสามารถในการ
กำหนดเวลาการพุชแบบเงียบจากแบ็กเอนด์ API งบประมาณมี API สำหรับเปิดใช้งาน
ใช้งานนี้แต่ยังคงอยู่ในระหว่างดำเนินการใน Chrome และ
พร้อมใช้งานหลังแฟล็กและ / หรือช่วงทดลองใช้จากต้นทางเท่านั้น
API งบประมาณและช่วงทดลองใช้จากต้นทาง
เว็บแอปใช้ได้ 2 วิธี ได้แก่ getBudget()
และ getCost()
ในการวางแผนการใช้งบประมาณ
ใน Chrome 60 ทั้ง 2 วิธีจะใช้ได้หากคุณลงชื่อสมัครใช้ช่วงทดลองใช้จากต้นทาง แต่สำหรับการทดสอบ คุณสามารถใช้ ภายในเครื่องได้โดยเปิดใช้ ฟีเจอร์แพลตฟอร์มเว็บรุ่นทดลอง Flag (เปิด chrome://flags/#enable-experimental-web-platform-features in Chrome)
มาดูวิธีใช้ API เหล่านี้กัน
รับงบประมาณ
คุณดูงบประมาณที่มีอยู่ได้โดยใช้เมธอด getBudget()
บางเบราว์เซอร์
(เช่น Chrome) งบประมาณจะ "ลดลง" เมื่อเวลาผ่านไป ดังนั้นเพื่อให้คุณได้รับ
การมองเห็น ซึ่งจะแสดงอาร์เรย์ของ BudgetStates
ซึ่งระบุงบประมาณ
หลายครั้งในอนาคต
วิธีแสดงรายการงบประมาณที่เราเรียกใช้ได้
navigator.budget.getBudget()
.then((budgets) => {
budgets.forEach((element) => {
console.log(\`At '${new Date(element.time).toString()}' \` +
\`your budget will be '${element.budgetAt}'.\`);
});
});
รายการแรกจะเป็นงบประมาณปัจจุบันของคุณและค่าเพิ่มเติมจะแสดง จำนวนงบประมาณที่จะใช้ในจุดต่างๆ ในอนาคต
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'.
ข้อดีอย่างหนึ่งของการรวมงบประมาณในอนาคตคือนักพัฒนาแอป แชร์ข้อมูลนี้กับแบ็กเอนด์เพื่อปรับลักษณะการทำงานฝั่งเซิร์ฟเวอร์ (เช่น ส่งข้อความ Push เพื่อทริกเกอร์การอัปเดตเฉพาะเมื่อลูกค้ามีงบประมาณ เพื่อปิดเสียง)
ดูค่าใช้จ่ายในการดำเนินการ
หากต้องการดูว่าการดำเนินการหนึ่งๆ มีค่าใช้จ่ายเท่าใด การโทรหา getCost()
จะส่งคืน
ซึ่งเป็นการระบุถึงจำนวนเงินสูงสุด ของงบประมาณที่จะใช้หากคุณโทรติดต่อ
reserve()
สำหรับการดำเนินการนั้น
ตัวอย่างเช่น เราจะสามารถทราบค่าใช้จ่ายจากการไม่แสดงการแจ้งเตือนเมื่อคุณ รับข้อความพุช (ค่าใช้จ่ายสำหรับพุชแบบเงียบ) พร้อมด้วยข้อมูลต่อไปนี้ รหัส:
navigator.budget.getCost('silent-push')
.then((cost) => {
console.log('Cost of silent push is:', cost);
})
.catch((err) => {
console.error('Unable to get cost:', err);
});
ขณะที่เขียน Chrome 60 จะพิมพ์ข้อมูลต่อไปนี้
Cost of silent push is: 2
สิ่งหนึ่งที่ควรไฮไลต์ด้วยเมธอด reserve()
และ getCost()
คือ
ต้นทุนจริงของการดำเนินการอาจน้อยกว่าต้นทุนที่ getCost()
ส่งกลับมา
คุณอาจยังจองการดำเนินการได้อยู่หากงบประมาณปัจจุบันน้อยกว่า
กว่าราคาที่ระบุไว้ รายละเอียดเฉพาะจากข้อกำหนดมีดังนี้
ดังต่อไปนี้
นั่นคือ API ปัจจุบันใน Chrome และเนื่องจากเว็บยังคงสนับสนุน API ที่ต้องใช้ความสามารถในการทำงานในเบื้องหลัง เช่น การดึงข้อมูลในเบื้องหลัง คุณสามารถใช้ Budget API เพื่อ จัดการจำนวนการดำเนินการที่คุณสามารถทำได้โดยไม่ต้องแจ้งผู้ใช้
เมื่อคุณใช้ API โปรดแสดงความคิดเห็นเกี่ยวกับที่เก็บ GitHub หรือรายงานข้อบกพร่องของ Chrome ที่ crbug.com