この記事は2025年7月末時点での情報です。
結論
Facebookのユーザーページへのリンクは以下の形式で設定する。
https://www.facebook.com/@username
困りごと
自社開発iOSアプリから Facebook アプリを起動するようリンクURLを設定した際、アプリではなくブラウザで Facebook のサイトが開いてしまう。
同じMeta社のアプリである Instagram ではこのようなことは発生せず、直接 Instagram アプリが起動できる。
その理由
スマホには、Androidであれば Android App Links 、iOSであれば Universal Links と呼ばれる仕組みでブラウザから対応するアプリを直接オープンすることが可能です。
ブラウザだけでなく、アプリから他のアプリを直接オープンする際にも利用できます。
Universal Links
あるURLに対応するアプリがインストールされていると、そのURLをブラウザで開いた際にアプリを起動してくれる仕組みです。
- 公開サーバーの特定のパスに Universal Links の定義ファイルを設置します。内容はJSON形式です
- 例えば Facebook なら、
https://www.facebook.com/.well-known/apple-app-site-association
にあります
- 例えば Facebook なら、
- 定義ファイルには、配置されているサーバーのドメインとアプリIDの紐づけ設定と、どのURLでアプリが開くように(または開かないように)する設定が記載されています
詳しい仕組みは以下の記事がわかりやすいです。参考にしていただければと思います。
Deep Link/Deep Linkingまわりのあれこれ
iOSアプリのユニバーサルリンクの仕組み - lasciva blog
定義内容
Universal Links 定義の applinks.details.components
以下に配列で定義が書かれています。
先頭を抜粋すると、
"components": [
{
"#": "no_universal_links",
"exclude": true,
"comment": "Matches any URL with a fragment that equals no_universal_links and instructs the system not to open it as a universal link."
},
{
"?": {
"deoia": "1"
},
"exclude": true
},
{
"/": "/live/producer/*",
"exclude": true
},
"#"
"?"
"/"
と書かれているキーがマッチ対象で、それに続く値がマッチさせたいURL中の文字列です。値側はワイルドカードが使用可能です。それぞれのキーの意味は先に紹介したリンクの記事に譲るとして、ここでは困りごとの問題がなぜ発生するのかを説明します。
https://www.facebook.com/username
にマッチする定義が存在しない
T/O です。定義がないので、 Universal Links として無効であり、アプリは起動せずブラウザで開いてしまうわけです。
そうは言うものの、通常のWebページに上記の Facebook のリンクを書いて iPhone のsafariで開くと、期待通り Facebook アプリが開くかと思います。
ただし、URLを開いた際に何等か別のページへリダイレクトした後でアプリが開きます。 Instagram のリンクではこのようなリダイレクトは発生しません。
Facebook のリンクでは、リンクを開いた後、Javascriptで Universal Links として有効な別のページにリダイレクトさせていると思われます。
有効な定義
最終的にどのURLへリダイレクトされたかは調べていませんが、 Facebook の Universal Links 定義をKIAIで読んだ結果、それっぽい定義が見つかりました。
{
"/": "/@*"
},
URLが /@
で始まればアプリを起動するように記載されていました。
@
で始まる記法はメンションっぽいですね。@
に続いてユーザー名を書いたURLを開くとちゃんと当該ユーザーのページが開きます。
アプリから Facebook アプリを直接開きたい場合は、アプリ内ブラウザでターゲットを "_system"
にしてURLを開けばOKです。
Facebook アプリをインストールしていない端末でも、ちゃんとブラウザで当該ユーザーページが開きます。
なお、 Instagram の場合は
{
"/": "/*"
}
という定義が末尾にあり、最終的にこのルールにマッチするのでアプリが開きます。逆に @
をユーザー名の前につけると当該ユーザーが存在しないエラーになってしまいます。
余談ですが、Metaのサイトには Instagram の Universal Links に関するドキュメントは存在するのですが、 Facebook 側には存在しません。 Facebook にも同様のドキュメントがほしいところ。
もし直接アプリが開かない場合は
Facebook アプリのバージョンが古い可能性があります。アップデートするか一旦アプリを削除して再度新規インストールを試してみてください。
Universal Links の設定はアプリのインストール時もしくはアップデート時に参照され、以降は端末内で保持されるからです。
おわりに
Facebook へのURLは、冒頭で紹介したように @
をユーザー名の前につけるといい感じになります、ということでした。
開発しているアプリから Facebook アプリへの直接起動ができなくて困っている方はぜひ参考にしてください!