ส่วนขยายของ Chrome - Chrome Alarm API กำหนดเวลาการเตือนทั้งหมดใหม่หลังจากสร้างการเตือนใหม่แต่ละครั้ง

ฉันได้พัฒนาส่วนขยายของ Chrome ชื่อ Reminder App ซึ่งฉันใช้ Alarm API ซึ่งอนุญาตให้ผู้ใช้ตั้งเวลาปลุก แอพมีสองส่วนในการสร้างการแจ้งเตือนเดี่ยว (เช่นเวลา 10:20 น.) และสร้างการแจ้งเตือนหลายรายการ (เช่นทุกๆ 50 นาที) เมื่ออยู่ในแอปแพ็กเกจ (หลังจากอัปโหลดไปยังเว็บสโตร์) ฉันตั้งการแจ้งเตือนไว้สองครั้ง

1.10:20 AM (at 10:18:10 AM)

2.ทุก 10 นาที (เวลา 10:19:10 น.)

ในท้องถิ่น (แอปที่ไม่ได้บรรจุหีบห่อ) สัญญาณเตือนทั้งสองทริกเกอร์ตรงเวลา 10:20 น. แต่สถานการณ์เดียวกันในแอปที่บรรจุหีบห่อ สัญญาณเตือนครั้งแรกดับลงเวลา 10:20 น. แต่อันที่สองดับลงเวลา 10:21 น. (แทนที่จะเป็น 10:20 น.)

ฉันจะทำให้ทั้งสองซิงโครไนซ์ได้อย่างไร

เป็นเพราะเหตุนี้ที่ระบุไว้ใน Alarm API Doc หรือไม่

เพื่อลดภาระในเครื่องของผู้ใช้ Chrome จะจำกัดการเตือนไว้สูงสุดหนึ่งครั้งทุกๆ 1 นาที แต่อาจล่าช้าออกไปอีกจำนวนหนึ่งตามอำเภอใจ [...]

เพื่อช่วยคุณแก้ไขข้อบกพร่องของแอปหรือส่วนขยาย เมื่อคุณโหลดโดยแยกแพ็กแล้ว จะไม่มีการจำกัดความถี่ที่สัญญาณเตือนจะดังขึ้น


comment
คำพูดนั้นดูค่อนข้างชัดเจนและอธิบายปัญหาของคุณ   -  person Zig Mandel    schedule 29.10.2015
comment
@Zig Mandel ไม่มีวิธีอื่นใดที่ฉันจะสามารถซิงโครไนซ์ได้ใช่ไหม   -  person Sona    schedule 29.10.2015
comment
setTimeout และอื่นๆ จากหน้าพื้นหลัง   -  person Zig Mandel    schedule 29.10.2015
comment
คุณช่วยบอกรหัสที่แน่นอนให้ฉันได้ไหม? ฉันต้องตั้งค่าที่ไหนและเมื่อไหร่? หรือให้ข้อมูลอ้างอิงแก่ฉันหากมีคนใช้ไปแล้ว   -  person Sona    schedule 29.10.2015
comment
นั่นกว้างเกินไป ดูภาพรวมสถาปัตยกรรมเพื่อทำความเข้าใจหน้าพื้นหลัง   -  person Zig Mandel    schedule 29.10.2015
comment
หากคุณต้องการให้นาฬิกาปลุกสองตัวส่งพร้อมกัน ดูเหมือนว่าคุณควรจะมีนาฬิกาปลุกตัวหนึ่งที่เรียกใช้ฟังก์ชันสองฟังก์ชัน   -  person Teepeemm    schedule 29.10.2015
comment
แต่ปัญหาเกิดขึ้นในแอปแพ็คเกจเท่านั้น หากฉันตั้งค่าการเตือนครั้งที่สองระหว่าง (10:19:00 น. ถึง 10:20:00 น.) ของการเตือนครั้งแรก (เวลาตามกำหนดเวลา: 10:20:00 น.) การเตือนครั้งแรกก็ดับลงอย่างแน่นอน ช้าไปหนึ่งนาทีหลังจากที่เราเพิ่มการเตือนครั้งที่สอง ดังนั้นหากเราเพิ่มการเตือนครั้งที่สองเวลา 10:19:20 น. การเตือนครั้งแรกไปเมื่อเวลา 10:20:20 น. เปลี่ยนเป็น 10:20:00 น. ผู้ฟังสัญญาณเตือนส่งเสียงเตือนเมื่อเวลา 10:20:20 น. แล้วฉันจะสร้าง API การเตือนไม่ให้กำหนดเวลาการเตือนใหม่ได้อย่างไร หากฉันเพิ่มการเตือนอื่น ปัญหาของฉันคือ codereview.chromium.org/145353013   -  person Sona    schedule 30.10.2015


คำตอบ (2)


ตามที่ระบุไว้ในAlarm API Doc และตามที่คุณยกมา:

Chrome จำกัดการปลุกได้สูงสุดหนึ่งครั้งทุกๆ 1 นาที แต่อาจทำให้การปลุกล่าช้าออกไปอีกตามอำเภอใจ

อีกวิธีหนึ่งที่อาจใช้ได้ผลสำหรับคุณคือ 'ต่อท้าย' ข้อความเตือนความจำใหม่ด้วยชื่อของการปลุกที่มีกำหนดเวลาเดียวกัน

ซึ่งสามารถทำได้โดยการตรวจสอบว่าการปลุกใหม่จะตรงกับเวลาที่กำหนดไว้ของการปลุกทั้งหมดที่ตั้งค่าไว้แล้วหรือไม่ หากเป็นเช่นนั้น คุณสามารถล้างการปลุกนั้นๆ และสร้างปลุกใหม่พร้อมข้อความต่อท้ายได้ จากนั้นคุณสามารถจัดการข้อความต่อท้ายได้เมื่อ onAlarm() เริ่มทำงาน

[หมายเหตุ: ฉันยังไม่ได้ลองสิ่งนี้]

person Marcob14    schedule 29.10.2015

ฉันแก้ไขมันโดยใช้ฟังก์ชัน settimeout() หรือ setinterval() ตามที่ @Zig ​​Mandel แนะนำ ตอนนี้ฉันไม่ได้ใช้ Chrome Alarm API อีกต่อไป ฉันเพิ่งจัดเก็บข้อมูลโดยใช้ Storage API และสำรวจข้อมูลทุกๆ 1 วินาทีโดยใช้ฟังก์ชัน setinterval ในหน้าพื้นหลังจากที่เก็บข้อมูล

person Sona    schedule 05.11.2015