3 เรื่องใน Screen Time API ที่ผมอยากให้ Apple แก้

สิ่งที่ผมเจอระหว่างทำแอปบล็อกแอปตัวเดียวกันสำหรับ iPhone และ Android โดย Thomas Willheim · 30 กันยายน 2026

ผมทำ 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 ดิบๆ ไม่มีความหมายอะไรเลยสำหรับคนทั่วไป

การแจ้งเตือนของ HonorFit บน iPhone: มีแอปอื่นใช้เวลาหน้าจออยู่ iOS ให้ควบคุมเวลาหน้าจอได้ทีละแอปเท่านั้น พร้อมขั้นตอนปิดแอปอีกตัวในการตั้งค่า
สิ่งที่ผู้ใช้ iPhone เห็นใน HonorFit เมื่อมีแอปอื่นได้สิทธิ์เข้าถึงเวลาหน้าจอไปแล้ว ตัว iOS เองแค่ส่ง error กลับมาให้แอป คำอธิบายนี้เราเขียนเอง

ที่แปลกคือ ตอนที่ Apple เปิดตัวการขอสิทธิ์แบบนี้ในงาน WWDC22 เขาบอกไว้ว่า การขอสิทธิ์แบบ individual ต่างจากแบบควบคุมโดยผู้ปกครอง ตรงที่ใช้ได้กับกี่แอปก็ได้บนเครื่องเดียว แต่ทุกวันนี้มันไม่ได้เป็นแบบนั้น และผมก็หาเอกสารที่อธิบายเรื่องนี้ไม่เจอเลย

ทำไมเรื่องนี้ไม่ได้เป็นผลดีกับผู้ใช้: คนเราใช้เครื่องมือหลายตัวผสมกัน บางคนอาจใช้ Brick ตอนต้องโฟกัสหนักๆ ที่ทำงาน แล้วใช้ HonorFit เพื่อหาเวลาไว้ไถฟีดตอนเย็น Apple มีกฎสำหรับรวมข้อจำกัดอยู่แล้ว: เวลาที่ ManagedSettingsStore หลายตัวตั้งค่าเดียวกัน Apple บอกไว้ว่า "the most restrictive setting always wins." (การตั้งค่าที่เข้มงวดที่สุดชนะเสมอ) ถ้าใช้กฎเดียวกันข้ามแอป คนก็ใช้ได้ทั้งสองตัว และมือถือก็มีแต่จะถูกล็อกมากขึ้น ไม่มีทางน้อยลง

สิ่งที่ผมอยากขอ: ให้แอปมากกว่าหนึ่งตัวถือสิทธิ์ Screen Time แบบ individual ได้ ตามที่ WWDC22 บอกไว้ แล้วรวม shield ของแต่ละแอปด้วยกฎ "เข้มงวดที่สุดชนะ" แบบเดียวกัน ถ้ามีเหตุผลจริงๆ ที่ต้องจำกัด ก็เขียนไว้ในเอกสาร และให้ error code ที่ชัดเจนกับแอป จะได้อธิบายผู้ใช้ได้

2. ตัวเลือกแอปใช้ยาก และแอปปรับแต่งอะไรไม่ได้

บน iPhone การเลือกแอปที่จะบล็อกต้องใช้ FamilyActivityPicker ของ Apple มันเป็นหน้าต่างของระบบที่แอปเปลี่ยนอะไรไม่ได้ นอกจากข้อความหัวและท้ายอย่างละบรรทัด เปิดมาจะเจอรายการหมวดหมู่ (โซเชียล, เกม, ความบันเทิง...) แล้วต้องแตะเข้าไปในหมวดเพื่อหาแอปจริงๆ ส่วนบน Android ผมทำรายการเองได้ HonorFit เลยแสดงแอปที่ติดตั้งไว้ เรียงตามเวลาที่คุณใช้แต่ละแอปใน 24 ชั่วโมงที่ผ่านมา

ตัวเลือกแอปของเวลาหน้าจอบน iOS: รายการหมวดหมู่แอป โดยเปิดหมวดสุขภาพและฟิตเนสให้เห็นแอปข้างใน
iPhone: ตัวเลือกของ Apple ขึ้นหมวดหมู่ก่อน ไม่มีข้อมูลการใช้งาน และหน้าตาเหมือนกันทุกแอป
ตัวเลือกแอปของ HonorFit บน Android: รายการแอปพร้อมเวลาที่ใช้ใน 24 ชั่วโมงที่ผ่านมา เรียงจากใช้มากที่สุด
Android: รายการของ HonorFit เอง เรียงตามเวลาที่ใช้ แอปที่กินเวลาคุณที่สุดเลยอยู่บนสุด

มีสองเรื่องที่ขัดใจผมในตัวเลือกของ iOS:

แก้แล้วไม่เสียความเป็นส่วนตัวเลย ตัวเลือกแอปถูกวาดโดย iOS ใน process ของมันเอง แอปไม่เคยเห็นว่าข้างในมีอะไร ได้แค่ token ทึบๆ ของสิ่งที่คุณเลือก HonorFit ไม่รู้จริงๆ ว่าคุณเลือกแอปไหน ดังนั้น iOS แสดงเวลาใช้งานในตัวเลือกได้เลย โดยที่แอปก็ยังไม่รู้อะไรเพิ่ม Apple ก็ทำอะไรคล้ายๆ นี้อยู่แล้วกับ extension DeviceActivityReport ที่แสดงการใช้งานของคุณใน sandbox ซึ่งแอปอ่านไม่ได้

สิ่งที่ผมอยากขอ:
  1. ออปชันในตัวเลือกแอป ให้กำหนดได้ว่าจะเลือกทั้งหมวดหรือเลือกแค่แอป แอปบล็อกแอปจะได้แสดงรายการเฉพาะแอป ไม่มีการเผลอเลือกทั้งหมวด (และซ่อนเว็บไซต์ได้ถ้าไม่ได้ใช้)
  2. ออปชันให้เรียงตามและแสดงเวลาหน้าจอที่วัดได้ข้างแต่ละแอป โดยให้ iOS เป็นคนวาด แอปจะได้ไม่เห็นตัวเลขเลย

3. ดูเวลาที่เหลือแบบนับถอยหลังที่แม่นยำไม่ได้

ใน HonorFit เวลาที่คุณหามาได้จะลดลงเฉพาะตอนที่คุณอยู่ในแอปที่ถูกบล็อกจริงๆ สิ่งที่ควรแสดงก็ชัดเจน คือตัวนับถอยหลัง: “เหลือ 12:34” ที่เดินลงระหว่างคุณไถฟีด และหยุดเมื่อคุณออกจากแอป

บน Android ทำได้ง่าย service เบื้องหลังของ HonorFit เช็กทุกวินาทีว่าแอปไหนอยู่บนหน้าจอ และการแจ้งเตือนใช้ตัวนับถอยหลังที่มากับ Android แผงการแจ้งเตือนเลยวาดใหม่เองทุกวินาที แค่ดึงแผงลงมาก็เห็นเวลาที่เหลือแบบละเอียดถึงวินาที

บน iPhone ทำไม่ได้ เหตุผลคือ:

สรุปคือผู้ใช้ iPhone ได้แค่ตัวเลขประมาณ ส่วนผู้ใช้ Android ได้ตัวเลขจริง

สิ่งที่ผมอยากขอ: ให้ event ของ DeviceActivity ขับตัวนับถอยหลังที่ iOS วาดเองได้ ไม่ว่าจะในการแจ้งเตือน, Live Activity หรือบน shield โดยเดินเฉพาะตอนที่แอปที่ถูกติดตามอยู่บนหน้าจอ iOS ติดตามการใช้งานนั้นละเอียดถึงวินาทีอยู่แล้ว เลยแสดงเวลาได้โดยไม่ต้องส่งข้อมูลใหม่อะไรให้แอป แค่มี callback ง่ายๆ แบบ “เปิด / ปิดแอปที่ถูกบล็อก” ส่งไปที่ monitor extension ก็แก้ได้เกือบหมดแล้ว

ก็มีแค่นี้ครับ

พูดให้แฟร์กับ Apple หน่อย โมเดลความเป็นส่วนตัวตรงนี้ดีมากจริงๆ แอปไม่เคยรู้ว่าคุณบล็อกอะไรหรือใช้มันมากแค่ไหน และผมไม่อยากให้ตรงนี้เปลี่ยนเลย ทั้งสามเรื่องข้างบนก็ไม่ได้ทำให้มันเปลี่ยน แค่จะทำให้แอปบน iPhone มีประโยชน์ได้เท่ากับเวอร์ชัน Android ที่เป็นอยู่แล้ว

ถ้าคุณก็ทำแอปบน Screen Time และอยากได้เรื่องไหนในนี้ ช่วยส่งเรื่องเข้าไปใน Feedback Assistant ด้วยนะครับ เท่าที่ผมเข้าใจ รายงานซ้ำๆ หลายฉบับคือวิธีที่ทำให้เรื่องถูกมองเห็น และถ้าแค่อยากลองใช้แอป HonorFit ใช้ฟรีทั้งบน iPhone และ Android หวังว่าหลายคนจะชอบนะครับ!

อ่านต่อ