Camera and Microphone in WKWebView

With the release of iOS 14.3, Apple has made available the camera and microphone in WKWebView. This now allows applications with a focus on web content as well as other browsers on iOS to leverage WebRTC (amongst other things). To use the camera and microphone, applications must declare NSCameraUsageDescription and NSMicrophoneUsageDescription in the Info.plist and request permission using AVFoundation. Once that is done, you are free to use the camera and microphone in web content with the right configuration....

App Configuration

When creating an app, you will most likely need to store user preferences or other configuration data to customize or control the behavior of the application. While this can be done server-side, local configuration is faster. Apple provides NSUserDefaults to store small configuration items between the app and its extensions. These items must be PList serializable (NSData, NSString, NSNumber, NSDate, NSArray, & NSDictionary), but helper methods exist for serializing and deserializing primitives (as well as NSURL)....

Hello Apple Silicon

After 12 years, it was finally time to replace my original 2008 unibody MacBook Pro. With the iPad Pro taking over the role of mobile computing device, I opted for a Mac Mini with the M1 chip. First impressions are that the hardware is really fast, the I/O is a bit sparse, and the Big Sur is buggy. One of the first things I tested was Xcode unarchiving and I was able to use xip to unpack Xcode 12....

Single App Mode

When your app is running in an enterprise environment, you may come across deployments that lock devices into Single App Mode. When this is enabled, the device cannot leave the app set in the payload and this can potentially impact your app’s functionality. To detect this scenario, apps need to call UIAccessibilityIsGuidedAccessEnabled (Guided Access is the non-MDM term used for Single App Mode as users can lock devices to a single app for accessibility purposes)....

Intercepting os_log

Apple has been adjusting the OSLog APIs with each major release. However, this year promised a big leap in functionality as iOS apps would get access to the log store just like macOS. Unfortunately, Apple pulled the API in the GM builds of iOS 14 and Xcode 12 after the entire summer went by with the API never working. That being said, it did lead to a little exercise in reverse engineering to see if I could get the log messages and forward them to another logging API....