CtrlK
BlogDocsLog inGet started
Tessl Logo

thiennc-tesoglobal/ios-skills

Community-maintained Agent Skills for complete Swift and Apple-platform app delivery.

73

Quality

92%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Medium

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

notification-testing.mdskills/push-notifications/references/

Notification Delivery Testing

Use this reference for Simulator, provider, device, and delivery diagnostics. Test the boundary that changed instead of treating a banner as proof that every layer is correct.

Choose the test boundary

TestWhat it provesWhat it does not prove
.apns file or xcrun simctl pushPayload parsing, app receipt, foreground/background handling, and local presentation in SimulatorProvider authentication, APNs routing, production entitlements, or hardware behavior
APNs Sandbox to a supported current iOS SimulatorRegistration callback and sandbox provider delivery using a simulator-specific, variable-length tokenProduction APNs behavior, device-only capabilities, or every CI/VM host
APNs Sandbox to a physical deviceDevice registration, provider routing, signing, and hardware-relevant behaviorProduction environment parity
APNs Production to a physical deviceRelease topic/entitlement/provider pathLocal payload or extension logic in isolation

Current Xcode/OS hosts may let iOS Simulator register with the APNs Sandbox. Treat support as host/runtime-dependent, not as a universal Simulator promise. Keep a physical-device check for production, signing, and hardware-specific behavior. Simulator APNs tokens are not interchangeable with device tokens.

Provider-free Simulator smoke test

Create a payload with the app's bundle identifier:

{
  "Simulator Target Bundle": "com.example.myapp",
  "aps": {
    "alert": { "title": "Test", "body": "Provider-free smoke test" },
    "sound": "default"
  },
  "route": "inbox"
}

Then run:

xcrun simctl push booted com.example.myapp payload.apns

Use this path to isolate payload decoding, delegate behavior, categories, and extension presentation. It does not exercise the APNs provider path.

Provider and device matrix

For a remote test, record the environment, bundle/topic, push type, priority, expiration, token source, APNs response, app callback, and final presentation. Use apns-push-type: alert for visible notifications and apns-push-type: background with priority 5 for background notifications. Background pushes are hints: they can be delayed, coalesced, throttled, or dropped, and they must not be used as a timer.

When a Simulator registration fails, inspect the Xcode/OS runtime, host architecture, signing, network, CI/VM restrictions, and entitlements before calling it an Apple-wide limitation. Re-register after reinstalling and log the opaque token length and environment without treating a cached token as truth.

Delivery debugging checklist

  • Confirm the app's topic/bundle identifier and environment match the token.
  • Capture APNs provider status and reason, not only the client log.
  • Verify the application-delegate registration callback and upload each token.
  • Inspect aps placement, push type, priority, expiration, and collapse ID.
  • Check authorization, Focus, app state, notification settings, and category IDs.
  • For extensions, verify the alert plus mutable-content: 1 trigger and the exact-once completion path in service-extension.md.
  • Repeat production or hardware-specific checks on a physical device.

For the original all-in-one recipes, read notification-patterns-complete.md.

skills

.mcp.json

README.md

tile.json