Universal Linksの挙動を知る
by
SansanTech
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Hirayama (elu697) Universal Linksの挙動を知る
Slide 2
Slide 2 text
elu697 千葉県生まれ神奈川育ち 2016年からiOSアプリ開発 2022年からSansan株式会社でSansan-iOSアプリ開発 最近はCSIRTとしてプロダクトセキュリティ業務も開始 About 99年生まれ, 高専, CS, ネットワーク, セキュリティ, 旅行, バイク, 車, カメラ My keywords
Slide 3
Slide 3 text
こんな時どうするか
Slide 4
Slide 4 text
配信サービスを閲覧中 配信動画をタップしたら 動画視聴用アプリを起動 Web閲覧中に特定のコンテンツを アプリで開きたい
Slide 5
Slide 5 text
https://developer.apple.com/documentation/technotes/tn3155-debugging-universal- links#Test-universal-links-behavior ドメインが同じだと ページ内ナビゲーションとなる サブドメインを使えば回避できるよ
Slide 6
Slide 6 text
example.com/feed を閲覧中 app.example.com/video/123 を開く "TEAMID.com.example.app" 動画視聴用アプリを起動
Slide 7
Slide 7 text
複数のアプリになっても
Slide 8
Slide 8 text
配信サービスを閲覧中 配信動画をタップしたら 配信ボタンをタップしたら 配信用アプリを起動 動画視聴用アプリを起動 開くページによって 起動するアプリを分けたい
Slide 9
Slide 9 text
{ "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/*", ] } ] } }
Slide 10
Slide 10 text
example.com/feed を閲覧中 app.example.com/video/123 を開く live.example.com/stream を開く "TEAMID.com.example.live" 配信用アプリを起動 "TEAMID.com.example.app" 動画視聴用アプリを起動
Slide 11
Slide 11 text
ではこう言う時は 実際の事例
Slide 12
Slide 12 text
Eightデジタル名刺ページを開く Eightを起動して デジタル名刺を開く Eightが入っていなかったら Sansanを起動して デジタル名刺を開く アプリに優先度をつけて起動したい
Slide 13
Slide 13 text
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.htm l#//apple_ref/doc/uid/TP40016308-CH12-SW1 リストの順序は、システムが処理する際の順序になるよ
Slide 14
Slide 14 text
{ "applinks": { "details": [ { "appIDs": [ "2325B398HM.net.8card.eight", # Eightアプリ "69JY2G46CE.com.sansan" # Sansanアプリ ], "components": [ { "/": "virtual_cards/*" } ] } ] } } AASA ※ appIDは誰でも見ることはできてしまうため、直接掲載しています
Slide 15
Slide 15 text
8card.net/virtual_cards/123 Eightデジタル名刺ページを開く “2325B398HM.net.8card.eight” Eightを起動して デジタル名刺を開く “69JY2G46CE.com.sansan” Eightが入っていなかったら Sansanを起動して デジタル名刺を開く
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
ではなかった
Slide 18
Slide 18 text
デジタル名刺の受け取り手段 ・URLのタップ ・QRコードのスキャン ・NFCカード(My Eight Card)のスキャン
Slide 19
Slide 19 text
デジタル名刺の受け取り手段 ・URLのタップ -> 期待通りの動作 ・QRコードのスキャン -> ・NFCカード(My Eight Card)のスキャン -> URLを開く手段によって挙動が異なる
Slide 20
Slide 20 text
URLを開く手段によって挙動が異なる 挙動: URLタップ 1. ・タップした場合、AASAの優先度順に基づいてアプリが起動する。 (※ ”2”の操作で記憶されている場合、その選択肢で開かれる) 2. ・ロングタップをした場合、UIMenuが表示されアプリまたはSafariで開くことがで きる。 ロングタップ操作によってSafariで開いたユーザーが、URLをタップしてもアプリ が開かないと事象に遭遇する可能性がある。
Slide 21
Slide 21 text
URLを開く手段によって挙動が異なる 挙動: QRコードスキャン 1. ・標準カメラの場合、黄色のリンクボタンを押すことでAASAの優先度に基づいたア プリが起動する。 (”2”の操作によって記憶されている場合はそちらが起動する) 2. ・標準カメラで右下QRボタンを押すと、UIMenuが表示されリンクを開く手段を選 択できる。 ・複数のアプリが存在する場合、開くアプリの選択肢が下側に表示され、選択した アプリは記憶される。 3. ・3rdパーティアプリの場合、実装方法にもよるが openURL() によって開かれると URLタップと同様の挙動となる。 ・URLロングタップによるユーザー操作が記憶されている場合、その選択が利用さ れる。
Slide 22
Slide 22 text
URLを開く手段によって挙動が異なる 挙動: NFCスキャン 1. ・読み込んだ際にバナーに開くアプリが表示される。 ・URLに関連するアプリがない場合: Safariで開かれる ・URLに関連するアプリが1つある場合: 関連アプリで開かれる 2. ・URLに関連するアプリが2つ以上ある場合: 選択ダイアログが表示さ れる。 ・AASAに記述される優先度が高いものが上の選択肢に表示される。
Slide 23
Slide 23 text
起動先度付けができていない
Slide 24
Slide 24 text
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.htm l#//apple_ref/doc/uid/TP40016308-CH12-SW1 リストの順序は、システムが処理する際の順序になるよ 優先度とは一言も言っていなかった
Slide 25
Slide 25 text
システムの挙動を理解して プロダクト開発をしていきましょう
Slide 26
Slide 26 text
Thanks.