Router
Router copied to clipboard
Example of routing URLs, NSUserActivity and UIApplicationShortcutItems in an iOS app.
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.