URLSchemeの処理効率化の為にiOSの画面とURLの対応を考える
はじめに
WEBは画面に対してURLがあります。それに対して、iOSには画面に対してURLはありません。この無関係な2つの特性が結びつく時があります。それはURLSchemeを使う場合です。
例えば newsapp という Custom URLScheme を設定すると newsapp:// とするとアプリが起動しますね。簡単です。
newsapp://articles/12345 とURLSchemeがあった場合に話は少し難しくなります。このURLとiOSの画面はどう対応ずけるのでしょうか?例えば、逆にiOSの全てに画面にURLが設定されていれば、対応付けは簡単になるんじゃないでしょうか。
そこで、iOSの画面にRoutingを導入できるライブラリを調査しました。
ライブラリ比較
Github - skyline75489/SwiftRouter
とても綺麗で便利なのですが、単純に使用すると何でもマッピングしてしまうので、場合によってはセキュリティ的に問題があるかもしれません。handlerを使って細かく制御すれば良いかもしれません。ParamsをControllerに渡すのに留めたほうがいいかなと思いました。
Github - Zewo/Router
残念ながら使い方が瞬時にわからなかった。
GitHub - tal/trailcutter
オブジェクトに変数を閉じ込めるのは便利そうだったが、ViewControllerとどう結びつけるのかを考える必要があると感じた。
GitHub - ramy-kfoury/SwiftRouter
Custom URLSchemeが開けるのかどうかをRouterを使って返す発送が面白いと思いました。ViewControllerにマッピングする機能は無さそうです。
GitHub - shnhrrsn/SHNUrlRouter
READMEが読みやすく、具体的に活用方法が理解できた。Routingの設定がiOS的だったので、Rails的にやりたいと思いました。
GitHub - IanKeen/IKRouter
残念ながら使い方が瞬時にわからなかった。
GitHub - ReSwift/ReSwift-Router
基本的な機能がある感じでした。ViewControllerとの連携が組み込まれてるライブラリでした。ユースケースが合えば便利そうという感想です。
GitHub - hyperoslo/Compass
アプリっぽいルーティングです。
GitHub - ViacomInc/Router
シンプルで使いやすそう。ViewControllerとの連携は自分で考える必要あるが、組み込みはしやすそう。
まとめ
skyline75489/SwiftRouterかViacomInc/Routerを使うまたはベースにコードを作成して、ViewControllerとの連携を自分で決めていくのが良いと思いました。