1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsでiOSアプリのURI スキームに対応する

Posted at

image.png

一瞬「あれっ...」ってなったので備忘録

TL; DR

  • routes.rb内でダイレクトルーティングで定義すればOK

バージョン

  • Ruby:2.6.1
  • Rails:5.2.3

タイトルにiOSと書いてますがAndroidも対応できます。ただのRoutingの話なので。

やりたいこと

  • RailsがWebとモバイルアプリの両方のサーバサイドの役割を担っている
  • モバイルアプリ内で、特定の画面に遷移させるURIスキームを使いたい
    • メニューなどで表示されていないページへの遷移など
  • 上記の例としてInstagramに「運営からのコメント」があり、チャットで操作説明を受ける画面に遷移させたいような目的があったとする
    • ヘルパーリンク:qa_chat
    • URIスキーム:instagram://qa_chat

解決策

routes.rb

routes.rbで、以下のようなダイレクトルーティングを設定してあげれば良いです。

routes.rb
direct :qa_chat do
    "instagram://qa_chat"
end

ヘルパーリンク

Railsと同一のViewでヘルパーリンクを利用する場合は、以下のように記述します。

sample.erb
<%= link_to qa_chat_url %>

ちなみにダイレクトルーティングについて、Railsガイドでは以下の部分に記載があります。
(このURIスキームについての記載はありませんが、あくまで参考までに)
image.png

小ネタ

外部URLもroutes.rbで変数として定義できる

ダイレクトルーティングといえば、こちらの使い方のほうが一般的です。

よく使う外部URLを変数定義して、Railsアプリケーション内で使うことができます。
サービスLPのURLを記述する時は、個別にではなく、routes.rbにまとめて記述するほうが管理しやすいです。

example.rb
direct :homepage do
    "http://www.rubyonrails.org"
end
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?