Raycast, the app launcher and command utility that was our MacStories Selects Best Mac app of 2022, introduced URL scheme support for its extensive collection of built-in and third-party commands. The app’s existing system of hotkey and alias triggers is still the best way to send a command to Raycast in most circumstances, but with deeplinks, Raycast has opened up new automation possibilities.
Posts tagged with "URL Scheme"
Launch Center Pro, Contrast’s popular launcher for iPhone and iPad, has been updated to version 3.0. It may be hard to believe, but Launch Center Pro 2.0 came out five years ago (in 2013), before Workflow, when Pythonista, Editorial, and Drafts were the only other apps pushing forward the idea of iOS automation thanks to URL schemes and x-callback-url.
The iOS automation landscape is vastly different five years later. While Apple still hasn’t shipped a native automation framework for inter-app communication and URL schemes are still the only way to let apps exchange data with one another in an automated fashion, the evolution of Workflow into the Shortcuts app now provides users with an easier, more integrated solution to craft complex workflows. Not to mention how, thanks to its widget, ‘Open URL’ action, and ability to add custom launchers to the home screen, Shortcuts alone can supplant much of the functionality the likes of Launch Center Pro and Launcher have become well known for. Apple may not necessarily think about the Shortcuts app as “iOS automation” (they never used this expression in public), but it’s undeniable that Workflow (then) and Shortcuts (now) are a superior, more powerful alternative to perform actions that were previously exclusive to Launch Center Pro.
For this reason, I believe it’s best to think of Launch Center Pro in 2018 as a companion to Shortcuts – a more intuitive, perhaps simplified, versatile front-end to launch actions and apps in different ways, using triggers that aren’t supported by Apple and which can complement Shortcuts rather than replace it. And with version 3.0 released today, Contrast is embracing this new role of Launch Center Pro as well, doubling down on what makes it unique compared to Shortcuts, and expanding the app’s launcher capabilities in a handful of interesting ways.
In the first update since November 2017, Apple today released version 1.7.8 of Workflow, the powerful iOS automation app they acquired last year. The latest version, which is now available on the App Store, introduces a brand new Mask Image action, adds support for Things’ automation features, and improves the ability to extract text from PDFs using the company’s PDFKit framework, launched in iOS 11. While the unassuming version number may suggest a relatively minor update, Workflow 1.7.8 actually comes with a variety of noteworthy changes for heavy users of the app.
One of the Todoist features I miss the most as a Things user is the service’s natural language parser. Available in the Quick Add field of Todoist for iOS, web, and macOS, this feature is, effectively, Fantastical for tasks. Instead of having to manually select task fields such as projects, tags, or dates, you can take advantage of an easy-to-remember syntax and quickly type them out. As you do that, Todoist will highlight the parts it understands in red, indicating that it knows how to parse them. I entered hundreds of tasks in Todoist using this system, and I think it’s an aspect of task creation that every other task manager should implement as well. It makes perfect sense, and it saves a lot of time.
Aside from a half-baked attempt at supporting natural language entry in its date assignment UI, Things doesn’t unfortunately offer a quick entry feature comparable to Todoist’s. So, of course, I set out to make my own using the app’s latest automation features.
Well, kind of. For starters, as much as I’d love to, automation doesn’t mean I can make my own interfaces in Things, supplementing the app with my custom UI to more easily create tasks. Things’ new URL scheme only lets us send data from other apps such as Workflow or Drafts. More importantly though, the workflow I’m sharing today isn’t based on a complex natural language engine such as the one used by Todoist or, say, the Chrono JS parser; I’m just using some special characters sprinkled with some delicious regex to make sure Workflow knows what constitutes a task title, a project, or a due date. Thus the quoted “natural language” in the headline of this story: it’s only natural as long as you don’t forego the special syntax required to make the workflow run.
That said, I’m quite happy with how this workflow lets me add multiple tasks to Things at once. I’ve been finding it especially useful at the end of the work day or during my weekly review, when I make a list of all the things I’m supposed to do next and want an easy way to add them all to Things. For this reason, rather than restricting this workflow to Club MacStories members, I thought every MacStories reader could benefit from it and modify it to their needs.
If you’re a Club member, you can still look forward to advanced Things workflows over the next few issues of MacStories Weekly; this one, however, has been too useful for me not to share with everyone.
I switched to Things as my task manager late last year, sometime before the holidays. While I discussed this decision at length on Connected and AppStories, I didn’t write about it on MacStories because I didn’t want to rehash Ryan’s in-depth review of Things 3. In terms of design and features, everything I like about Things is covered in his original review.
My personal motivation for switching to Things boils down to this: the way projects and the Today screen are designed in Things fits well with my schedule, and doesn’t stress me out. Things has a “calm” interface that doesn’t turn overdue tasks red, making me feel guilty; projects are clearly laid out with a tasteful use of San Francisco, and further organization can be applied to a project using headings, a feature I’ve never seen in any other task manager. And among dozens of thoughtful touches, Things’ separation of Today and This Evening for the current day is absolutely in line with how I think about my typical day. In short: I want 2018 to be less stressful than last year, and Things is helping with the task management part.
That said, as someone who used 2Do and Todoist in the past and heavily automated them for integration with other apps, I was missing some solid automation options from Things. Cultured Code has offered a basic URL scheme in their iOS app for a few years now, but the supported commands never went beyond the ability to create basic, metadata-free tasks in the app.
This is changing today with Things 3.4, which I’ve had the opportunity to test and experiment with for the past couple of months. With this new version, the folks at Cultured Code have shipped one of the most powerful and versatile URL scheme action libraries seen in a task manager for iOS – comparable to Omni’s work on OmniFocus, and, in a way, perhaps even more flexible.
The new Things URL scheme, which has been documented here, lets you create tasks, projects, show specific sections of the app, and search across your entire Things database. This may not sound too impressive on paper, but what sets this feature apart is the level of customization and detail that can be applied to every single parameter of every action. As a result, Things is now a first-class citizen of the iOS automation scene, and, within the limitations of iOS inter-app communication, its URL scheme unlocks several new possible integrations with apps and workflows.
Furthermore, Cultured Code wants to make it easy for third-party developers to natively support sending data to Things from their apps. Today, the company is also introducing a JSON-based command to allow more control when adding items to Things from external apps, and they’ve created a set of Swift helper classes that apps can use to easily generate the JSON needed to pass data to Things. As I’ll demonstrate later in this article, a couple developers of two of my favorite iOS apps are already taking advantage of these capabilities to great effect.
As you can imagine, I’ve been busy experimenting with the new automation features of Things and identifying aspects of the app I wanted to speed up by integrating them with other apps. Below, you’ll find a collection of the launchers and workflows I’ve put together for Things 3.4. These are the actions and scripts I find myself using the most on a daily basis, and which I believe considerably extend Things’ capabilities on the iPhone and iPad. More advanced workflows will follow over the next couple of weeks (and months) exclusively for Club MacStories members in the Workflow Corner section of MacStories Weekly.
Let’s dig in.
When iOS 8 came out, I thought I’d stop using URL schemes altogether. Until two years ago1, my attempts at working on iOS had focused on overcoming the lack of inter-app communication with URL scheme automation, as our old coverage here at MacStories can attest. iOS 8 showed a new way to get things done on the iPhone and iPad thanks to extensions, eschewing the limited functionality (and security concerns) of URL schemes for a native, integrated foundation.
Two years later, I’ve largely reappraised my usage of URL schemes, but, unlike I first imagined, they haven’t disappeared completely from my iOS computing life. iOS automation has taken on a different form since 2014: thanks to its action extension, Workflow has brought deeply integrated automation to every app, while Pythonista remains the most powerful environment for those who prefer to dabble with Python scripting and advanced tasks (also while taking advantage of an action extension to be activated from apps).
Today, URL schemes are being used by developers and users who want to go beyond the limitations of system extensions: apps like Drafts and Workflow use URL schemes to invoke specific apps directly (which extensions can’t do – see Airmail and its custom app actions) and to link more complex chains of automated actions. URL schemes are also the best way to set up templates and import workflows for dedicated functionalities – a good example being The Omni Group with their latest automation options for template generation in OmniFocus.
While Apple’s goal with iOS 8 might have been to “kill” URL schemes by turning them into a niche technology mostly supplanted by extensions, that niche has continued to quietly thrive. iOS automation is drastically better (and more secure) today because of extensions, but, for many, URL schemes still are the backbone of app shortcuts and complex workflows. Where extensions can’t go, there’s a good chance a URL scheme will do the trick.
It’s in this modern iOS automation landscape that Launcher, first released in 2014, is graduating to version 2.0 with a focus on what it does best: standalone app shortcuts. Launcher 2.0 offers more control than its predecessor over widget customization and activation, with new features and settings that have pushed me to reconsider how I use Notification Center widgets on both my iPhone and iPad Pro.
Agile Tortoise’s Greg Pierce has an explanation of the changes coming to iOS 9 for apps that want to launch URL schemes:
There are two URL-related methods available to apps on iOS that are effected: canOpenURL and openURL. These are not new methods and the methods themselves are not changing. As you might expect from the names, “canOpenURL” returns a yes or no answer after checking if there is any apps installed on the device that know how to handle a given URL. “openURL” is used to actually launch the URL, which will typically leave the app and open the URL in another app.
Up until iOS 9, apps have been able to call these methods on any arbitrary URLs. Starting on iOS 9, apps will have to declare what URL schemes they would like to be able to check for and open in the configuration files of the app as it is submitted to Apple. This is essentially a whitelist that can only be changed or added to by submitting an update to Apple. It appears that certain common URLs handled by system apps, like “http”, “https”, do not need to be explicitly whitelisted.
In short, Apple wants to prevent apps from being able to scan a user’s device and know which apps are installed. Notably, this change comes a few months after Twitter started scanning user devices to see installed apps and deliver “a more personal Twitter experience”.
As Greg notes, Apple is doing this to protect customers’ privacy. Companies like Twitter had found a loophole to gather data about user devices that iOS doesn’t normally expose, and it makes sense for Apple to prevent this from happening in the future. The problem is that this system based on whitelists and limited number of URLs could be a serious threat to automation apps like Launch Center Pro and Launcher, which depend on launching any URL.
Since last year, various iOS teams have made an effort to obviate the need for URL schemes through extensions. This year, they’re going one step further. I agree with the underlying privacy concerns and I also believe that more developers should embrace extensions – how ironic that Twitter still doesn’t support them and they’re likely causing this change – but it’s important to note that some automation apps are based on the idea of launching URLs, not showing share sheets for extensions.
As Greg notes, there’s some confusion in this first beta of iOS 9. Hopefully Apple and developers will be able to work out a decent compromise by the final release.
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.
Earlier this month, I wrote that Launch Center Pro 2.3 extended iOS automation by integrating with IFTTT and bridging the gap between iOS apps and web services. Launch Center Pro 2.3.1, released today and seemingly a minor update, is packed with major changes for advanced users who want to build complex URL actions in the app.
If you’ve struggled to build actions that connect multiple apps in Launch Center Pro before, you’ll want to check out the new version and read through the full documentation on Contrast’s website. We’re still working on a big update to our Launch Center Pro guide, but, in the meantime, I’m going to give you an overview of what’s possible to achieve with Launch Center Pro 2.3.1.