We are proud to announce a major release of "Alloy - Launcher and Automator". This release introduces Glances, Background and Menu workflows, new Widget, new Action Extension, bunch of new actions utilizing Glances etc.

Here is brief list of new features and improvements:


Glances is an alternative way to render actions on screen that allows to present summary of information obtained by actions or related to them. Sample Glances would be: weather forecast, stock quote, time left, last tip calculation etc. Any Glance can be composed using finely laid-out styled texts, photos and icons and can be regenerated at any time by a workflow. Glance usually substitutes action icon and title, though icon and title can be optionally preserved to keep the action easily identifiable.


Glance may be composed of several items (text, icons or images) and Glance Groups. Each Glance Group can contain other items/Groups and defines layout and visibility attributes for them. Any item or Group will be visible only if there is enough space to fully present it. Though, the first item in Glance or in a Glance Group will be always shown.

Glances can be created or updated by any workflow. For example:

  • Main Workflow for the Tip action creates glance that shows the latest tip calculation summary
  • Background Workflow for the Clock action creates glance that shows current time and date

Glance creation starts from an "Add Glance" task. Then such tasks like "Add Glance Group" or "Add Glance Text" should be added to the "Add Glance" task to define glance content. For example, the Background Workflow for the Clock action would look like:

It is possible to provide different content for different icon (Glance) sizes. It can be done via the Show for Icon Size option for any Glance Group or Glance itself. For example, the Weather action shows 5 days forecast for Large icon size and today's weather for other sizes. Glance size can be changed to provide optimal space for its content. It can be done either manually using action's context menu or by a workflow using a "Change Action Icon Size" task.


Some Glance Groups may have a Workflow associated with them. In such cases, those Glance Groups will be rendered as buttons. When the user taps on such a button it will lead launching an appropriate Workflow. For example, taping on the "Anna Haro" button inside a "Birthday Today" action launches a workflow that prompts to greet her.


Debugging of Glances is pretty easy with help of Data Inspector, which is enhanced to support live preview of them. To debug Glances you can:

  • Add a breakpoint, which inspects the $glance variable
  • Run a Workflow in the Workflow Editor and inspect Workflow results


Background Workflow

Alloy now includes a special kind of Workflows capable of running in background - Background Workflows. Such kind of Workflows can be usually used to post small updates somewhere or to update Glances without any user involvement. Example of Background workflows can be:

  • Workflow that counts new photos and updates action's budge.
  • Workflow that gets weather forecast from Yahoo and renders it in the Glance.


A new "Toggle Background Workflow" task allows to enable/disable Background Workflow and optionally allows to force it to run immediately. This task is very useful to toggle Background Workflows only when certain criteria are meet - for example after Installation Workflow completes.  

Background Workflow must not require any input from the user. So it allows to have only subset of tasks, which doesn't show any UI. Though, some tasks, that usually show UI, were modified to be silent when launched from Background Workflow. For example, a "Show Message" task will log a message instead of showing alert. The "New Task Chooser" was modified to show only allowed tasks, when maintaining a Background Workflow.

The following are Background Workflow options (accessible via thebutton in Workflow Editor):

  • Priority - keep it as low as suitable
  • Network - network requirements. It allows to running Background Workflows only if required network is available.
  • Bound Variables - system variables this Background Workflow is bound to. Any change in bound variables will lead the Workflow to run disregarding its Priority. 

The following are running schedule of a Background Workflow according to its Priority:

  • High: runs on each app launch and then every 1 minute.
  • Medium: runs on each app launch and then every 10 minutes.
  • Low: runs once a day and then every 1 hour.

It is important to carefully design Background Workflows to let them complete as quickly as possible. Avoid doing long running tasks like big data uploads - reserve them to the Main Workflow. Alloy app will prompt to terminate long running Background Workflows after some timeout but you can let them keep running if desired. Though Alloy Widget will try to terminate such Workflows automatically without any prompt.

It is possible to toggle all background actions via the iOS "Settings | Alloy | Enable Background Actions" option. This option can be useful to avoid running of problematic actions to allow troubleshooting of them.

Note: due to luck of suitable background mode in iOS, Background Workflows run only when Alloy app or Widget are active.

Note: access to resources required by a Background Workflow's tasks should be granted before such Background Workflow runs in Widget. It can be done either when the Background Workflow runs in the app or it can be done manually via the Edit Action | Privacy.

Widget Workflows

Widget Workflow represents tasks should be executed in Alloy Widget without leaving it. If the user taps an action in the Widget and the action has the Widget Workflow specified - that workflow will be executed, keeping Today Screen visible. Otherwise Alloy app will be activated and the Main Workflow will be executed.

Widget Workflow must not require any input from the user. So it allows to have only subset of tasks, which doesn't show any UI. Though, some tasks, that usually show UI, were modified to be silent when launched from Widget Workflow. For example, a "Show Message" task will log a message instead of showing alert. The "New Task Chooser" was updated to show only allowed tasks, when maintaining a Widget Workflow. In addition, there's the "Open URL" task available to allow opening of Alloy (alloy://) or some iOS System (like App-Prefs:) URLs.

Note: access to resources required by a Widget Workflow's tasks should be granted before such Widget Workflow runs in Widget. It can be done either when the Widget Workflow runs in the app or it can be done manually via the Edit Action | Privacy.

Menu Workflows

"Menu Workflow" represents named tasks should be executed from the action's context menu. It is possible to have any number of Menu Workflows that can be shown in the action's context menu. This would allow to have supplemental action activities. There's also a new "Call Workflow" task that allows calling any Menu (or Main) Workflows from other workflows of the same action, effectively implementing the "call a function" pattern.

The following are Menu Workflow options (accessible via thebutton in Workflow Editor):

  • Name - name to display
  • Include in Context Menu - controls if this workflow should nbe shown in action's context menu.
  • Arguments - list of arguments used by this workflow. A "Call Workflow" can utilize those arguments to let the user provide some values for them.

New Widget

Alloy introduces a new Widget with complete support of Glances and Background Workflows. So for example, if you need to check time left till you parking ends, there's no need to open Alloy app. Just pull down Notification Center and check out up-to-date "time left" value. Or you can tap to a Preferences action like "WiFi" to directly open "WiFi Settings" without even opening Alloy app.

New Action Extension

Alloy introduces a new Action Extension that allows launching Alloy's actions right from other apps. This allows to utilize or alter data provided by other apps. 


The action's "Input" property should be specified to mark an action as capable of accepting certain data types. For example, an action working with photos should have the "Input" = "Photo". By default, action's output will be returned to the host app, potentially changing shared data. To avoid this (if it's not desired) the action's "Output (Extension)" property should be turned OFF.


Also, there is special support for Safari browser that allows to view or change page's URL or content. To make a Safari extension an action should have the "Property List" as the input type. When launched, such an action will receive a dictionary containing "URL", "title" and "content" properties as input. To change page's URL or content an action should output a dictionary containing respective new values.


To allow taking only page's URL from Safari an action should have the "URL" as input. For example, to add a bookmark in Alloy - choose the "Bookmark" action and then choose "Install". Note, in that case action's output is ignored.  

Other Major Improvements and Changes

Better Handling of "New Photos/Videos"

The "Choose Photos/Videos" tasks now maintains "new" state on per Album basis and honor actual number of photos/videos returned according to "Photos/Videos Limit" property. There're additional tasks to improve handling of "new photos/videos": "Count Photos/Videos" to count today's or new photos/videos and "Update New Photos/Videos Date" to allow changing/clearing that date. 

New Actions

Alloy includes bunch of new/updated actions utilizing Glances and Background workflows:

  • "Save Parking: No Prompt" - a Widget optimized version of the "Save Parking" action. It runs directly in the Widget and saves parking for a predefined time period like 2 hrs.
  • "Preferences" - makes a shortcut to some System Preferences like "WiFi Settings"
  • "Today/Tomorrow Birthday" - fetches contacts having birthday today/tomorrow and shows them in the Glance. Each contact in the Glance is rendered as a button allowing to great desired contact in one tap. For the small icon size - number of contacts is presented as a budge.
  • "Go to Location" - shows latest saved location in the Glance. Its Background Workflow is bound to s:savedLocation and s:savedParkings variables so it refreshes itself as soon as their variables are changed somewhere. 
  • "Save Parking" - shows time left and parking location in the Glance. Time left value is always up-to-date.
  • "Tip" - shows latest tip calculation in the Glance.
  • "Stock Quote" - shows current stock quote for a selected symbol in the Glance.
  • "Weather" - shows current weather and 5 days forecast in the Glance.
  • "Clock" - very simple action showing current time and date in the Glance.

To discover those actions you can check the "New or Updated Actions" in the Action Directory or you can find them by "glance" tag.

Here are Some Helpful Links:

- App Preview Video: https://youtu.be/VVrWK93qiq8

- How to Design Action Video: https://youtu.be/BmWhLdnCSzw

- Alloy Getting Started Guide: http://bit.ly/1IeGBy0

- Alloy Integration Guide: http://bit.ly/1RRrrt7