Slide 1

Slide 1 text

σΟʔϓϦϯΫͷ
 ઃܭͱ࣮૷ @ninjinkun iOSDC 2017

Slide 2

Slide 2 text

ҰٳϨετϥϯ w ྑ͍͓ళΛ͓ಘʹΦϯϥΠϯͰ ༧໿ w ͥͻσʔτɺՈ଒Ͱͷ৯ࣄɺ
 ઀଴ͳͲʹ͝ར༻͍ͩ͘͞ w ͓खࠒͳ͓ళ΋๛෋Ͱ͢

Slide 3

Slide 3 text

ҰٳϨετϥϯ w ͜ͷΞϓϦΛσΟʔϓϦϯΫ ରԠͨ͠஌ݟΛڞ༗͠·͢

Slide 4

Slide 4 text

ΞδΣϯμ w σΟʔϓϦϯΫͱ͸ʁ w ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ w ઃܭͱ࣮૷ w 63-εΩʔϜ w 6OJWFSTBM-JOLT w ·ͱΊ

Slide 5

Slide 5 text

σΟʔϓϦϯΫͱ͸ʁ

Slide 6

Slide 6 text

·ͣ͸۩ମྫ͔Β

Slide 7

Slide 7 text

ࣗࣾαΠτ͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱ͸ʁ

Slide 8

Slide 8 text

(PPHMF͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱ͸ʁ

Slide 9

Slide 9 text

ϝʔϧ͔ΒΞϓϦΛ։͘ σΟʔϓϦϯΫͱ͸ʁ

Slide 10

Slide 10 text

σΟʔϓϦϯΫ w ֎෦͔ΒΞϓϦͷಛఆͷը໘ʹભҠ͢Δख๏ͷ૯শ w "OESPJE΋แׅ͢ΔͨΊʹੜ·Ε໊ͨশͱࢥΘΕ w J04Ͱͷ࣮૷ํ๏ͱͯ͠͸63-εΩʔϜͱ 6OJWFSTBM-JOLT͕͋Δ σΟʔϓϦϯΫͱ͸ʁ

Slide 11

Slide 11 text

63-εΩʔϜ w ͖ͬ͞ͷόφʔ͔Β։͘ํ w ಠࣗͷ63-εΩʔϜΛఆٛ͢Δ w ྫ w υϝΠϯΛೖΕ͍ͯΔཧ༝͸ޙड़ w J1IPOF04 ೥ ͔Βར ༻Մೳ σΟʔϓϦϯΫͱ͸ʁ rsikyu://restaurant.ikyu.com/100198/

Slide 12

Slide 12 text

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 ) }

Slide 13

Slide 13 text

6OJWFSTBM-JOLT w ͖ͬ͞ͷ(PPHMF͔Β։͘ํ w )551 4 ͷ63-͔ΒΞϓϦΛ ։͘ w ྫ w J04 ೥ ͔Βར༻Մೳ σΟʔϓϦϯΫͱ͸ʁ https://restaurant.ikyu.com/100198/

Slide 14

Slide 14 text

6OJWFSTBM-JOLT w ଞࣾΞϓϦ͔Β։͘ࡍ΋)551ϦϯΫΛ։͚ͩ͘ w 4BGBSJͰ։͘ॲཧ࣮͑͞૷͞Ε͍ͯΕ͹ࣗಈతʹ࿈ ܞ͞ΕΔ σΟʔϓϦϯΫͱ͸ʁ func openInSafari(url: String) { UIApplication.shared.open(URL(string: url)!, options: [ : ], completionHandler: nil) }

Slide 15

Slide 15 text

Ͳ͕ͬͪσΟʔϓϦϯΫʁ w ೥ݱࡏͰ͸6OJWFSTBM-JOLTͷํ͕σΟʔϓϦ ϯΫͱͯ͠ೝ஌͞Ε͍ͩͯ͠ΔΑ͏ʹࢥ͏ʢഽײʣ w ͜͏ݴΘΕͨΒ6OJWFSTBM-JOLTΛ΍Δ͜ͱʹͳΓ ͦ͏ σΟʔϓϦϯΫͱ͸ʁ զ͕ࣾ͸σΟʔϓϦϯΫ ʹରԠͤΜͷ͔Ͷ

Slide 16

Slide 16 text

ͳͥσΟʔϓϦϯΫ͕
 ٻΊΒΕΔͷ͔ʁ

Slide 17

Slide 17 text

8FC͕ڧ͍ձࣾͷ੠ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ Ϣʔβʔ͕(PPHMF͔Βೖͬͯ ͖ͯ΋͙͢௚ؼͯ͠͠·͏ʜ ΞϓϦʹ༠ಋ͢Ε͹
 ճ༡ͯ͠΋Β͑Δ͠
 ϓογϡ௨஌΋ૹΕΔʂ ΞϓϦ͸Ϧϐʔτ཰΋ߴ͍ Β͍͠͡Όͳ͍͔

Slide 18

Slide 18 text

ΞϓϦ͕ڧ͍ձࣾͷ੠ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ ΞϓϦͷ৽نΠϯετʔϧ͕
 ޿ࠂཔΈͰʜ 4&0Ͱू٬Ͱ͖Ε͹ࣗࣾͰίϯτϩʔϧͰ ͖Δྲྀೖνϟωϧ͕૿͑Δʂ (PPHMFʹίϯτϩʔϧ͞ΕΔ
 νϟωϧͰ΋͋ΔΜ͕ͩʜ

Slide 19

Slide 19 text

എܠͷ·ͱΊ w ΞϓϦͷू٬νϟωϧͱͯ͠8FCΛ࢖͏ྲྀΕ͕
 ҰൠԽ͖ͯͨ͠ w 8FCϑΝʔετͷձࣾ͸8FC͔ΒΞϓϦʹ༠ಋ͠ ͍ͨ w ΞϓϦϑΝʔετͷձࣾ͸4&0Ͱू٬͍ͨ͠ w ΞϓϦͷͨΊʹ8FCΛ͕Μ͹Δ࣌୅ ͳͥσΟʔϓϦϯΫ͕ٻΊΒΕΔͷ͔ʁ

Slide 20

Slide 20 text

σΟʔϓϦϯΫͷ
 ઃܭͱ࣮૷

Slide 21

Slide 21 text

σΟʔϓϦϯΫ࣮૷ͷॱ൪ w ݸਓతͳ͓͢͢Ίॱ w ·ͣ63-εΩʔϜ w ࣍ʹ6OJWFSTBM-JOLT

Slide 22

Slide 22 text

σΟʔϓϦϯΫ࣮૷ͷॱ൪ w ྆ํͱ΋63-ˠΞϓϦը໘΁ͷϚοϐϯάΛ
 ઃܭɾ࣮૷͢Δඞཁ͕͋Δ w 63-εΩʔϜ͸σόΠεͰ׬݁͢ΔͷͰݕূָ͕ w 63-εΩʔϜˠ6OJWFSTBM-JOLT΁ͷม׵͸؆୯

Slide 23

Slide 23 text

URLεΩʔϜͷઃܭͱ࣮૷

Slide 24

Slide 24 text

ΞϓϦͷ63-ઃܭ w ͦ΋ͦ΋ΞϓϦʹ63-ͷ֓೦͸ͳ͍ w ͔͠͠σΟʔϓϦϯΫ࣮ݱͷͨΊʹ͸ը໘ʹ63-Λ ׂΓৼΔඞཁ͕ग़ͯ͘Δ w ˠ63-ઃܭ͕ඞཁ 63-εΩʔϜઃܭͱ࣮૷

Slide 25

Slide 25 text

ΞϓϦͷ63-ઃܭ w ࢲݟͰ͸8FCͷ63-ʹἧ͑Δͷ͕ྑ͍ͱࢥ͏ w 8FC63-ˠΞϓϦ63-ͷϚοϐϯάΛߟ͑Δख ͕ؒল͚Δ w ׬શʹಉ͡ʹ͸ἧ͑ΒΕͳ͍έʔε΋ଟʑ͋Δ͕ɺ جຊ͸͜ͷํ਑Ͱ w 8FC͕3&45GVMͳ63-ʹͳ͍ͬͯΕ͹˕ 63-εΩʔϜઃܭͱ࣮૷

Slide 26

Slide 26 text

ҰٳϨετϥϯͷ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:

Slide 27

Slide 27 text

ҰٳϨετϥϯͷ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:

Slide 28

Slide 28 text

࣮૷ 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 } }

Slide 29

Slide 29 text

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ఆٛ ݺͼग़͠

Slide 30

Slide 30 text

63-͸ΞϓϦ಺Ͱ΋ศར w ϓογϡ௨஌͔Β։͘ը໘Λࢦఆ͢Δ 63-εΩʔϜઃܭͱ࣮૷ { aps: … url: rsikyu://…/1234 } APNS Payload

Slide 31

Slide 31 text

63-͸ΞϓϦ಺Ͱ΋ศར w ΞϓϦ಺8FC7JFX͔Β։͘ը໘Λࢦఆ͢Δ 63-εΩʔϜઃܭͱ࣮૷ WebView಺ͷ
 ϦϯΫ

Slide 32

Slide 32 text

URLεΩʔϜ࣮૷࣌ͷ
 ͓೰ΈϙΠϯτ

Slide 33

Slide 33 text

ը໘ΛͲͷλϒ͔Β։͔͘ 63-εΩʔϜ͓೰ΈϙΠϯτ ͜ͷαΠτ͔Β ͜ͷը໘Λ ͲͷλϒͰ։͘ʁ

Slide 34

Slide 34 text

ը໘ΛͲͷλϒ͔Β։͔͘ w ϞʔμϧͰ։͘ͱָ͚ͩͲʜ w ίϯςΩετ͕࿈ଓ͡Όͳ͘ͳΔײ w ී௨ʹΞϓϦ಺Ͱ౸ୡ͢Δͷͱಉ͡λϒΛ࢖͏ w ෳ਺ͷܦ࿏Ͱ౸ୡͰ͖Δ৔߹͸ʁˠ͍͍ײ͡ʹʜ 63-εΩʔϜ͓೰ΈϙΠϯτ

Slide 35

Slide 35 text

υϦϧμ΢ϯͷ࠶ݱ w ֊૚ؔ܎͕͋Δߏ଄Λ࠶ݱ͢Δඞཁ͕͋Δ 63-εΩʔϜ͓೰ΈϙΠϯτ

Slide 36

Slide 36 text

SafariͰ͸ϓϥϯͷҰཡ ʹ໭Δಋઢ͕͋Δ͕… ΞϓϦͰಉ͡ը໘Λ։͘ͱ
 τοϓʹ͔͠໭Εͳͯ͘ϓ ϥϯ͕ม͑ΒΕͳ͍ʂ

Slide 37

Slide 37 text

υϦϧμ΢ϯͷ࠶ݱ w ҰͭલͷҰཡը໘·Ͱ6*/BWJHBUJPO$POUSPMMFSʹ QVTI͓ͯ͘͠ 63-εΩʔϜ͓೰ΈϙΠϯτ ϓϥϯ͕બ΂Δ

Slide 38

Slide 38 text

શը໘ରԠ͢Δඞཁ͋Δʁ w શը໘ʹ63-εΩʔϜׂΓৼΔͷ͸͠ΜͲ͍ w ҰٳϨετϥϯͰ͸·ͩը໘ͷΈͷରԠ w 8FCϖʔδͷ17Ͱ൑அ w (PPHMF͔Βͷྲྀೖ͕ଟ͍ϖʔδʢʹରԠͨ͠ ը໘ʣ w Ϣʔβʔ͕Α͘࢖͏ϖʔδʢʹରԠͨ͠ը໘ʣ 63-εΩʔϜ͓೰ΈϙΠϯτ

Slide 39

Slide 39 text

URLεΩʔϜઃܭʹ͍ͭͯͷ ݸਓతͳ͝ఏҊ

Slide 40

Slide 40 text

ݸਓతʹ΋΍΋΍ͯ͠Δ͜ͱ w Α͋͘Δ63-εΩʔϜ 63-εΩʔϜ͝ఏҊ myapp://search myapp://item?id=123456 ͜͜͸hostͰ͸ʁ

Slide 41

Slide 41 text

ը໘IPTUʁ w 63-εΩʔϜͷ࢖͍ํ͸ಠࣗʹܾΊΒΕΔͷͰ͜͜ ΛIPTUͱఆٛ͠ͳͯ͘΋͍͍ͷ͕ͩʜ
 
 w ͔͠͠ΞϓϦΛ8FCαΠτͷࣸ૾ͱߟ͑ΔͳΒɺ IUUQεΩʔϜʹ͕͓ͨͬͯ͘͠ํ͕ແ೉Ͱ͸ͳ͍͔ 63-εΩʔϜ͝ఏҊ : ҰൠతͳεΩʔϜͷߏจ: ://:@:/ ҰൠతͳΠϯλʔωοτεΩʔϜͷߏจ:

Slide 42

Slide 42 text

ͱΓ͋͑ͣIPTUΛೖΕͯΈΔ w IPTUҎ͕߱QBUIʹͳΔ w ը໘QBUIͷ͕ೲಘ͠΍͘͢ͳ͍ʁ w ࣗ෼͕ݸਓతʹओுͯ͠Δ͚ͩͰɺҰൠత͔͸Θ͔ Βͳ͍ 63-εΩʔϜ͝ఏҊ rsikyu://restaurant.ikyu.com/search ԿͰ΋͍͍͚ͲͱΓ͋͑ͣ αʔϏεͷυϝΠϯೖΕͨ

Slide 43

Slide 43 text

IPTUলུܥ΋͋Δ͕ʜ w ࢖͓͏ͱͯ͠໎࿭Λ͔͚ͨ͜ͱ͕ʜ w ύʔαʔ͕αϙʔτ͍ͯ͠ͳ͍৔߹͕͋ΔͷͰࢭΊ ͨํ͕ແ೉ w ݟ׳Εͳ͍ܗࣜͳͷͰΈΜͳࠞཚ 63-εΩʔϜ͝ఏҊ rsikyu:/search rsikyu:///search

Slide 44

Slide 44 text

IPTUΛೖΕΔϝϦοτ w "OESPJEͱڞ௨Խ͢Δͷָ͕ w "OESPJEͰ͸IPTUͱQBUIΛ۠ผͯ͠ઃఆ͢Δ w "OESPJEΤϯδχΞ͕ී௨ʹ63-ઃܭ͢Δͱɺύε Ͱը໘෼ذ͢ΔΑ͏ʹ࡞Δʢͱࢥ͏ʣ 63-εΩʔϜ͝ఏҊ Android Manifest.xml …

Slide 45

Slide 45 text

΋͏IPTUը໘Ͱӡ༻ͯ͠ΔΘʜ w ࠔΒͳ͍͚Ͳɺ΋΍΋΍͠ͳ͍͔͢Ͷ w ͓ͦΒ͘04ຖʹผʑʹઃܭͯ͠63-͕౷ҰͰ͖ͳ ͘ͳͬͨαʔϏε͸ଟ͍͸ͣ 63-εΩʔϜ͝ఏҊ

Slide 46

Slide 46 text

ͪͳΈʹʜ(PPHMF.BQͷεΩʔϜ w TDIFNFҎ߱શ෦ΫΤϦʂ 63-εΩʔϜ͝ఏҊ comgooglemaps://?parameters

Slide 47

Slide 47 text

Universal Linksͷ
 ઃܭͱ࣮૷

Slide 48

Slide 48 text

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/", "/" ] } ] } } ͙͙Ε͹ग़ͯ͘ΔͷͰख୹ʹ…

Slide 49

Slide 49 text

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",

Slide 50

Slide 50 text

FOUJUMFNFOUT 6OJWFSTBM-JOLTઃܭͱ࣮૷

Slide 51

Slide 51 text

"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 }

Slide 52

Slide 52 text

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 } }

Slide 53

Slide 53 text

Universal Linksͷ
 Ϣʔβʔମݧ

Slide 54

Slide 54 text

6OJWFSTBM-JOLT͸ؾ࣋ͪѱ͍ʁ w ͋͘·Ͱݸਓతͳײ֮Ͱ͕͢ʜ w 4BGBSJˠΞϓϦ͸ҧ࿨ײΛײ͡ ΍͍͢ w 8FCϖʔδͷભҠΛظ଴ͯ͠ Δ͔Β 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 55

Slide 55 text

6OJWFSTBM-JOLT͸ؾ࣋ͪѱ͍ʁ w ϝʔϧ΍ଞࣾΞϓϦˠΞϓϦ͸ ͋·Γҧ࿨ײΛײ͡ͳ͍ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 56

Slide 56 text

6OJWFSTBM-JOLT͸ؾ࣋ͪѱ͍ʁ w ؾ࣋ͪѱ͍ͱײ͡Δਓ͸ଟ͍ͱࢥΘΕΔ w ࣗ෼΋࠷ॳ͸ҧ࿨ײ͕͋ͬͨ w ͔͠͠׳Εͷ໰୊΋େ͖͍ w ଟ͘ͷΞϓϦ͕࣮૷ͯ͠Ұൠతʹͳ͖ͬͯͨࠓɺ ΈΜͳ݁ߏ׳Ε͍ͯΔΜ͡Όͳ͍ʁ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 57

Slide 57 text

ΦϯΦϑ w 6OJWFSTBM-JOLT͸Ϣʔβʔ͕ ΦϯΦϑͰ͖Δͷ͕ͩʜ w ӈ্ʹग़ΔυϝΠϯΛλοϓ ͢ΔͱΦϑʹͳΔ w ҟৗʹΘ͔Γʹ͍͘ w ͦͯ͠J04͔Β͜ͷಋઢ͸ ͳ͘ͳΔ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 58

Slide 58 text

ΦϯΦϑ w ϒϥ΢βͰϦϯΫΛ௕ԡ͠ w ʮ։͘ʯΛબͿͱΦϑʹ w ͬͪ͜΋Θ͔ΒΜ w J04Ͱ͸͚ͬͪͩ͜࢒Δ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 59

Slide 59 text

ະΠϯετʔϧ࣌ͷ"QQ4UPSF༠ಋ w ϒϥ΢β͔ΒΞϓϦ͕ೖ͍ͬͯΔ͔Λݕ஌͢Δ͜ͱ ͸جຊతʹ͸Ͱ͖ͳ͍ w ੲ͸+BWB4DSJQUͰϋοΫ͍͕ͯͨ͠ʜ w J04͔ΒʮΞϓϦΛ։͘ʯμΠΞϩά͕ग़ΔΑ ͏ʹͳͬͯ࢖͑ͳ͘ͳͬͨ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 60

Slide 60 text

ະΠϯετʔϧ࣌ͷ"QQ4UPSF༠ಋ w 6OJWFSTBM-JOLTΛ͏·͘࢖͏ ͱΠϯετʔϧৼΓ෼͚͕Ͱ ͖Δ w "EKVTUʢΠϯετʔϧτ ϥοΩϯάαʔϏεʣͰ࣮ ૷͞Ε͍ͯͨ 6OJWFSTBM-JOLTϢʔβʔମݧ

Slide 61

Slide 61 text

Universal Links΁ ϦμΠϨΫτ όφʔλοϓ Webଆͷඈͼઌ͕AppStore΁ͷϦμΠϨΫλ ະΠϯετʔϧ Πϯετʔϧ
 ࡁΈ Universal Links͔Β
 ΞϓϦىಈ

Slide 62

Slide 62 text

Universal Links࣮૷࣌ͷ
 ͓೰ΈϙΠϯτ

Slide 63

Slide 63 text

8FCଆͷ17ܭଌ͕ڰ͏ w J04͕ϦϯΫΛॻ͖׵͑ΔͷͰ8FCଆͰݕ஌ෆՄ w ΞϓϦଆͰ17ʹܭ্͢Δ࢓૊Έ͕ඞཁ w ҰٳͰ͸ݩ63-ΛΞϓϦଆͰ(PPHMF"OBMZUJDT ʹ্͛ͯ߹ࢉ 6OJWFSTBM-JOLT͓೰ΈϙΠϯτ

Slide 64

Slide 64 text

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?

Slide 65

Slide 65 text

".1ͱͷ݉Ͷ߹͍ w (PPHMFͷݕࡧ݁Ռ͔Β͸·ͣ".1 ͕։͘ w ".1Ωϟογϡ͸(PPHMFʹϗε ςΟϯά͞Ε͍ͯΔ w 6OJWFSTBM-JOLT͕ൃಈ͠ͳ͍ w (PPHMFˠ".1ˠΞϓϦͱ͍͏ભ ҠʹͳΔ w ͪͳΈʹ".1ͷJGSBNF಺ͷϦϯΫ͕6OJWFSTBM -JOLTͰ։͚Δͷ͸J04͔Β 6OJWFSTBM-JOLT͓೰ΈϙΠϯτ

Slide 66

Slide 66 text

8FCͱΞϓϦͷϏδϡΞϧ౷Ұ w ".1ͷӨڹ΋͋Γɺ8FCΛݟ͔ͯΒΞϓϦʹೖͬ ͯ͘ΔϢʔβʔ͕ଟ͘ͳΔ w 8FCͱΞϓϦͰϏδϡΞϧͷ͕ࠩେ͖͍ͱϢʔβʔ ͕ڻ͘ 6OJWFSTBM-JOLT͓೰ΈϙΠϯτ

Slide 67

Slide 67 text

8FCͱΞϓϦͷϏδϡΞϧ౷Ұ w Ұٳ͸ΩʔϙΠϯτͷ౷ҰͰରԠ༧ఆ 6OJWFSTBM-JOLT͓೰ΈϙΠϯτ

Slide 68

Slide 68 text

αϒυϝΠϯ໰୊ w αϒυϝΠϯΛ·͍ͨͰ΋ൃಈͯ͠͠·͏ w ϩάΠϯը໘NZJLZVDPN͔Β SFTUBVSBOUJLZVDPN΁ϦμΠϨΫτͰΞϓϦىಈ w υϝΠϯΛ౷Ұ͢Δ͔͠ख͕ͳͦ͞͏ w ϓϩΩγͰϩάΠϯը໘ͷυϝΠϯΛॻ͖׵͑ͯର Ԡ༧ఆ 6OJWFSTBM-JOLT͓೰ΈϙΠϯτ

Slide 69

Slide 69 text

·ͱΊ

Slide 70

Slide 70 text

·ͱΊ w σΟʔϓϦϯΫͷৄࡉͱٻΊΒΕ͍ͯΔഎܠΛղઆͨ͠ w 63-εΩʔϜˠ6OJWFSTBM-JOLTͷॱͰ࣮૷͢Δͷ͕͓ ͢͢Ί w 63-εΩʔϜʹIPTUΛೖΕΔ͝ఏҊ • ࠙਌ձͰօ͞Μ͕ߟ͑ͨ࠷ڧͷσΟʔϓϦϯΫΛڭ͑ͯ ͍ͩ͘͞ rsikyu://restaurant.ikyu.com/search

Slide 71

Slide 71 text

w J04ΤϯδχΞ w ϑϩϯτΤϯυΤϯδχΞ w αʔόʔαΠυΤϯδχΞ w σʔλαΠΤϯςΟετ Ұٳ͸ਓࡐΛืू͍ͯ͠·͢