This Week's Sponsor:

Collections Database

A Powerful Database with iCloud Sync


Posts in tutorials

Make Keyboard Shortcuts for Two Menu Items with the Same Name

OS X has an easy way to add keyboard shortcuts: in System Preferences.app go to the “Keyboard” preference pane, click on “Shortcuts” and then “App Shortcuts”. You can create a “global” keyboard shortcut (which will work in any application which has a matching menu item), or you can create an app specific shortcut which will only work in one particular application.

That’s great, but what happens if an application has two menu items with the same name? How can you tell which menu item will be used for the keyboard shortcut? Turns out there’s an easy way to do this, but one that I had never heard of, and I’m guessing others might not have known it either. I’m going to use 1Password as an example, but this will work in any OS X app.

Read more


How I Control My Mac with Automatic + IFTTT + Dropbox

The other day, Federico asked about why people use web services such as IFTTT. I have a few of these that I use frequently, but the geekiest one is this: controlling my Mac with my car.

More specifically, when I turn my car’s ignition on or off in the parking lot at my office, Automatic triggers an IFTTT recipe, creating a text file in a special Dropbox folder which is monitored by launchd[1] and runs a shell script depending on which file is created.

It sounds more complicated than it is. No, really.

Read more


Getting Started with JavaScript for Automation on Yosemite

Last month I wrote an article for MacStories on the extensibility and automation changes in OS X Yosemite. The second half was a basic overview of JavaScript for Automation (JXA) (the new addition to OS X scripting languages) joining AppleScript. Before writing that section of the article, I wanted to learn the basics of JXA in order to be sure that I understood what I was writing about and wasn’t just blindly summarizing the contents of the JXA release notes and WWDC Session Video.

Since JXA is so new, there obviously was not much information to go by. I’ve never gotten around to learning AppleScript, so articles based on the classic OS X automation language were not much help either, although I’m not sure how much they would apply anyway. The result was quite a few wasted hours trying to figure out some of the most basic parts of JXA, such as proper syntax of method calls, which method calls worked with which apps, and how to identify UI Elements in order to trigger them with UI automation. Eventually I was able to figure these things out, so now I’m back to share what I learned.

Read more


OS X Yosemite & iOS 8 Continuity Explained: Handoff, Instant Hotspot, SMS & Phone Relay

Perhaps the headline feature of OS X Yosemite (besides the visual overhaul) is what Apple has called ‘Continuity’.

Continuity is really just an umbrella-term for a few key features that allow OS X and iOS to, in Apple’s words, “connect like never before”. Those key features that make up Continuity are Handoff, Instant Hotspot, SMS Relay and Phone Relay.

Please note: iOS 8.1 is required for Continuity features.

Read more


Implementing iOS 8 Document Pickers

The new document picker and provider functionality in iOS 8 is exciting technology because it expands on the possibilities of what we are capable of doing with our devices. We are already seeing a flood of great apps integrating document pickers and extensions from developers like Dropbox, Panic, and Readdle. I recently had the need for the new UIDocumentPicker functionality so I decided to dive in and see what it takes to implement the feature. As it turns out, getting a basic implementation is extremely easy and only requires a few lines of code. Of course, this is well documented by Apple and seasoned developers will have no problems implementing a picker but for us noobs it helps to see the process laid out – so here is a brief walkthrough.

Read more



iOS 8 Family Sharing Explained: Share Purchases Between Family Members & Much More

Over the past few years it has been possible, but never easy, to have a family with iOS devices where everyone could share purchases but keep their own accounts for other purposes. Thankfully, Apple has recognised this pain point and introduced Family Sharing in iOS 8 which not only streamlines the ability to do certain things that were possible before, but also introduces some new features that makes having a family with iOS devices easier to manage.

To summarise the changes, everyone in a family can now have their own Apple ID but if they also enroll in Family Sharing they will be able to share App/iTunes Store purchases, Photos, location (Find My Friends/Find My iPhone), Reminders, and Calendar events between everyone. Most of that was possible pre-iOS 8 with some trickery and effort, but Family Sharing simplifies it significantly. What is new with Family Sharing is the ability for everyone to have their own Apple ID and share existing purchases or request purchases which will be made from one central account.

Read more


Automating iOS: A Comprehensive and Updated Guide to Launch Center Pro

Note: The following is a complete update of our original Launch Center Pro guide published in April 2014. It has been rewritten and updated for the latest 2.3 and 2.3.1 versions of Launch Center Pro with new sections, actions, videos, and more.

Released in December of 2011, Launch Center (the predecessor to Launch Center Pro) was one of the first apps to put the spotlight on URL schemes and actions. Promising the ability to launch “actions” instead of just apps, Launch Center leveraged URL actions to minimize the number of taps it took to complete common tasks on a variety of iOS apps.

In those days, URL schemes were a fairly obscure facet of iOS, and few apps supported them. App Cubby (the developers of Launch Center and Launch Center Pro, now known as Contrast) wanted to change that. With Launch Center 1.2, they introduced the “Supported Apps” list: a list of apps supporting URL schemes with quick links to load actions from those schemes into Launch Center.

A few months later, in June of 2012, App Cubby released Launch Center Pro. The evolution of Launch Center, Launch Center Pro substituted the old list view for a 3x4 grid of large, easily tappable actions.

Where Launch Center had clearly been a utility, Launch Center Pro was a second home screen. Tapping icons in a grid is natural to every iOS user, and LCP took advantage of that to feel instantly familiar. As the slick new app made waves in the tech community, awareness and support of URL schemes began to grow. Launch Center Pro was the spark that would ignite the fire for URL schemes and iOS automation.

In the following months the iOS automation landscape grew as new players entered. Pythonista brought powerful Python scripting to iOS, and Greg Pierce’s x-callback-url specification was gaining steam among third-party apps. In January, 2013, Pierce released Drafts 2.5 (Drafts for iPad 1.5), adding custom URL actions via an action menu and powerful support for x-callback-url. This placed Drafts among the front runners for the most powerful iOS automation and inter-app communication possible on iOS. The rest of 2013 would not slow down the pace. Drafts, Launch Center Pro, and Pythonista continued to iterate and improve.

August 2013 brought Editorial, a new app by the same developer behind Pythonista, which revolutionized the field all over again. Not to be defeated, Agile Tortoise answered with Drafts 3.5, and App Cubby became Contrast as they released Launch Center Pro 2.0 and (soon after) Launch Center Pro for iPad. In May of 2014, Editorial 1.1 made waves once again, and was quickly followed by the huge Launch Center Pro 2.3 update (more on that later). Right now we have the next update to Drafts to look forward to, hopefully including the intriguing new action builder Greg Pierce has teased on Twitter.

Watching these developers fight it out has been an awesome experience. The intense, unceasing competition has brought iOS automation incredibly far in a ridiculously short amount of time. The power of these apps, the increasing support of URL schemes from third party developers and the attention from many independent websites such as MacStories, Unapologetic (my personal website), Geeks With Juniors, I Miss My Mac and many others which latched onto the idea and fostered it in the early days, have grown the field from a ridiculed thought (no one can do real work on an iPad!) to a subject often discussed in the tech press. Moreover, after this year’s WWDC, the new Extensions coming in iOS 8 could redefine the field once again, and I can’t wait to see how these developers will evolve their apps to compete in this impending new era of iOS automation.

Today, Launch Center Pro (or “LCP”) has come incredibly far from its rudimentary beginnings. Once a simple app launcher held back by the lack of support for more advanced actions from third party developers, the expanding interest in URL schemes have let Contrast focus on beefing up LCP’s internal functionalities. While on the surface it looks deceptively simple, and no more than a reskin of its original design from June 2012, 2014’s Launch Center Pro is brimming with hidden power and advanced capabilities.

Since no single resource has previously existed to bring you up to speed from a total beginner to a Launch Center Pro power user, my goal is to provide one for you here. Whether you had never even heard of Launch Center Pro until reading this, or you’re a seasoned veteran of the app, this article will familiarize you with LCP’s full feature set.

Read more


Spotify Actions for Launch Center Pro

I recently tweeted about a change in the Spotify app for iOS – which I’ve been using to listen to music every day1 – that broke my shortcut to search for songs and artists from my Launch Center Pro action grid. I’ve been trying to identify the culprit and I’ve read documentation about Spotify’s URL scheme and integration with the web app, but I haven’t been able to figure out how to make searches typed in Launch Center Pro work with Spotify again. Therefore, I’ve tweaked my Spotify action setup and settled on a compromise that’s (kind of) working for now.

Read more