Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Universal Linksの挙動を知る
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hira
November 19, 2024
Technology
150
2
Share
Universal Linksの挙動を知る
食べログ x Sansan モバイル勉強会 LT
hira
November 19, 2024
More Decks by hira
See All by hira
ARKitを触りながら振り返る
elu697
0
1.2k
Other Decks in Technology
See All in Technology
LLM時代の検索アーキテクチャと技術的意思決定
shibuiwilliam
3
1.3k
Route 53 Global Resolver で高額課金発生!
otanikohei2023
0
100
AI時代 に増える データ活用先
takahal
0
240
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
450
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
240
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
380
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
300
目的ファーストのハーネス設計 ~ハーネスの変更容易性を高めるための優先順位~
gotalab555
8
2.2k
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.3k
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
380
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
1k
AWS認定資格は本当に意味があるのか?
nrinetcom
PRO
2
280
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
210
Design in an AI World
tapps
1
200
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
320
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
440
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
The SEO Collaboration Effect
kristinabergwall1
1
420
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
310
Leo the Paperboy
mayatellez
7
1.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
720
Transcript
Hirayama (elu697) Universal Linksの挙動を知る
Hirayama (elu697) 千葉県生まれ神奈川育ち 2016年からiOSアプリ開発 2022年からSansan株式会社でSansan-iOSアプリ開発 最近はCSIRTとしてプロダクトセキュリティ業務も開始 About 99年生まれ, 高専, CS,
ネットワーク, セキュリティ, 旅行, バイク, 車, カメラ My keywords
こんな時どうするか
配信サービスを閲覧中 配信動画をタップしたら 動画視聴用アプリを起動 Web閲覧中に特定のコンテンツを アプリで開きたい
https://developer.apple.com/documentation/technotes/tn3155-debugging-universal -links#Test-universal-links-behavior ドメインが同じだと ページ内ナビゲーションとなる サブドメインを使えば回避できるよ
example.com/feed を閲覧中 app.example.com/video/123 を開く "TEAMID.com.example.app" 動画視聴用アプリを起動
複数のアプリになっても
配信サービスを閲覧中 配信動画をタップしたら 配信ボタンをタップしたら 配信用アプリを起動 動画視聴用アプリを起動 開くページによって 起動するアプリを分けたい
{ "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.example.app",
"paths": [ "/video/*", ] } ] } } 動画視聴用アプリを起動 app.example.com のAASA 配信用アプリを起動 live.example.com の AASA { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.example.live", "paths": [ "/stream/*", ] } ] } }
example.com/feed を閲覧中 app.example.com/video/123 を開く live.example.com/stream を開く "TEAMID.com.example.live" 配信⽤アプリを起動 "TEAMID.com.example.app" 動画視聴⽤アプリを起動
ではこう言う時は 実際の事例
Eightデジタル名刺ページを開く Eightを起動して デジタル名刺を開く Eightが入っていなかったら Sansanを起動して デジタル名刺を開く アプリに優先度をつけて起動したい
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalL inks.html#//apple_ref/doc/uid/TP40016308CH12SW1 リストの順序は、システムが処理する際の順序になるよ
{ "applinks": { "details": [ { "appIDs": [ "2325B398HM.net.8card.eight", #
Eightアプリ "69JY2G46CE.com.sansan" # Sansanアプリ ], "components": [ { "/": "virtual_cards/*" } ] } ] } } AASA ※ appIDは誰でも見ることはできてしまうため、直接掲載しています
8card.net/virtual_cards/123 Eightデジタル名刺ページを開く “2325B398HM.net.8card.eightˮ Eightを起動して デジタル名刺を開く “69JY2G46CE.com.sansanˮ Eightが入っていなかったら Sansanを起動して デジタル名刺を開く
🎉
ではなかった
デジタル名刺の受け取り手段 ・URLのタップ ・QRコードのスキャン ・NFCカードMy Eight Card)のスキャン
デジタル名刺の受け取り手段 ・URLのタップ → ✅ 期待通りの動作 ・QRコードのスキャン → 🫠 ・NFCカードMy Eight
Card)のスキャン → 🫠 URLを開く手段によって挙動が異なる
URLを開く手段によって挙動が異なる 挙動: URLタップ 1. ・タップした場合、 AASAの優先度順に基づいてアプリが起動する。 (※ ˮ2ˮの操作で記憶されている場合、その選択肢で開かれる ) 2.
・ロングタップをした場合、 UIMenuが表示されアプリまたは Safariで開くことができる。 ロングタップ操作によってSafariで開いたユーザーが、URLをタップしてもアプリが開かない 事象に遭遇する可能性がある。
URLを開く手段によって挙動が異なる 挙動: QRコードスキャン 1. ・標準カメラの場合、黄色のリンクボタンを押すことで AASAの優先度に基づいたアプリ が起動する。 (ˮ2ˮの操作によって記憶されている場合はそちらが起動する ) 2.
・標準カメラで右下 QRボタンを押すと、 UIMenuが表示されリンクを開く手段を選択でき る。 ・複数のアプリが存在する場合 、開くアプリの選択肢が下側に表示され、選択したアプリ は記憶される。 3. ・3rdパーティアプリの場合、実装方法にもよるが openURL によって開かれると URL タップと同様の挙動となる。 ・URLロングタップによるユーザー操作が記憶されている場合、その選択が利用される。
URLを開く手段によって挙動が異なる 挙動: NFCスキャン 1. ・読み込んだ際にバナーに開くアプリが表示される。 ・URLに関連するアプリがない場合 : Safariで開かれる ・URLに関連するアプリが 1つある場合
: 関連アプリで開かれる 2. ・URLに関連するアプリが 2つ以上ある場合 : 選択ダイアログが表示され る。 ・AASAに記述される優先度が高いものが上の選択肢に表示される。
起動先度付けができていない
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalL inks.html#//apple_ref/doc/uid/TP40016308CH12SW1 リストの順序は、システムが処理する際の順序になるよ 優先度とは一言も言っていなかった
システムの挙動を理解して プロダクト開発をしていきましょう
Thanks.
ぜひ懇親会で弊社社員と デジタル名刺交換をしてみてください!