Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Universal Linksの挙動を知る
Search
hira
November 19, 2024
Technology
170
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Universal Linksの挙動を知る
食べログ x Sansan モバイル勉強会 LT
hira
November 19, 2024
More Decks by hira
See All by hira
ARKitを触りながら振り返る
elu697
0
1.3k
Other Decks in Technology
See All in Technology
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
230
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
190
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
1
110
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
160
Meet AgentCore Identity Consent Portal
hironobuiga
3
180
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
190
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
110
SDDの運用にめげずに向き合った話
sansantech
PRO
0
130
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
130
SREでアラート疲れを 解決しよう!
kairim0
1
130
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
480
KanaAI
shreyas1009
0
150
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
410
For a Future-Friendly Web
brad_frost
183
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
BBQ
matthewcrist
89
10k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
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.
ぜひ懇親会で弊社社員と デジタル名刺交換をしてみてください!