3 เรื่องใน Screen Time API ที่ผมอยากให้ Apple แก้
ผมทำ HonorFit แอปบล็อกแอปที่คุณต้องวิดพื้นเพื่อแลกเวลาหน้าจอ (ใช้ระบบความซื่อสัตย์ ไม่มีกล้อง) เป็นแอปเดียวกันทั้งบน iPhone และ Android ไอเดียเดียวกัน โค้ดส่วนใหญ่ก็ชุดเดียวกัน และบอกตรงๆ นะครับ เวอร์ชัน Android ใช้งานสบายกว่า
ไม่ใช่เพราะ Android บล็อกแอปได้เก่งกว่า จริงๆ แล้ว Screen Time API ของ iOS ทำส่วนการบล็อกได้แน่นมาก ปัญหาคือ iOS บีบคุณไว้สามเรื่อง และดูไม่ออกเลยว่าเรื่องไหนมีไว้เพื่อปกป้องผู้ใช้ เลยมาเป็นลิสต์นี้ พร้อมสิ่งที่ผมอยากขอจาก Apple ผมพยายามเลือกเฉพาะเรื่องที่แก้แล้วไม่มีใครต้องเสียความเป็นส่วนตัว
(ถ้าอยากอ่านเวอร์ชันลงรายละเอียดเชิงเทคนิคของการทำแอปบน API นี้ ผมเขียนแยกไว้อีกบทความ: สิ่งที่เอกสารของ Apple ไม่ได้บอกคุณ)
1. ใช้แอปเวลาหน้าจอได้ทีละแอปเท่านั้น
สมมติว่าคุณใช้ Brick, Opal หรือ one sec อยู่แล้ว และอยากลอง HonorFit ด้วย บน iPhone ทำไม่ได้ครับ พอแอปที่สองขอสิทธิ์เข้าถึงเวลาหน้าจอ iOS ไม่แสดงหน้าขออนุญาตด้วยซ้ำ แค่โยน error กลับมาว่า Family Controls ใช้ได้ทีละแอปเท่านั้น ผมเจอ error นี้กับตัวเอง และนักพัฒนาคนอื่นก็เจอเหมือนกัน
ถ้าจะสลับแอป ต้องไปที่ การตั้งค่า › เวลาหน้าจอ › แอปที่มีสิทธิ์เข้าถึงเวลาหน้าจอ ปิดแอปอีกตัว และบางทีก็ต้องรีสตาร์ทมือถือด้วย ตอนนี้ HonorFit ตรวจจับ error นี้ได้แล้วและพาผู้ใช้ทำทีละขั้น เพราะข้อความ error ดิบๆ ไม่มีความหมายอะไรเลยสำหรับคนทั่วไป
ที่แปลกคือ ตอนที่ Apple เปิดตัวการขอสิทธิ์แบบนี้ในงาน WWDC22 เขาบอกไว้ว่า การขอสิทธิ์แบบ individual ต่างจากแบบควบคุมโดยผู้ปกครอง ตรงที่ใช้ได้กับกี่แอปก็ได้บนเครื่องเดียว แต่ทุกวันนี้มันไม่ได้เป็นแบบนั้น และผมก็หาเอกสารที่อธิบายเรื่องนี้ไม่เจอเลย
ทำไมเรื่องนี้ไม่ได้เป็นผลดีกับผู้ใช้: คนเราใช้เครื่องมือหลายตัวผสมกัน บางคนอาจใช้ Brick ตอนต้องโฟกัสหนักๆ ที่ทำงาน แล้วใช้ HonorFit เพื่อหาเวลาไว้ไถฟีดตอนเย็น Apple มีกฎสำหรับรวมข้อจำกัดอยู่แล้ว: เวลาที่ ManagedSettingsStore หลายตัวตั้งค่าเดียวกัน Apple บอกไว้ว่า "the most restrictive setting always wins." (การตั้งค่าที่เข้มงวดที่สุดชนะเสมอ) ถ้าใช้กฎเดียวกันข้ามแอป คนก็ใช้ได้ทั้งสองตัว และมือถือก็มีแต่จะถูกล็อกมากขึ้น ไม่มีทางน้อยลง
2. ตัวเลือกแอปใช้ยาก และแอปปรับแต่งอะไรไม่ได้
บน iPhone การเลือกแอปที่จะบล็อกต้องใช้ FamilyActivityPicker ของ Apple มันเป็นหน้าต่างของระบบที่แอปเปลี่ยนอะไรไม่ได้ นอกจากข้อความหัวและท้ายอย่างละบรรทัด เปิดมาจะเจอรายการหมวดหมู่ (โซเชียล, เกม, ความบันเทิง...) แล้วต้องแตะเข้าไปในหมวดเพื่อหาแอปจริงๆ ส่วนบน Android ผมทำรายการเองได้ HonorFit เลยแสดงแอปที่ติดตั้งไว้ เรียงตามเวลาที่คุณใช้แต่ละแอปใน 24 ชั่วโมงที่ผ่านมา
มีสองเรื่องที่ขัดใจผมในตัวเลือกของ iOS:
- เผลอบล็อกทั้งหมวดได้ง่ายมาก แค่แตะที่แถวหมวดหมู่แทนที่จะแตะเปิดเข้าไป ก็เท่ากับเลือกทุกแอปในหมวดนั้นไปแล้ว รวมถึงแอปที่จะติดตั้งในอนาคตด้วย สำหรับแอปส่วนใหญ่ นี่ไม่ใช่สิ่งที่ต้องการเลย คุณอยากบล็อก Instagram กับ TikTok ไม่ใช่ “โซเชียล” ทั้งหมด
- มองไม่เห็นว่าแอปไหนกินเวลาคุณจริงๆ เหตุผลเดียวที่คนเปิดแอปบล็อกแอปก็คือ “ฉันเล่นมือถือเยอะเกินไป” ตัวเลือกแอปคือช่วงเวลาเดียวที่เขากำลังตัดสินใจว่าจะบล็อกอะไร แต่มันไม่ให้ข้อมูลเลยสักนิดว่าเวลาหายไปไหน iPhone ของคุณรู้เป๊ะๆ ว่าคุณใช้แต่ละแอปไปนานแค่ไหน (ดูได้ในการตั้งค่าเลย) แต่ตัวเลือกแอปกลับไม่แสดง
แก้แล้วไม่เสียความเป็นส่วนตัวเลย ตัวเลือกแอปถูกวาดโดย iOS ใน process ของมันเอง แอปไม่เคยเห็นว่าข้างในมีอะไร ได้แค่ token ทึบๆ ของสิ่งที่คุณเลือก HonorFit ไม่รู้จริงๆ ว่าคุณเลือกแอปไหน ดังนั้น iOS แสดงเวลาใช้งานในตัวเลือกได้เลย โดยที่แอปก็ยังไม่รู้อะไรเพิ่ม Apple ก็ทำอะไรคล้ายๆ นี้อยู่แล้วกับ extension DeviceActivityReport ที่แสดงการใช้งานของคุณใน sandbox ซึ่งแอปอ่านไม่ได้
- ออปชันในตัวเลือกแอป ให้กำหนดได้ว่าจะเลือกทั้งหมวดหรือเลือกแค่แอป แอปบล็อกแอปจะได้แสดงรายการเฉพาะแอป ไม่มีการเผลอเลือกทั้งหมวด (และซ่อนเว็บไซต์ได้ถ้าไม่ได้ใช้)
- ออปชันให้เรียงตามและแสดงเวลาหน้าจอที่วัดได้ข้างแต่ละแอป โดยให้ iOS เป็นคนวาด แอปจะได้ไม่เห็นตัวเลขเลย
3. ดูเวลาที่เหลือแบบนับถอยหลังที่แม่นยำไม่ได้
ใน HonorFit เวลาที่คุณหามาได้จะลดลงเฉพาะตอนที่คุณอยู่ในแอปที่ถูกบล็อกจริงๆ สิ่งที่ควรแสดงก็ชัดเจน คือตัวนับถอยหลัง: “เหลือ 12:34” ที่เดินลงระหว่างคุณไถฟีด และหยุดเมื่อคุณออกจากแอป
บน Android ทำได้ง่าย service เบื้องหลังของ HonorFit เช็กทุกวินาทีว่าแอปไหนอยู่บนหน้าจอ และการแจ้งเตือนใช้ตัวนับถอยหลังที่มากับ Android แผงการแจ้งเตือนเลยวาดใหม่เองทุกวินาที แค่ดึงแผงลงมาก็เห็นเวลาที่เหลือแบบละเอียดถึงวินาที
บน iPhone ทำไม่ได้ เหตุผลคือ:
- iOS ไม่เคยบอกแอปเลยว่าคุณเปิดหรือออกจากแอปที่ถูกบล็อกเมื่อไหร่ ที่ได้มีแค่ event แบบ “การใช้งานสะสมถึงเท่านี้แล้ว” HonorFit ตั้งไว้หนึ่ง event ต่อการใช้งานทุก 15 วินาที และ event เหล่านี้ถูกส่งไปที่ extension เบื้องหลังซึ่งคอยอัปเดตการแจ้งเตือน
- การแจ้งเตือนปกตินับถอยหลังเองไม่ได้ อย่างมากที่ HonorFit ทำได้คือเปลี่ยนข้อความใหม่ทุกครั้งที่มี event เข้ามา นี่เลยเป็นเหตุผลที่การแจ้งเตือนบน iPhone ขึ้นว่า “เหลือ ~12:30” แบบมีเครื่องหมาย ~ เพราะมันกระโดดทีละ 15 วินาที
- event พวกนี้ก็ไม่ได้มาตรงเวลาเสมอด้วย บน iOS 26 ผมเคยเห็นมันมาช้า หรือมาทีเดียวหลายอัน
- Live Activities นับถอยหลังเองได้ แต่หยุดชั่วคราวไม่ได้ ไม่มีอะไรบอกแอปว่าคุณออกจาก Instagram แล้ว Live Activity เลยจะนับต่อไปเรื่อยๆ ทั้งที่มือถือวางอยู่บนโต๊ะ ซึ่งผิด
สรุปคือผู้ใช้ iPhone ได้แค่ตัวเลขประมาณ ส่วนผู้ใช้ Android ได้ตัวเลขจริง
DeviceActivity ขับตัวนับถอยหลังที่ iOS วาดเองได้ ไม่ว่าจะในการแจ้งเตือน, Live Activity หรือบน shield โดยเดินเฉพาะตอนที่แอปที่ถูกติดตามอยู่บนหน้าจอ iOS ติดตามการใช้งานนั้นละเอียดถึงวินาทีอยู่แล้ว เลยแสดงเวลาได้โดยไม่ต้องส่งข้อมูลใหม่อะไรให้แอป แค่มี callback ง่ายๆ แบบ “เปิด / ปิดแอปที่ถูกบล็อก” ส่งไปที่ monitor extension ก็แก้ได้เกือบหมดแล้วก็มีแค่นี้ครับ
พูดให้แฟร์กับ Apple หน่อย โมเดลความเป็นส่วนตัวตรงนี้ดีมากจริงๆ แอปไม่เคยรู้ว่าคุณบล็อกอะไรหรือใช้มันมากแค่ไหน และผมไม่อยากให้ตรงนี้เปลี่ยนเลย ทั้งสามเรื่องข้างบนก็ไม่ได้ทำให้มันเปลี่ยน แค่จะทำให้แอปบน iPhone มีประโยชน์ได้เท่ากับเวอร์ชัน Android ที่เป็นอยู่แล้ว
ถ้าคุณก็ทำแอปบน Screen Time และอยากได้เรื่องไหนในนี้ ช่วยส่งเรื่องเข้าไปใน Feedback Assistant ด้วยนะครับ เท่าที่ผมเข้าใจ รายงานซ้ำๆ หลายฉบับคือวิธีที่ทำให้เรื่องถูกมองเห็น และถ้าแค่อยากลองใช้แอป HonorFit ใช้ฟรีทั้งบน iPhone และ Android หวังว่าหลายคนจะชอบนะครับ!