Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ディープリンクの 設計と実装 - iOSDC2017
Search
ninjinkun
September 16, 2017
Programming
18
10k
ディープリンクの 設計と実装 - iOSDC2017
一休レストランiOSアプリでディープリンクを実装する際に得られた知見を共有します
ninjinkun
September 16, 2017
Tweet
Share
More Decks by ninjinkun
See All by ninjinkun
買収から2ヶ月でシステム統合した話
ninjinkun
0
120
Designer's and Engineer's Thinking Styles
ninjinkun
0
250
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
570
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
19k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
17k
フリルのアプリ開発今昔物語
ninjinkun
3
2.2k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3.1k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
700
Elevationで影が思ったように出ないとき
ninjinkun
4
12k
Other Decks in Programming
See All in Programming
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
560
Graviton と Nitro と私
maroon1st
0
130
Cell-Based Architecture
larchanjo
0
140
ゲームの物理 剛体編
fadis
0
370
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.5k
愛される翻訳の秘訣
kishikawakatsumi
3
340
SwiftUIで本格音ゲー実装してみた
hypebeans
0
480
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
180
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
190
認証・認可の基本を学ぼう前編
kouyuume
0
260
Cap'n Webについて
yusukebe
0
150
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
65
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
48
Scaling GitHub
holman
464
140k
Producing Creativity
orderedlist
PRO
348
40k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
23
Leo the Paperboy
mayatellez
0
1.2k
Speed Design
sergeychernyshev
33
1.4k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
240
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Transcript
σΟʔϓϦϯΫͷ ઃܭͱ࣮ @ninjinkun iOSDC 2017
ҰٳϨετϥϯ w ྑ͍͓ళΛ͓ಘʹΦϯϥΠϯͰ ༧ w ͥͻσʔτɺՈͰͷ৯ࣄɺ ͳͲʹ͝ར༻͍ͩ͘͞ w ͓खࠒͳ͓ళ๛Ͱ͢
ҰٳϨετϥϯ w ͜ͷΞϓϦΛσΟʔϓϦϯΫ ରԠͨ͠ݟΛڞ༗͠·͢
ΞδΣϯμ w σΟʔϓϦϯΫͱʁ w ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ w ઃܭͱ࣮ w 63-εΩʔϜ w
6OJWFSTBM-JOLT w ·ͱΊ
σΟʔϓϦϯΫͱʁ
·ͣ۩ମྫ͔Β
ࣗࣾαΠτ͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱʁ
(PPHMF͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱʁ
ϝʔϧ͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱʁ
σΟʔϓϦϯΫ w ֎෦͔ΒΞϓϦͷಛఆͷը໘ʹભҠ͢Δख๏ͷ૯শ w "OESPJEแׅ͢ΔͨΊʹੜ·Ε໊ͨশͱࢥΘΕ w J04Ͱͷ࣮ํ๏ͱͯ͠63-εΩʔϜͱ 6OJWFSTBM-JOLT͕͋Δ σΟʔϓϦϯΫͱʁ
63-εΩʔϜ w ͖ͬ͞ͷόφʔ͔Β։͘ํ w ಠࣗͷ63-εΩʔϜΛఆٛ͢Δ w ྫ w υϝΠϯΛೖΕ͍ͯΔཧ༝ޙड़ w
J1IPOF04 ͔Βར ༻Մೳ σΟʔϓϦϯΫͱʁ rsikyu://restaurant.ikyu.com/100198/
63-εΩʔϜ w ଞࣾΞϓϦ͔Β։͘ʹಠࣗ63-εΩʔϜΛΈࠐ ΜͰΒ͏ඞཁ͕͋Δ w εΩʔϜΛ֤ΞϓϦʹϋʔυίʔσΟϯά͢Δඞཁ ͕͋Δ σΟʔϓϦϯΫͱʁ let IkyuScheme
= "rsikyu" let IkyuDomain = "restaurant.ikyu.com" func openIkyuRestaurant(restaurantId: Int) { UIApplication.shared.open( URL(string: "\(IkyuScheme)://\(IkyuDomain)/\(restaurantId)/")!, options: [ : ], completionHandler: nil ) }
6OJWFSTBM-JOLT w ͖ͬ͞ͷ(PPHMF͔Β։͘ํ w )551 4 ͷ63-͔ΒΞϓϦΛ ։͘ w ྫ
w J04 ͔Βར༻Մೳ σΟʔϓϦϯΫͱʁ https://restaurant.ikyu.com/100198/
6OJWFSTBM-JOLT w ଞࣾΞϓϦ͔Β։͘ࡍ)551ϦϯΫΛ։͚ͩ͘ w 4BGBSJͰ։͘ॲཧ࣮͑͞͞Ε͍ͯΕࣗಈతʹ࿈ ܞ͞ΕΔ σΟʔϓϦϯΫͱʁ func openInSafari(url: String)
{ UIApplication.shared.open(URL(string: url)!, options: [ : ], completionHandler: nil) }
Ͳ͕ͬͪσΟʔϓϦϯΫʁ w ݱࡏͰ6OJWFSTBM-JOLTͷํ͕σΟʔϓϦ ϯΫͱͯ͠ೝ͞Ε͍ͩͯ͠ΔΑ͏ʹࢥ͏ʢഽײʣ w ͜͏ݴΘΕͨΒ6OJWFSTBM-JOLTΛΔ͜ͱʹͳΓ ͦ͏ σΟʔϓϦϯΫͱʁ զ͕ࣾσΟʔϓϦϯΫ ʹରԠͤΜͷ͔Ͷ
ͳͥσΟʔϓϦϯΫ͕ ٻΊΒΕΔͷ͔ʁ
8FC͕ڧ͍ձࣾͷ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ Ϣʔβʔ͕(PPHMF͔Βೖͬͯ ͖͙ͯ͢ؼͯ͠͠·͏ʜ ΞϓϦʹ༠ಋ͢Ε ճ༡ͯ͠Β͑Δ͠ ϓογϡ௨ૹΕΔʂ ΞϓϦϦϐʔτߴ͍ Β͍͠͡Όͳ͍͔
ΞϓϦ͕ڧ͍ձࣾͷ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ ΞϓϦͷ৽نΠϯετʔϧ͕ ࠂཔΈͰʜ 4&0Ͱू٬Ͱ͖ΕࣗࣾͰίϯτϩʔϧͰ ͖Δྲྀೖνϟωϧ͕૿͑Δʂ (PPHMFʹίϯτϩʔϧ͞ΕΔ νϟωϧͰ͋ΔΜ͕ͩʜ
എܠͷ·ͱΊ w ΞϓϦͷू٬νϟωϧͱͯ͠8FCΛ͏ྲྀΕ͕ ҰൠԽ͖ͯͨ͠ w 8FCϑΝʔετͷձࣾ8FC͔ΒΞϓϦʹ༠ಋ͠ ͍ͨ w ΞϓϦϑΝʔετͷձࣾ4&0Ͱू٬͍ͨ͠ w
ΞϓϦͷͨΊʹ8FCΛ͕ΜΔ࣌ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ
σΟʔϓϦϯΫͷ ઃܭͱ࣮
σΟʔϓϦϯΫ࣮ͷॱ൪ w ݸਓతͳ͓͢͢Ίॱ w ·ͣ63-εΩʔϜ w ࣍ʹ6OJWFSTBM-JOLT
σΟʔϓϦϯΫ࣮ͷॱ൪ w ྆ํͱ63-ˠΞϓϦը໘ͷϚοϐϯάΛ ઃܭɾ࣮͢Δඞཁ͕͋Δ w 63-εΩʔϜσόΠεͰ݁͢ΔͷͰݕূָ͕ w 63-εΩʔϜˠ6OJWFSTBM-JOLTͷม؆୯
URLεΩʔϜͷઃܭͱ࣮
ΞϓϦͷ63-ઃܭ w ͦͦΞϓϦʹ63-ͷ֓೦ͳ͍ w ͔͠͠σΟʔϓϦϯΫ࣮ݱͷͨΊʹը໘ʹ63-Λ ׂΓৼΔඞཁ͕ग़ͯ͘Δ w ˠ63-ઃܭ͕ඞཁ 63-εΩʔϜઃܭͱ࣮
ΞϓϦͷ63-ઃܭ w ࢲݟͰ8FCͷ63-ʹἧ͑Δͷ͕ྑ͍ͱࢥ͏ w 8FC63-ˠΞϓϦ63-ͷϚοϐϯάΛߟ͑Δख ͕ؒল͚Δ w શʹಉ͡ʹἧ͑ΒΕͳ͍έʔεଟʑ͋Δ͕ɺ جຊ͜ͷํͰ w
8FC͕3&45GVMͳ63-ʹͳ͍ͬͯΕ˕ 63-εΩʔϜઃܭͱ࣮
ҰٳϨετϥϯͷ63-εΩʔϜ w Ϩετϥϯϖʔδ w ϓϥϯϖʔδ 63-εΩʔϜઃܭͱ࣮ rsikyu://restaurant.ikyu.com/:restaurant_id/plan:plan_id rsikyu://restaurant.ikyu.com/:restaurant_id rsikyu://restaurant.ikyu.com/105756 ྫ:
rsikyu://restaurant.ikyu.com/105756/plan10458040/ https://restaurant.ikyu.com/105756 Web: rhttps://restaurant.ikyu.com/105756/plan10458040/ ྫ: Web:
ҰٳϨετϥϯͷ63-εΩʔϜ w ݕࡧϖʔδ w 8FCͷݕࡧͷ༷ʹ͕Μͬͯ߹Θ͍ͤͯΔ 63-εΩʔϜઃܭͱ࣮ rsikyu://restaurant.ikyu.com/search rsikyu://restaurant.ikyu.com/search? said=1000&rtpc=20000&rtpc=20007&rtpc=20008&rtpc=20999&rtpc=10999 ྫ:
https://restaurant.ikyu.com/rsMain/rsSrchPlan.asp? said=1000&rtpc=20000&rtpc=20007&rtpc=20008&rtpc=20999&rtpc=10999 Web:
࣮ w ۪ʹ"QQ%FMFHBUFΛ࣮͢ΔͱذͩΒ͚ʹ 63-εΩʔϜઃܭͱ࣮ func application(_ app: UIApplication, open url:
URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { guard let scheme = url.scheme else { return false } switch scheme { case "rsikyu": switch url.path { case "/reserve": return true case "/login": return true default: return false } default: return false } }
63-ϧʔλʔ͏ͱָ w 63-ͷύʔεͱը໘ͷݺͼग़͠ϧʔλʔʹͤΔ w ΫΤϦͷύʔεͱ͔ຯʹ໘ w ҰٳͰ%FFQ-JOL,JUΛ࠾༻ 63-εΩʔϜઃܭͱ࣮ func application(_
app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return Router().handle(url, withCompletion: nil) } router["/:restaurant_id([0-9]{6})"] = { (deepLink: DPLDeepLink?) in ... } pathఆٛ ݺͼग़͠
63-ΞϓϦͰศར w ϓογϡ௨͔Β։͘ը໘Λࢦఆ͢Δ 63-εΩʔϜઃܭͱ࣮ { aps: … url: rsikyu://…/1234 }
APNS Payload
63-ΞϓϦͰศར w ΞϓϦ8FC7JFX͔Β։͘ը໘Λࢦఆ͢Δ 63-εΩʔϜઃܭͱ࣮ <a href=“rsikyu://…/ 1234”>…</a> WebViewͷ ϦϯΫ
URLεΩʔϜ࣮࣌ͷ ͓ΈϙΠϯτ
ը໘ΛͲͷλϒ͔Β։͔͘ 63-εΩʔϜ͓ΈϙΠϯτ ͜ͷαΠτ͔Β ͜ͷը໘Λ ͲͷλϒͰ։͘ʁ
ը໘ΛͲͷλϒ͔Β։͔͘ w ϞʔμϧͰ։͘ͱָ͚ͩͲʜ w ίϯςΩετ͕࿈ଓ͡Όͳ͘ͳΔײ w ී௨ʹΞϓϦͰ౸ୡ͢Δͷͱಉ͡λϒΛ͏ w ෳͷܦ࿏Ͱ౸ୡͰ͖Δ߹ʁˠ͍͍ײ͡ʹʜ 63-εΩʔϜ͓ΈϙΠϯτ
υϦϧμϯͷ࠶ݱ w ֊͕ؔ͋ΔߏΛ࠶ݱ͢Δඞཁ͕͋Δ 63-εΩʔϜ͓ΈϙΠϯτ
SafariͰϓϥϯͷҰཡ ʹΔಋઢ͕͋Δ͕… ΞϓϦͰಉ͡ը໘Λ։͘ͱ τοϓʹ͔͠Εͳͯ͘ϓ ϥϯ͕ม͑ΒΕͳ͍ʂ
υϦϧμϯͷ࠶ݱ w ҰͭલͷҰཡը໘·Ͱ6*/BWJHBUJPO$POUSPMMFSʹ QVTI͓ͯ͘͠ 63-εΩʔϜ͓ΈϙΠϯτ ϓϥϯ͕બΔ
શը໘ରԠ͢Δඞཁ͋Δʁ w શը໘ʹ63-εΩʔϜׂΓৼΔͷ͠ΜͲ͍ w ҰٳϨετϥϯͰ·ͩը໘ͷΈͷରԠ w 8FCϖʔδͷ17Ͱஅ w (PPHMF͔Βͷྲྀೖ͕ଟ͍ϖʔδʢʹରԠͨ͠ ը໘ʣ
w Ϣʔβʔ͕Α͘͏ϖʔδʢʹରԠͨ͠ը໘ʣ 63-εΩʔϜ͓ΈϙΠϯτ
URLεΩʔϜઃܭʹ͍ͭͯͷ ݸਓతͳ͝ఏҊ
ݸਓతʹͯ͠Δ͜ͱ w Α͋͘Δ63-εΩʔϜ 63-εΩʔϜ͝ఏҊ myapp://search myapp://item?id=123456 ͜͜hostͰʁ
ը໘IPTUʁ w 63-εΩʔϜͷ͍ํಠࣗʹܾΊΒΕΔͷͰ͜͜ ΛIPTUͱఆٛ͠ͳ͍͍ͯ͘ͷ͕ͩʜ w ͔͠͠ΞϓϦΛ8FCαΠτͷࣸ૾ͱߟ͑ΔͳΒɺ IUUQεΩʔϜʹ͕͓ͨͬͯ͘͠ํ͕ແͰͳ͍͔ 63-εΩʔϜ͝ఏҊ <scheme>:<scheme-specific-part>
ҰൠతͳεΩʔϜͷߏจ: <scheme>://<user>:<password>@<host>:<port>/<url-path> ҰൠతͳΠϯλʔωοτεΩʔϜͷߏจ:
ͱΓ͋͑ͣIPTUΛೖΕͯΈΔ w IPTUҎ͕߱QBUIʹͳΔ w ը໘QBUIͷ͕ೲಘ͘͢͠ͳ͍ʁ w ͕ࣗݸਓతʹओுͯ͠Δ͚ͩͰɺҰൠత͔Θ͔ Βͳ͍ 63-εΩʔϜ͝ఏҊ rsikyu://restaurant.ikyu.com/search
ԿͰ͍͍͚ͲͱΓ͋͑ͣ αʔϏεͷυϝΠϯೖΕͨ
IPTUলུܥ͋Δ͕ʜ w ͓͏ͱͯ͠໎Λ͔͚ͨ͜ͱ͕ʜ w ύʔαʔ͕αϙʔτ͍ͯ͠ͳ͍߹͕͋ΔͷͰࢭΊ ͨํ͕ແ w ݟ׳Εͳ͍ܗࣜͳͷͰΈΜͳࠞཚ 63-εΩʔϜ͝ఏҊ rsikyu:/search
rsikyu:///search
IPTUΛೖΕΔϝϦοτ w "OESPJEͱڞ௨Խ͢Δͷָ͕ w "OESPJEͰIPTUͱQBUIΛ۠ผͯ͠ઃఆ͢Δ w "OESPJEΤϯδχΞ͕ී௨ʹ63-ઃܭ͢Δͱɺύε Ͱը໘ذ͢ΔΑ͏ʹ࡞Δʢͱࢥ͏ʣ 63-εΩʔϜ͝ఏҊ Android
Manifest.xml <intent-filter> … <data android:scheme=“rsikyu" android:host="restaurant.ikyu.com" android:pathPrefix=“/search" /> </intent-filter>
͏IPTUը໘Ͱӡ༻ͯ͠ΔΘʜ w ࠔΒͳ͍͚Ͳɺ͠ͳ͍͔͢Ͷ w ͓ͦΒ͘04ຖʹผʑʹઃܭͯ͠63-͕౷ҰͰ͖ͳ ͘ͳͬͨαʔϏεଟ͍ͣ 63-εΩʔϜ͝ఏҊ
ͪͳΈʹʜ(PPHMF.BQͷεΩʔϜ w TDIFNFҎ߱શ෦ΫΤϦʂ 63-εΩʔϜ͝ఏҊ comgooglemaps://?parameters
Universal Linksͷ ઃܭͱ࣮
BQQMFBQQTJUFBTTPDJBUJPOϑΝΠϧ w αΠτͷτοϓԼʹஔ͘ 6OJWFSTBM-JOLTઃܭͱ࣮ https://restaurant.ikyu.com/apple-app-site-association { "applinks": { "app": [],
"details": [ { "appID": "53M4W6LWLM.com.ikyu.restaurant", "paths": [ "NOT /rsCosite.asp", "NOT /mdr.asp", "/rsSd/1?????/amp/", "/rsSd/1?????/amp/*", "/1?????/plan????????/", "/1?????/", "/rsSd/main/script/restU.asp", "/rsSd/main/script/planU.asp", "/rsSd/", "/" ] } ] } } ͙͙Εग़ͯ͘ΔͷͰखʹ…
BQQMFBQQTJUFBTTPDJBUJPOϑΝΠϧ w ଞࣾͷϑΝΠϧΛࢀߟʹ͢Δ w ΈΜͳΞΫηεՄೳͳͱ͜Ζʹஔ͍͍ͯΔͷͰ 6OJWFSTBM-JOLTઃܭͱ࣮ https://instagram.com/apple-app-site-association { "webcredentials": {
"apps": [ "777W53UFB2.com.burbn.instagram", "MH9GU9K5PX.com.burbn.instagram", "T84QZS65DQID.com.facebook.Instagram", "3NW3KR6Q88.com.facebook.Instagram", "3NW3KR6Q88.com.facebook.InstagramInHouse" ] }, "applinks": { "apps": [], "details": [ { "appID": "777W53UFB2.com.burbn.instagram", "paths": [ "NOT /about/*", "NOT /about", "NOT /developer/*", "NOT /developer",
FOUJUMFNFOUT 6OJWFSTBM-JOLTઃܭͱ࣮
"QQ%FMFHBUF w 63-εΩʔϜ͕࣮ࡁΈͩͱָ 6OJWFSTBM-JOLTઃܭͱ࣮ func application(_ application: UIApplication, continue userActivity:
NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { if userActivity.activityType == NSUserActivityTypeBrowsingWeb { if let webpageURL = userActivity.webpageURL { // URLεΩʔϜʹมͯ͠ىಈ let urlScheme = URLSchemeConverter.convertUniversalLinks(url: webpageURL) return Router().handle(url: urlScheme) } } return false }
63-εΩʔϜʹม͢Δॲཧ 6OJWFSTBM-JOLTઃܭͱ࣮ static func convertUniversalLinks(url: URL) -> URL { let
baseURL = "rsikyu://restaurant.ikyu.com/" let query = url.query ?? "" let restaurantId = url.queryStrings["rstId"] ?? "" let planNo = url.queryStrings["planNo"] ?? "" switch url.path { case “/rsSd/main/script/restU.asp”: // URLεΩʔϜͱpath͕Ұக͍ͯ͠ͳ͍ͷखಈม return URL(string: "\(baseURL)\(restaurantId)?\(query)") ?? url case "/rsSd/main/script/planU.asp": return URL(string: "\(baseURL)\(restaurantId)/plan\(planNo)") ?? url case "/rsSd/": return URL(string: "\(baseURL)") ?? url case "/rsMain/rsSrchPlan.asp", "/rsSd/main/script/srchLstU.asp", "/rsSd/main/script/srchRestLstU.asp": return URL(string: "\(baseURL)search?\(query)") ?? url case nil: return URL(string: "\(baseURL)")! default: return URL(string: "\(baseURL)\(url.path)") ?? url } }
Universal Linksͷ Ϣʔβʔମݧ
6OJWFSTBM-JOLTؾ࣋ͪѱ͍ʁ w ͋͘·Ͱݸਓతͳײ֮Ͱ͕͢ʜ w 4BGBSJˠΞϓϦҧײΛײ͡ ͍͢ w 8FCϖʔδͷભҠΛظͯ͠ Δ͔Β 6OJWFSTBM-JOLTϢʔβʔମݧ
6OJWFSTBM-JOLTؾ࣋ͪѱ͍ʁ w ϝʔϧଞࣾΞϓϦˠΞϓϦ ͋·ΓҧײΛײ͡ͳ͍ 6OJWFSTBM-JOLTϢʔβʔମݧ
6OJWFSTBM-JOLTؾ࣋ͪѱ͍ʁ w ؾ࣋ͪѱ͍ͱײ͡Δਓଟ͍ͱࢥΘΕΔ w ࣗ࠷ॳҧײ͕͋ͬͨ w ͔͠͠׳Εͷେ͖͍ w ଟ͘ͷΞϓϦ͕࣮ͯ͠Ұൠతʹͳ͖ͬͯͨࠓɺ ΈΜͳ݁ߏ׳Ε͍ͯΔΜ͡Όͳ͍ʁ
6OJWFSTBM-JOLTϢʔβʔମݧ
ΦϯΦϑ w 6OJWFSTBM-JOLTϢʔβʔ͕ ΦϯΦϑͰ͖Δͷ͕ͩʜ w ӈ্ʹग़ΔυϝΠϯΛλοϓ ͢ΔͱΦϑʹͳΔ w ҟৗʹΘ͔Γʹ͍͘ w
ͦͯ͠J04͔Β͜ͷಋઢ ͳ͘ͳΔ 6OJWFSTBM-JOLTϢʔβʔମݧ
ΦϯΦϑ w ϒϥβͰϦϯΫΛԡ͠ w ʮ։͘ʯΛબͿͱΦϑʹ w ͬͪ͜Θ͔ΒΜ w J04Ͱ͚ͬͪͩ͜Δ 6OJWFSTBM-JOLTϢʔβʔମݧ
ະΠϯετʔϧ࣌ͷ"QQ4UPSF༠ಋ w ϒϥβ͔ΒΞϓϦ͕ೖ͍ͬͯΔ͔Λݕ͢Δ͜ͱ جຊతʹͰ͖ͳ͍ w ੲ+BWB4DSJQUͰϋοΫ͍͕ͯͨ͠ʜ w J04͔ΒʮΞϓϦΛ։͘ʯμΠΞϩά͕ग़ΔΑ ͏ʹͳͬͯ͑ͳ͘ͳͬͨ 6OJWFSTBM-JOLTϢʔβʔମݧ
ະΠϯετʔϧ࣌ͷ"QQ4UPSF༠ಋ w 6OJWFSTBM-JOLTΛ͏·͘͏ ͱΠϯετʔϧৼΓ͚͕Ͱ ͖Δ w "EKVTUʢΠϯετʔϧτ ϥοΩϯάαʔϏεʣͰ࣮ ͞Ε͍ͯͨ 6OJWFSTBM-JOLTϢʔβʔମݧ
Universal Links ϦμΠϨΫτ όφʔλοϓ Webଆͷඈͼઌ͕AppStoreͷϦμΠϨΫλ ະΠϯετʔϧ Πϯετʔϧ ࡁΈ Universal Links͔Β
ΞϓϦىಈ
Universal Links࣮࣌ͷ ͓ΈϙΠϯτ
8FCଆͷ17ܭଌ͕ڰ͏ w J04͕ϦϯΫΛॻ͖͑ΔͷͰ8FCଆͰݕෆՄ w ΞϓϦଆͰ17ʹܭ্͢ΔΈ͕ඞཁ w ҰٳͰݩ63-ΛΞϓϦଆͰ(PPHMF"OBMZUJDT ʹ্͛ͯ߹ࢉ 6OJWFSTBM-JOLT͓ΈϙΠϯτ
SFGFSSFS͕ͳ͍ dJ04 w ΞϓϦଆͰݩ63-͔͠Θ͔Βͳ͔ͬͨ w ఏܞαΠτ͔Βͷίϯόʔδϣϯ͕ܭଌͰ͖ͳ͍ w J04Ͱղܾ 6OJWFSTBM-JOLT͓ΈϙΠϯτ /*
The URL of the webpage that referred (linked to) webpageURL.*/ @available(iOS 11.0, *) open var referrerURL: URL?
".1ͱͷ݉Ͷ߹͍ w (PPHMFͷݕࡧ݁Ռ͔Β·ͣ".1 ͕։͘ w ".1Ωϟογϡ(PPHMFʹϗε ςΟϯά͞Ε͍ͯΔ w 6OJWFSTBM-JOLT͕ൃಈ͠ͳ͍ w
(PPHMFˠ".1ˠΞϓϦͱ͍͏ભ ҠʹͳΔ w ͪͳΈʹ".1ͷJGSBNFͷϦϯΫ͕6OJWFSTBM -JOLTͰ։͚ΔͷJ04͔Β 6OJWFSTBM-JOLT͓ΈϙΠϯτ
8FCͱΞϓϦͷϏδϡΞϧ౷Ұ w ".1ͷӨڹ͋Γɺ8FCΛݟ͔ͯΒΞϓϦʹೖͬ ͯ͘ΔϢʔβʔ͕ଟ͘ͳΔ w 8FCͱΞϓϦͰϏδϡΞϧͷ͕ࠩେ͖͍ͱϢʔβʔ ͕ڻ͘ 6OJWFSTBM-JOLT͓ΈϙΠϯτ
8FCͱΞϓϦͷϏδϡΞϧ౷Ұ w ҰٳΩʔϙΠϯτͷ౷ҰͰରԠ༧ఆ 6OJWFSTBM-JOLT͓ΈϙΠϯτ
αϒυϝΠϯ w αϒυϝΠϯΛ·͍ͨͰൃಈͯ͠͠·͏ w ϩάΠϯը໘NZJLZVDPN͔Β SFTUBVSBOUJLZVDPNϦμΠϨΫτͰΞϓϦىಈ w υϝΠϯΛ౷Ұ͢Δ͔͠ख͕ͳͦ͞͏ w ϓϩΩγͰϩάΠϯը໘ͷυϝΠϯΛॻ͖͑ͯର
Ԡ༧ఆ 6OJWFSTBM-JOLT͓ΈϙΠϯτ
·ͱΊ
·ͱΊ w σΟʔϓϦϯΫͷৄࡉͱٻΊΒΕ͍ͯΔഎܠΛղઆͨ͠ w 63-εΩʔϜˠ6OJWFSTBM-JOLTͷॱͰ࣮͢Δͷ͕͓ ͢͢Ί w 63-εΩʔϜʹIPTUΛೖΕΔ͝ఏҊ • ࠙ձͰօ͞Μ͕ߟ͑ͨ࠷ڧͷσΟʔϓϦϯΫΛڭ͑ͯ
͍ͩ͘͞ rsikyu://restaurant.ikyu.com/search
w J04ΤϯδχΞ w ϑϩϯτΤϯυΤϯδχΞ w αʔόʔαΠυΤϯδχΞ w σʔλαΠΤϯςΟετ ҰٳਓࡐΛืू͍ͯ͠·͢