Router

Example of routing URLs, NSUserActivity and UIApplicationShortcutItems in an iOS app.

27
2
Swift

Router

There are an increasing array of ways an application on iOS may be launched with a context/command passed to it requiring routing within the app. These methods include:

  • NSUserActivity(s) generated by Handoff or Spotlight.
  • UIApplicationShortcutItems generated by 3D Touch shortcuts.
  • URL schemes (x-callback-url, univeral app links, or other) for deep linking into the app.

This is a sample application demonstrating a technique for abstracting routing of similar incoming commands from these sources through a router and router delegate.

This project was built with Swift 3 on Xcode 8 beta 6 and is not intended for reuse, or meant to be complete, it’s just a demostration put out there to solicit feedback on this method.

The Router object should be created in the AppDelegate, and assigned a router delegate early in the app lifecycle.

The AppDelegate passes off NSUserActivity(s), UIApplicationShortcutItem(s) and URLs to the router, which handles translating them into a generic RouterRequest struct and asking the router delegate to handle the actual command. In the case of x-callback-url requests the callback URLs are parsed and included with the RouterRequest to be called when appropriate by the router delegate.

It was made by @agiletortoise. If you have comments, please let me know.