I build Ripple, a small screen time blocker, and the hardest part has never been blocking apps. It has been keeping the block in place when someone really wants out. This post covers what I changed in v0.1.5 for iOS 16+ and Android 8+.
Why ordinary limiters get bypassed
On iPhone, kids watch a parent type the 4 digit Screen Time passcode and remember it. Adults tap "Ignore Limit" or "One More Minute" while lying in bed at 1 AM without thinking about it.
On Android, a kid can open system settings and hit Force Stop, or move the system clock forward an hour. Online classes make it worse, because the phone needs WeChat for school chat, and a few minutes there turns into hours in WeChat Channels or YouTube Shorts.
iOS 16+: FamilyControls, ManagedSettings, DeviceActivity
- Setting
ManagedSettingsStore().application.denyAppRemoval = trueremoves the delete option when you long press the icon on the home screen. - A separate
DeviceActivityMonitorextension watches the daily quota and the night window in the background. Swiping the main app away does not matter, because iOS itself launches theShieldConfigurationscreen when the time is up. - The cooldown timer uses
ProcessInfo.processInfo.systemUptime, a monotonic clock that counts since boot. Changing the date or time zone in Settings has no effect on it. - Unlocking needs an 8 digit code held by a parent, or a code from a friend you picked.
Android 8+: block the feed and keep the service alive
- Only the short video surfaces are blocked: WeChat Channels and Moments, YouTube Shorts, and Instagram Reels. Normal chat and DMs keep working.
- On Android 11+ the phone can use its own wireless debugging to activate Device Owner, which stops uninstalling. The same route rebinds the accessibility service every 2.5 seconds if the system kills it.
- The APK went from 52 MB to 8.57 MB. It checks for updates on launch, and it asks for no network permission for blocking itself, so everything runs locally.
Links
- Website and guides: https://ripplefocus.github.io/en/
- iOS Screen Time guide: https://ripplefocus.github.io/en/ios/
- Android APK (8.57 MB, v0.1.5): https://github.com/ripplefocus/ripplefocus.github.io/releases/download/v0.1.5/ripple-v0.1.5.apk
- Release page (APK and iOS IPA): https://github.com/ripplefocus/ripplefocus.github.io/releases/tag/v0.1.5
If you have found other ways around Screen Time or Android blockers, I would like to hear them in the comments.
Top comments (0)