Expert notification decisions for iOS/tvOS: when to request permission, silent vs visible notification trade-offs, rich notification strategies, and APNs architecture choices. Use when implementing push notifications, debugging delivery issues, or designing notification UX. Trigger keywords: push notification, UNUserNotificationCenter, APNs, device token, silent notification, content-available, mutable-content, notification extension, notification actions, badge
View on GitHubKaakati/rails-enterprise-dev
reactree-ios-dev
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/Kaakati/rails-enterprise-dev/blob/main/plugins/reactree-ios-dev/skills/push-notifications/SKILL.md -a claude-code --skill push-notificationsInstallation paths:
.claude/skills/push-notifications/# Push Notifications — Expert Decisions
Expert decision frameworks for notification choices. Claude knows UNUserNotificationCenter and APNs — this skill provides judgment calls for permission timing, delivery strategies, and architecture trade-offs.
---
## Decision Trees
### Permission Request Timing
```
When should you ask for notification permission?
├─ User explicitly wants notifications
│ └─ After user taps "Enable Notifications" button
│ Highest acceptance rate (70-80%)
│
├─ After demonstrating value
│ └─ After user completes key action
│ "Get notified when your order ships?"
│ Context-specific, 50-60% acceptance
│
├─ First meaningful moment
│ └─ After onboarding, before home screen
│ Explain why, 30-40% acceptance
│
└─ On app launch
└─ AVOID — lowest acceptance (15-20%)
No context, feels intrusive
```
**The trap**: Requesting permission on first launch. Users deny reflexively. Wait for a moment when notifications clearly add value.
### Silent vs Visible Notification
```
What's the notification purpose?
├─ Background data sync
│ └─ Silent notification (content-available: 1)
│ No user interruption, wakes app
│
├─ User needs to know immediately
│ └─ Visible alert
│ Messages, time-sensitive info
│
├─ Informational, not urgent
│ └─ Badge + silent
│ User sees count, checks when ready
│
└─ Needs user action
└─ Visible with actions
Reply, accept/decline buttons
```
### Notification Extension Strategy
```
Do you need to modify notifications?
├─ Download images/media
│ └─ Notification Service Extension
│ mutable-content: 1 in payload
│
├─ Decrypt end-to-end encrypted content
│ └─ Notification Service Extension
│ Required for E2EE messaging
│
├─ Custom notification UI
│ └─ Notification Content Extension
│ Long-press/3D Touch custom view
│
└─ Standard text/badge
└─ No extension needed
Less complexity, faster delivery
```
### Token Management
```
How should you handle device tokens?
├─