Informative DevForum posts from everyone's favorite DTS member. Share and Enjoy®
The quick way to see updates is to follow the bouncing balls.
- New Posts 🟢
- Updated Posts 🟡
- Deprecated Posts 🔴
While the New and Updated flags will change with each update, the Deprecated flag is forever. Luckily for us, deprecated posts have been replaced by official documentation.
For a comprehensive list of updates, see the [CHANGELOG] (CHANGELOG.md)
Lists and links of Apple resources that The Eskimo finds useful.
- App Sandbox Resources | (PDF)
- Background Tasks Resources | (PDF)
- Code Signing Resources | (PDF) 🟡
- Debugging Resources | (PDF)
- Files and Storage Resources | (PDF)
- Network Extension Resources | (PDF)
- Networking Resources | (PDF) 🟡
- Networking Resources (Old) | (PDF)
- Notarisation Resources | (PDF) 🟡
- Security Resources | (PDF)
- Service Management Resources | (PDF)
- TabularData Resources | (PDF)
- Trusted Execution Resources | (PDF)
- XPC Resources | (PDF) 🟡
Everybody loves code signing!
- A Peek Behind the Code Signing Curtain | (PDF)
- Certificate Signing Requests Explained | (PDF)
- Creating Distribution-Signed Code for Mac | (PDF)
--deep
Considered Harmful | (PDF)- Fixing an untrusted code signing certificate | (PDF)
- Isolating Code Signing Problems from Build Problems | (PDF)
- KEXT Code Signing Problems | (PDF)
- Manual Code Signing Example | (PDF)
- Resolving Code Signing Crashes on Launch | (PDF)
- Resolving errSecInternalComponent errors during code signing | (PDF)
- Signing a Mac Product For Distribution | (PDF)
- Signing code for older versions of macOS on Apple Silicon | (PDF)
App Store, Provisioning Profiles, Developer ID, and Notarization.
- App Translocation Notes | (PDF)
- Don’t Run App Store Distribution-Signed Code | (PDF)
- Embedding a Command-Line Tool in a Sandboxed App | (PDF) 🔴
- Error 1048 When Notarising | (PDF)
- Finding a Capability’s Distribution Restrictions | (PDF)
- Notarisation Fundamentals | (PDF)
- Notarisation and the macOS 10.9 SDK | (PDF)
- Notarising an Installer Package Containing a KEXT | (PDF)
- Packaging a Daemon with a Provisioning Profile | (PDF) 🔴
- Packaging Mac Software for Distribution | (PDF)
- The Pros and Cons of Stapling | (PDF)
- Resolving Gatekeeper Problems | (PDF)
- Resolving Gatekeeper Problems Caused by Dangling Load Command Paths | (PDF)
- Sandboxed Helper Tool Crashing in
libsystem_secinit
| (PDF) - Testing a Notarised Product | (PDF)
- What exactly is a provisioning profile? | (PDF) 🔴
Bits on disk.
- Create a Zip Archive With This One Weird Trick | (PDF)
- Extended Attributes and Zip Archive | (PDF)
- On Filesystem Permissions | (PDF)
- Unpacking Apple Archives | (PDF)
- Whither FileHandle? | (PDF)
Y U KILL MAH PROCESS?
- iOS Background Execution Limits | (PDF) 🟡
- Testing Background Session Code | (PDF)
- UIApplication Background Task Notes | (PDF)
Shhh… it's a secret.
- App Groups: macOS vs iOS: Fight! | (PDF)
- BSD Privilege Escalation on macOS | (PDF)
- Calling Security Framework from Swift | (PDF)
- Data Vault Info | (PDF)
- Defining An App Group Shared Between macOS and iOS | (PDF)
- Error -34018 errSecMissingEntitlement | (PDF)
- Importing Cryptographic Keys | (PDF)
- Intermittent -34018 errors from users in the field | (PDF)
- On Cryptographic Key Formats | (PDF)
- Remote Debugging for Authorization Plugins | (PDF)
- Resolving App Sandbox Inheritance Problems | (PDF)
- Resolving Hardened Runtime Incompatibilities | (PDF)
- App ID Prefix Change and Keychain Access | (PDF)
- Keychain sharing | (PDF)
- On Mac Keychains | (PDF) 🔴
- SecItem attributes for keys | (PDF)
- SecItem: Fundamentals | (PDF)
- SecItem: Pitfalls and Best Practices | (PDF)
- Troubleshooting -34018 Keychain Errors | (PDF)
Tell me about what happened.
- Implementing Your Own Crash Reporter | (PDF)
- Fetching the Notary Log | (PDF)
- On Log Noise | (PDF)
- Parsing Dates Without Times | (PDF)
- Recording Private Data in the System Log | (PDF) 🟡
- Unified Logging from the Kernel | (PDF)
- Viewing Sandbox Violation Reports | (PDF) 🔴
- Your Friend the System Log | (PDF) 🟡
Get down in the guts.
- Avoid Dispatch Global Concurrent Queues | (PDF)
- Running a Child Process with Standard Input and Output | (PDF)
- Swift 3 and BSD Sockets | (PDF)
- WWDC 2010 Session 207 Run Loops Section | (PDF)
- An Apple Library Primer | (PDF) 🟡
- Async Signal Safe Functions vs Dyld Lazy Binding | (PDF)
- Resolving Library Loading Problems | (PDF)
- Handling
shouldFreeInfo
Parameters | (PDF) - Objective-C Memory Management for Swift Programmers | (PDF)
- On Free Memory | (PDF)
- Standard Memory Debugging Tools | (PDF)
- The Peril of the Ampersand | (PDF)
- Testing and Debugging XPC Code With an Anonymous Listener | (PDF)
- XPC and App-to-App Communication | (PDF)
Making this talk to that.
- Debugging a Network Extension Provider | (PDF)
- Debugging HTTP Server-Side Errors | (PDF)
- Investigating Network Latency Problems | (PDF)
- Network Debugging articles | (PDF)
- Network Debugging in the Field | (PDF)
- Using mitmproxy to Analyse HTTP[S] Requests | (PDF)
- A Peek Behind the NECP Curtain | (PDF)
- NEHotspotHelper pseudo API | (PDF)
- Network Extension Framework Entitlements | (PDF)
- Network Extension Provider Memory Strategy | (PDF)
- Networking in a Short-Lived Extension | (PDF)
- Five Reasons Why Synchronous Networking Is Bad | (PDF)
- iOS Network Signal Strength | (PDF)
- Maintaining a TCP Connection in the Background | (PDF)
- Moving to Fewer, Larger Transfers | (PDF) 🔴
- NSURLCache and Byte Ranges | (PDF)
- On FTP | (PDF)
- Using the Multicast Networking Additional Capability | (PDF) 🔴 🟡
- Wi-Fi Fundamentals | (PDF)
- IPv6 and App Review | (PDF)
- IPv6 Address Synthesis on Older Systems | (PDF)
- Supporting IPv6-only Networks | (PDF)
- Triggering the Local Network Privacy Alert | (PDF)
- Local Network Privacy FAQ | (PDF)
- FAQ-1: What is a local network? | (PDF)
- FAQ-2: What operations require local network access? | (PDF)
- FAQ-3: What operations require the multicast entitlement? | (PDF)
- FAQ-4: Do I need the multicast entitlement? | (PDF)
- FAQ-5: I’ve been granted the multicast entitlement; how do I enable it? | (PDF)
- FAQ-6: Can App Clips access the local network? | (PDF)
- FAQ-7: How does local network privacy work with app extensions? | (PDF)
- FAQ-8: How do I explicitly trigger the local network privacy alert? | (PDF)
- FAQ-9: How do I tell whether I’ve been granted local network access? | (PDF)
- FAQ-10: How do I use the unsatisfied reason property? | (PDF)
- FAQ-11: Do I need a local network usage description property? | (PDF)
- FAQ-12: Can I test on the simulator? | (PDF)
- FAQ-13: Once my app has displayed the local network privacy alert, how can I reset its state so that it shows again? | (PDF)
- FAQ-14: How do I map my Multipeer Connectivity service type to an entry in the Bonjour services property? | (PDF)
- FAQ-15: My app presents the local network privacy alert unexpectedly. Is there a way to track down the cause? | (PDF)
- App Transport Security | (PDF)
- Customising TLS Server Trust Evaluation Considered Harmful | (PDF)
- Implementing Secure Transport I/O Functions | (PDF)- TLS for App Developers | (PDF)
- TLS For Accessory Developers | (PDF)
General info and some puzzles.
- Bug Reporting: How and Why? | (PDF)
- KWN & ESK’s Puzzle Page: Mutation Madness | (PDF)
- Posting a Crash Report | (PDF)
- What is an exception? | (PDF)
- Quinn’s Top Ten DevForums Tips | (PDF)
All of this content is subject to the license of the Apple Developer Forums. I make no claims to any of it. This page provides PDF files as an archival format, but the live links to the articles are the preferred access method.