Archive for April 14, 2017

Friday, April 14, 2017

Theft and Loss Recovery for iOS Users

Fraser Speirs:

Fortunately, the bag was stolen on the final day of the trip and not the first, otherwise we would have had serious problems throughout the holiday. This is another post for another time, but it’s kind of shocking how crippling the loss of a phone is.


I recently changed my Apple ID password to an unmemorable password (a mistake, as we shall see later), so the only password I have memorised is the one to unlock 1Password.


So, second task in this security audit: register a few other Trusted Numbers with Apple, and make sure that at least one of them is someone that you’re not travelling with. Additionally, make sure you know how to get in touch with that person without access to any devices or iMessage or any social media.


So, third to-do item in this process: print and carry a copy of my 1Password Recovery Kit [with your Secret Key but not your password]. It’s probably also wise to create a second copy and leave it with someone you trust and can contact, just in case you are stripped of literally everything.

I would be wary of accessing 1Password from a public computer that might be logging your keystrokes.

I don’t understand why his top priority was disabling Apple Pay. How would the thief use it without Touch ID?

Update (2017-04-14): McCloud:

ApplePay has a “Pay With Password” option you can use. Hidden until you try to use TouchID and fail at least once.

macOS 10.12.4 Locks Console Log Away From Normal Users

Howard Oakley:

Apple has not apparently documented this anywhere, but it has changed access to Sierra’s new log with the 10.12.4 update. When logged in as a normal – as opposed to admin – user, the entire contents of the logs are now inaccessible.


Log entries are still made while running with a normal user account logged in, but log show, Console, and Consolation are simply unable to find them. Consequently the only way to examine the log for a period logged in as a normal user is to log in as an admin user again and then examine previous log entries, something which Console cannot do unaided, making it even more unfit for purpose.


Although not common, apps and macOS can have bugs which only appear when running in normal user mode. This change therefore makes it much harder to use Console to examine such bugs, and much harder to investigate problems which are confined to normal user mode.

Update (2017-04-15): Joseph Chilcote:

Even more strange, log stream still works on standard accounts.

Update (2017-05-03): Howard Oakley:

Some previously-built os_log() calls no longer work properly.


log collect commands still cannot be limited in size (bug since 10.12).


Swift calls to write strings using %s in os_log() fail

Using Named iOS Font Styles With Custom Fonts

Curt Clifton:

Trying to change the family on the font descriptor gets us a descriptor that includes both the new family and the old named font style […] Creating a font from the confused descriptor takes us right back where we started […] Our Helvetica is nowhere to be found.


What if we had a way to maintain the style information even when switching to a custom font? With that available, we could look up the correct font size even when the user changes their preferred content size.

Here’s an extension on UIFont that does just that. The key trick is using associated objects to piggyback style information on the font.


In awakeFromNib the fonts will start as those set in the nib or storyboard but will end as our custom fonts. In traitCollectionDidChange the fonts will start as our custom ones and will end as our custom ones at the new preferred content size.

Sip Leaves the Mac App Store

Olá Brothers Team (via Dan Counsell):

The App Store is a great platform for distributing software, but right now we need more control and freedom to build what we think is best for our users. Also, there are restrictions imposed by Mac App Store guidelines such as sandboxing that limit some of the features we want to bring to Sip.

In general, we believe that independently distributing Sip will allow us to deliver a better application and support to our users.

Debugging Swift Code in an Embedded Framework

Daniel Jalkut:

After hours of trying to unravel this mystery, I discovered the root cause: the framework that is embedded in my app does not, in fact, contain any headers. They were stripped by Xcode when it copied the framework into the app.


In the mean time, you can work around the problem by setting the REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES build setting to NO in the app that embeds the framework[…]

Previously: Xcode, Frameworks, and Embedded Frameworks.