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との連携を自分で決めていくのが良いと思いました。