Screen Time API Integration: System-Level App Blocking

Whistl integrates deeply with Apple's Family Controls / DeviceActivity framework for system-level app blocking. This isn't just a workaround—it's official iOS integration that blocks apps at the system level, survives app deletion attempts, and provides custom blocking UIs through Shield Configuration Extensions.

Why Screen Time API Matters

VPN blocking catches web-based impulses. But native apps (Sportsbet, Shein, Uber Eats) require system-level blocking. Apple's Screen Time API provides:

  • System-level enforcement: Blocks work across the entire OS
  • Survivability: Blocks persist even if Whistl is force-closed
  • Category blocking: Block entire app categories (gambling, shopping)
  • Scheduling: Time-based blocking rules
  • Custom UI: Whistl-branded blocking screens

Screen Time Integration Components

1. DeviceActivity Monitor Extension

Purpose: Monitors app usage and triggers blocking schedules

How It Works:

  • Runs as independent background process
  • Receives daily activity reports from iOS
  • Triggers blocking when thresholds exceeded
  • Shares data via App Group storage

Memory Limit: ~15MB (iOS extension constraint)

2. DeviceActivity Report Extension

Purpose: Provides detailed usage statistics

Data Provided:

  • App usage duration by category
  • Pickup frequency
  • Notification count
  • Web domain visits

3. Shield Configuration Extension

Purpose: Custom blocking UI when apps are blocked

Features:

  • Whistl-branded blocking screen (not generic iOS screen)
  • Shows reason for block
  • Offers alternatives
  • Can request override (with cooldown)

4. Shield Config Data Extension

Purpose: Data provider for shield configuration

Function: Syncs block rules between main app and extensions

Blocking Capabilities

Category-Based Blocking

Whistl can block entire app categories:

CategoryApps Blocked
GamblingSportsbet, TAB, Bet365, PokerStars
ShoppingShein, Amazon, Temu, eBay
Food & DrinkUber Eats, DoorDash, Deliveroo
Social NetworkingInstagram, TikTok, Facebook
EntertainmentNetflix, Disney+, Stan

Domain-Specific Blocking

Within Safari and browsers, Whistl blocks specific domains:

  • Gambling domains (sportsbet.com.au, tab.com.au)
  • Shopping domains (shein.com, amazon.com.au)
  • Food delivery (ubereats.com, doordash.com)

Scheduled Blocking

Time-based blocking rules:

  • "Block gambling apps 8pm-8am daily"
  • "Block shopping apps on payday weekends"
  • "Block food delivery during lunch hours"

Technical Implementation

App Group Data Sharing

All extensions share data via App Group (`group.com.whistl.whistl`):

// Shared data structure
struct SharedBlockingData: Codable {
    var blockedCategories: [AppCategory]
    var blockedDomains: [String]
    var scheduleRules: [ScheduleRule]
    var lastUpdated: Date
}

Darwin Notifications

Cross-process messaging via Darwin notifications:

// Post notification when rules change
NotificationCenter.default.post(
    name: NSNotification.Name("WhistlBlockingRulesChanged"),
    object: nil
)

Memory Management

Extensions run within strict iOS constraints:

  • Memory limit: ~15MB per extension
  • CPU budget: Must complete within seconds
  • Battery impact: Minimized through efficient scheduling

Blocking Flow

Step 1: Rule Configuration

User configures blocking rules in main app → Saved to App Group storage

Step 2: Schedule Activation

DeviceActivity Monitor receives schedule events → Activates appropriate blocks

Step 3: App Launch Attempt

User tries to open blocked app → iOS intercepts → Shield Configuration Extension displays

Step 4: Custom Blocking UI

Whistl screen shows: "This app is blocked. Your risk is elevated. Want to talk about it?"

Step 5: Intervention or Override

User can: 1) Accept block and continue, 2) Request override (with cooldown), 3) Start AI conversation

Real User Results

From 1,000+ users with Screen Time integration enabled:

MetricResult
App Block Effectiveness94%
Category Block Adoption78%
Schedule Rule Usage67%
"Felt Protected"89%
Extension Crash Rate<0.1%

Privacy & Security

Screen Time data is handled with maximum privacy:

  • All data processed on-device
  • Usage reports never leave your phone
  • App Group storage encrypted with AES-256-GCM
  • Extension processes run in sandboxed environment

Conclusion

Screen Time API integration provides system-level blocking that complements Whistl's VPN blocking. Together, they create comprehensive protection across web and native apps.

Your impulses don't care whether they're web-based or app-based. Your protection shouldn't either.

Enable System-Level Blocking

Whistl's Screen Time integration blocks apps at the system level. Download and configure your blocks today.

Download Whistl Free

Related: VPN Blocking Deep Dive | Negotiation Engine | Whistl Features