Submitting macID 2 for App Store Review

[EDIT] Apple are asking me to change the name. MacID 2 will not longer be called MacID, and will be called Unlox. You can read more about it on the Unlox blog

So! One of the requirements for releasing macID 2 is that I can only support iOS 11.2 and newer, because Apple finally fixed a nasty bug that meant macID couldn’t keep running in the background.

Today, Apple released iOS 11.2 (likely in order to fix a horrible bug that was causing people’s devices to endlessly reboot ?), and I spent the whole day trying to get macID into a state that was worthy of being submitted to Apple for App Store Review.

Unfortunately, Apple haven’t updated Xcode 9.2 (which I need to use in order to install an app from Xcode onto iOS 11.2), so Xcode 9.2 is still in beta. Turns out, Apple don’t allow submissions to App Store Review if you’re using an Xcode version that isn’t fully released, so submitting macID 2 will have to wait until Xcode 9.2 is fully released.

The thing that’s worrying me a little is that iOS 11.2 had 6 betas before it was released, but Xcode 9.2 has only had 2 betas. So I have no idea how long it will be until Apple release Xcode 9.2 so I can submit.

A little frustrating because I spend my whole Saturday working to get a decent website ready so I can submit the iOS app today, but hey, live and learn.

So, once again we’re at the mercy of Apple’s release process. I guess we wait! In the meantime I’ll keep working on re-adding features to macID 2 that I haven’t had time to add yet.

I’ll keep everyone updated when I know more!

macID 2

[EDIT 2] Apple are asking me to change the name. MacID 2 will not longer be called MacID, and will be called Unlox. You can read more about it on the Unlox blog

[EDIT] A few people have asked how they can beta test macID 2. If you’re running iOS 11.2 and macOS High Sierra, simply add your details to this form and I will add you with the next batch:

Now that macID 2 is finally in the hands of beta testers, I thought I would take the time to speak a little about what’s changed, as well as some of the decisions I’ve made.

What’s the deal with macID 2?

Firstly, you might notice that “macID” now starts with a lowercase ‘M’. Small change, but this fits in nicer with the Apple ecosystem and I think it looks great. Autocorrect is having a hard time adjusting to this change after me typing “MacID” for over two years though!

macID 2 is a complete re-write of the iOS, watchOS and macOS apps. Usually, I would advise against re-writing an app completely and instead opting to modularise and re-write parts of the app as you go. However, after running MacID 1 in the iPhone X simulator I quickly realised that some of the choices I’d made for laying out the UI were going to mean a huge change to the underlying code. If I’m going to make that much of a change, I may as well re-write it.

It also gives me the opportunity to write the whole app in Swift – which I am much faster at writing because I do it all day as my day job too – plus it means the app is way less likely to crash. I also hugely enjoy writing Swift now, and Objective-C feels archaic!

A complete re-write means I can use more modern ways of laying out the UI using something called auto-layout, which makes it significantly easier to support iPhone X. It also means that I can refine and simplify both apps to make macID 2 a more intuitive and easy-to-use experience.

I can use this opportunity to write the code in a way that is easier to maintain and build on top of; something that I’ve only learnt how to do really well since launching MacID 1.

Speaking of making things easier to maintain, I’ve taken the difficult decision to only support English in macID 2. This might seem like a lazy thing to do, but I have significantly less free time nowadays compared to when I first launched MacID 1, so finding the time to work on updates has become much harder. Anything I can do to make it quicker for me to update the app will mean more support in the future.

Continue reading macID 2

Tap to Unlock and macOS 10.13.2 beta

[UPDATE] As of the latest 10.13.2 beta (beta 3) Tap to Unlock has been fixed by Apple. Let’s hope it stays like that! Thanks to Katia for letting me know so quickly 🙂

[Original post]

Unfortunately something has changed on macOS that has caused apps that access the trackpad (MacID and Better Touch Tool) to stop working. I’m looking into if it’s fixable but I haven’t found a solution yet.

Please avoid updating to 10.13.2 if you rely on Tap to Unlock because I cannot guarantee it will keep working.

Site outage!


It’s been a little while since I’ve written anything, and I didn’t realise until recently that the blog was offline. That’s fixed! However it’s lost all its styling, so won’t look very MacID-y while I sort that back out.

I also appreciate it’s been a while since I’ve updated MacID. Lack of time is prevalent in my life at the moment. If we could extend the length of each day that would be great!

I’ve actually been working on TWO new apps to be part of the MacID family, but they’re slow progress due to my day job being quite full-on.

I will update when I have more information.


What’s new in MacID v1.3.4


MacID v1.3.4 has just been released with a plethora of tweaks and fixes.

As always, if you have a moment spare I’d really appreciate it if you could leave a short review for MacID in the iOS App Store, or update an existing rating if you’ve already left one before. Whenever an app gets updated it loses its rating in the search results 🙁

If you find that you get repeat notifications after installing the iOS app, unfortunately the only fix is to restart your device. It’s something related to background modes on iOS and seems to be an issue with iOS 9.

Here’s what’s new:

MacID for iOS

  • URL schemes can now handle multiple Macs per URL. Previously set up URL schemes will continue to work as normal.
  • Adds new “unlock” URL scheme. If you have Touch ID enabled in-app, launching this URL will ask for Touch ID and then unlock any Macs associated with that particular URL. If you have Touch ID disabled in-app then the Macs will unlock as soon as the URL is launched (if they’re connected).
  • When creating new home screen shortcuts, the Safari screen where you save to the home screen now uses your chosen colour scheme.
  • Home screen shortcut icons also now use your chosen colour scheme and have a cleaner design.
  • Adds even more beautiful colour schemes, which work on MacID for OS X and MacID for Apple Watch.
  • You can now long-touch on the Settings navigation bar at the top to jump back to the start. Handy because MacID is getting more customisable with deeper settings navigation.
  • Adds new power saving options so you can decide how MacID throttles the connection for Low Power Mode.
  • Adds new options for MacID for Pebble too, you can now choose if MacID for Pebble automatically launches for all unlock request, just Proximity Wake requests, or none at all.
  • Lifts the 4000 character limit on sending clipboard text between devices.
  • Fixes an issue where the Today widget wouldn’t update if a device disconnects while the widget is visible.
  • Fixes an issue where creating shortcut items could fail.
  • Fixes various little crashes through crash reports, if you’re one of the people who have this enabled in iOS privacy settings then thank you!
  • Fixes an issue where advertising Bluetooth could crash if the device name had particular characters in it.

MacID for Apple Watch

  • Brand new settings screen, tap the cog icon at the bottom of the main screen to access settings like choosing when MacID for Apple Watch plays haptics.
  • Adds new option for the MacID complication to show either the connected count, locked, or both.
  • You can now see the exact version of MacID for Apple Watch on the settings screen.
  • Updated notification design. Unfortunately there’s no way to modify this in code so I can’t make your chosen colour scheme work with this yet.
  • Unlock alerts now show no matter where you are in the app.
  • Much, much better support for switching between multiple Apple Watches paired to one iPhone.
  • Improves retrieving connected Macs when launching from a new install.
  • Leaving audio controls open for a connected Mac will properly update the currently playing track when you wake the screen.
  • Audio controls dismiss themselves if that Mac disconnects.
  • Removes “snooze” option from in-app unlock alerts that aren’t Proximity Wake alerts.
  • Fixes an issue where receiving any kind of MacID notification while the watch is active would show an unlock alert.
  • Fixes an issue where the complication could show the wrong number of Macs connected if the iOS app was restored in the background by iOS.
  • Fixes an issue where the complication wouldn’t update because the iOS was sending too much data in one go. Unfortunately there are still times when the system won’t let the complication update but it should be more reliable now.

MacID for OS X

  • You can now enable Tap to Unlock to work when Terminal is active, but note that there is no was for MacID to know if Terminal is asking for a password. This means tapping your tap pattern will always type your password into a Terminal window if it’s active.
  • You can also now ask MacID to notify you when the Mac App Store requires your password. This also enables Tap to Unlock for the Mac App Store. This feature requires that your OS X account password and Mac App Store password are the same.
  • The two new options above can be found in the new Advanced menu under More
  • Increases the size of the Lock Screen menu item.
  • Improves reconnection times a little.
  • Includes support for the new MacID colours which you can choose in MacID for iOS.
  • Improves elevated auth requests/admin requests by only notifying you if the system is actually asking for a password. Sometimes the system is just asking for your approval but not asking for a password, MacID can now tell the difference.
  • Adds an option to make any paired device the primary device.
  • Improves Tap to Unlock responsiveness when waking from deep sleep.
  • Adds option to stop searching for devices when it’s in the “Looking for…” stage.
  • Lifts the 4000 character limit for sending clipboard text.
  • Fixes an issue where a device disconnecting and reconnecting during password setup could cause the setup window to close.
  • Bluetooth scanning now ‘pauses’ between each connection attempt to help alleviate cfprefsd CPU issues.
  • Fixes an issue where an unlock request would get sent if an iOS device connects while the screensaver is running but the lock screen isn’t visible.
  • Fixes an issue where Proximity Wake would continually press the return key.
  • Fixes an issue where elevated auth requests would get sent even if the account isn’t an admin account.
  • Fixes an issue where selecting some Auto-lock options would cause “Limit to battery power” to become enabled.
  • Fixes an issue where MacID would MacID wouldn’t stop scanning after searching for new devices.
  • MacID now forces itself to activate when showing alerts so it’s better for VoiceOver users.
  • Fixes an issue where the lock screen icon may not always appear.
  • Prevents a Spotify-related crash.
  • Prevents an issue where “lock on disconnect” may fail.
  • Fixes an issue where forgetting a primary device wouldn’t automatically assign a new primary device.
  • Fixes an issue where choosing “Reconnect” wouldn’t show that it’s “Looking” even though it was searching for the device.
  • Fixes an issue where choosing “Uninstall” would re-save known devices just before uninstalling.
  • Fixes an issue where the Auto-lock menu wouldn’t properly disable items if Proximity Wake was set to a conflicting option.

What happens if Apple release their own version of MacID?

Yesterday, MacRumors posted an article that suggests Apple are going to be incorporating a similar idea to MacID baked into iOS and OS X. Since then I’ve had a few people message me and let me know their support and concerns (and some taunts…).

Firstly, let me put it to rest that if Apple do this, I won’t be shelving MacID. At least not while it’s still worth my time. Remember that MacID does more than just unlocking your Mac, it has the highest ratings out of all unlocking apps and a strong base of users.

It’s unlikely that Apple’s implementation will have any of these features:

  • Tap to Unlock (which in v1.3.4 will also work with Terminal and the Mac App Store)
  • Proximity based locking, waking and unlocking
  • Custom proximity triggers
  • Remotely share clipboards and start screensavers
  • Touch ID for administrator password requests
  • Multiple iOS devices per Mac, and multiple Macs per iOS device (this is possible, but unlikely)
  • Limiting features based on whether you’re connected to a power source or not
  • Audio controls
  • Full (and super fast) Apple Watch app
  • Pebble watch support
  • Custom URL schemes
  • Home screen shortcuts
  • iOS 8 and 9 support
  • Support for devices that don’t have Touch ID (effectively turning them into keys)
  • Constant supply of updates and new tweaks and features (MacID’s been updated 8 times since launching, which is an update about every 2 months)

The reason MacID exists is because I was bored of waiting for Apple to implement it themselves, so I can’t get angry that they finally have. Am I concerned? A little, I won’t lie, but this is software development this sort of stuff is what happens, especially to independent devs!

Although MacRumors are respectable and quite often right, it’s also worthwhile noting that they aren’t always right and they don’t cite any sources in their article.

I’ll be at WWDC this year so I’ll be the first to hear about it, and if worst comes to the worst and MacID’s downloads completely stop, it will free up time to work on whatever new awesome stuff announced and make another killer app.

Whatever happens, thanks for all the support over the last year and I’ll keep doing what I do!

Why MacID might say your Mac is locked when its not

If you set your Mac to require a password for anything other than “immediately” in System Preferences > Security & Privacy > “Require password after sleep or screensaver begins”, then unfortunately the system will always report to MacID that your screen is locked regardless as soon as your display sleeps or the screensaver starts.

Unfortunately there’s nothing that can be done my end, although as ever I’ve submitted a bug report to Apple so hopefully this will get resolved quickly.

For now, if this is causing an issue for you I would suggest changing the option to just require a password “immediately” or disable it altogether and just use MacID to lock your screen.

MacID for OS X reconnection procedure

As MacID becomes more popular, more and more people in offices are using it.

This is awesome, but in an environment like this it really shows up an issue where MacID has to “ping” everything nearby to reconnect to your device.

I really wish I didn’t have to do this, but there are a couple of issues with Bluetooth on OS X that mean I have to.

  1. The APIs are meant to allow apps to search only for devices that have a specific service. Unfortunately this just doesn’t work, I’ve spoken to other devs and they’ve had the same issue.
  2. Apps are also meant to be able to save a device’s identifier to reconnect to it at a later date. This works, until iOS changes its identifier, which happens randomly. I suspect this is something to do with protecting users’ privacy, but it makes reconnecting difficult.

As you can imagine, both of these issues present a problem. The only solution to which is to scan for everything and then try and figure out which is the right device.

Every new version of OS X I check if this has been fixed so I can at least search for just devices that are advertising the right services but unfortunately that hasn’t happened yet.

High cfprefsd CPU usage when using MacID

Update 5: Apple have replied to my bug report informing me that it’s a duplicate of another bug (#24570370). When that bug gets marked as fixed I will be able to see it and update you accordingly, but until it does we’ve done all we can do at this point.

Update 4: Thank you to everyone who’s provided a Bluetooth diagnostic report, I’ve now forwarded them on to Apple with bug report #26194733. 

Update 3: Clearing the OS X Bluetooth cache should help, even if not permanently. To clear the cache, click the MacID menu > More > Reset Bluetooth. It shouldn’t affect any paired keyboards or mice but will clear the cache.

Update 2: Other apps that use Bluetooth APIs on OS X are experiencing the same issue. Hopefully Apple will have a fix for this in the near future. Other people have been filing bugs with Apple too.

Update 1: A user has been kind enough to email to let me know that after reinstalling El Capitan, it has fixed the issue for them. Not an ideal solution by any means, but does help prove the theory Apple can fix it.

There are a few people reporting that while using MacID, the system is reporting high CPU usage for the `cfprefsd` process. I’ve never been able to reproduce this issue so it’s been hard for me to diagnose, but thanks to some helpful people I’ve been told it seems to happen when MacID is searching for your device to connect to.

Unfortunately this means that this is an issue internally where the system is accessing the Bluetooth plist file, and there’s not much I can do about that. If I stop MacID from scanning, then of course MacID would never connect to your device and it would be useless.

Thankfully this doesn’t happen to everyone, but if you are affected the more information you can provide about when it happens will help me narrow the issue down and file a decent bug report with Apple. What would be even more helpful is if you can send me a Bluetooth diagnostics report, along with your model of Mac and the version of OS X you’re using.

Here’s how to start a Bluetooth diagnostics report:

  • When the issue has happened, hold alt/option and click the Bluetooth icon in the menu bar
  • From the menu that appears choose “Create Diagnostics Report on the Desktop…”
  • After a moment a zip file will appear on your desktop, forward that file to the feedback email address and I’ll add it to the bug report with Apple

Any help you can provide will go a long way to getting this issue fixed. I can’t file a bug report with Apple until I can either reproduce the issue or forward on a report from someone who has. Thanks!

Make Apple Watch interactive notifications more reliable by waiting a moment before tapping a button

One of the best things about having an Apple Watch is the convenience of being able to action notifications directly from your wrist without having to get your phone out.

Many apps take full advantage of this convenience, like Tweetbot and Spark, and MacID is no exception. With Tweetbot you can “like” a mention, and with Spark you can mark an email as read. With MacID, you can unlock your Mac and snooze Proximity Wake requests (with more snooze options showing on the Watch than on iOS).

There’s one major difference between the other apps and MacID’s notifications on watchOS, which is that it’s really noticeable when MacID’s notifications don’t work. When you like a mention, you just tap it and assume it’s been liked. When you mark a mail as read, you do it and forget about it. But when you tap “unlock” for MacID, if it doesn’t unlock, it’s immediately apparent it hasn’t worked.

In actual fact, all watchOS notifications suffer from this. This has been a long-running issue since watchOS 2.0, and one that is yet to be fixed by Apple. As developers, there’s not a great deal we can do. The problem is that when you tap on a notification button on your Watch, sometimes the iOS app doesn’t get informed by watchOS; which means that the app doesn’t do anything.

There does seem to be one thing you can do, as the title of this post says, and that’s to wait just a moment longer after the notification appears on-screen on your Watch. Although this is frustrating, it does seem to work much more reliably. Give it a go, and let me know how you get on by tweeting @MacIDHelp.