Slide 1

Slide 1 text

WKWebViewͷ͓࿩ ୈ74ճ Cocoaษڧձؔ੢ 2017/08/26 େౡ ޫو@sbntaminif

Slide 2

Slide 2 text

ࣗݾ঺հ • ΢ΣϒϦΦגࣜձࣾWEBΤϯδχΞ • ΞϓϦΤϯδχΞ
 ʢࣗশʣ • ීஈ͸ژ౎Ͱಇ͍͍ͯ·͢

Slide 3

Slide 3 text

WKWebViewͱ͸

Slide 4

Slide 4 text

WKWebViewͱ͸ • ΢ΣϒίϯςϯπΛදࣔ͢ΔΦϒδΣΫτ • MacOS10.10/iOS8.0͔Β࢖༻Մೳ • ಛఆͷ΢ΣϒαΠτΛಡΈࠐΉΑ͏ͳΞϓ ϦͳΜ͔͸·ͣ͜ΕΛ࢖͏ͱࢥ͍·͢ɻ

Slide 5

Slide 5 text

ಛʹWEBΤϯδχΞʹ ೃછΈͷ͋ΔViewͩͱ ࢥ͍·͢

Slide 6

Slide 6 text

UIWebView͔Β มΘΔ΋ͷͰ͢

Slide 7

Slide 7 text

มΘΔͱ͸ʁ • iOS8.0·Ͱ͸΢ΣϒίϯςϯπΛදࣔ͢ ΔViewʹUIWebViewͱ͍͏΋ͷ͕͋ͬͨ ͕ɺެࣜͷυΩϡϝϯτʹWKWebViewΛ ࢖༻͢ΔΑ͏هࡌ͕͋Δ • ࠓճ͸UIWebViewͱͷൺֱΛ͢ΔΘ͚Ͱ ͸͍͟͝·ͤΜ

Slide 8

Slide 8 text

WKWebViewͷ ਪ͠ϙΠϯτ

Slide 9

Slide 9 text

ͦͷ1 ᙱ͍ॴʹख͕ಧ͘ ૢ࡞

Slide 10

Slide 10 text

ᙱ͍ॴʹख͕ಧ͘ • ϩʔυͷ։࢝/ऴྃɺϖʔδͷਐΉ/໭Δͷ ૢ࡞͕ίʔυ্Ͱૢ࡞Մೳ • ಡΈࠐΈঢ়گ΍ϖʔδભҠϦετͷऔಘ͕ Մೳ • DelegateΛηοτ͢Δ͜ͱͰૢ࡞࣌ʹॲ ཧΛηοτՄೳ

Slide 11

Slide 11 text

ೋͭͷDelegate • WKUIDelegate • WKWebViewΛ࡞੒/ऴྃͨ͠λΠϛϯ ά΍ɺAlert౳ͷUIܥͷૢ࡞Λ୲౰ • WKNavigationDelegate • ΢ΣϒίϯςϯπͷಡΈࠐΈ࣌ͷૢ࡞Λ ୲౰

Slide 12

Slide 12 text

ಛʹਪ͠ͳͷ͕ WKNavigationDelegate

Slide 13

Slide 13 text

ਤͰઆ໌

Slide 14

Slide 14 text

ϒϥ΢βʹΑΔHTTP௨৴ ϒϥ΢β αʔόʔ ϦΫΤετ Ϩεϙϯε ϦΫΤετϔομʔ ϦΫΤετϘσΟ Ϩεϙϯεϔομʔ ϨεϙϯεϘσΟ

Slide 15

Slide 15 text

WKWebViewʹΑΔHTTP௨৴ ϒϥ΢β αʔόʔ ϦΫΤετ Ϩεϙϯε EFDJEF1PMJDZ'PS OBWJHBUJPO"DUJPO EJE4UBSU1SPWJTJPOBM/BWJHBUJPO ϦμΠϨΫτ࣌͸͜͜Ͱ໭Δ EJE3FDFJWF4FSWFS3FEJSFDU'PS1SPWJTJPOBM/BWJHBUJPO ϦμΠϨΫτ࣌ͷΈ EJE'BJM1SPWJTJPOBM/BWJHBUJPO Τϥʔൃੜ࣌ͷΈ EFDJEF1PMJDZ'PS OBWJHBUJPO3FTQPOTF EJE$PNNJU EJE'JOJTI EJE3FDFJWF શͯ8,/BWJHBUJPO%FMFHBUFͷؔ਺

Slide 16

Slide 16 text

WKWebViewʹΑΔHTTP௨৴ ϒϥ΢β αʔόʔ ϦΫΤετ Ϩεϙϯε EFDJEF1PMJDZ'PS OBWJHBUJPO"DUJPO EFDJEF1PMJDZ'PS OBWJHBUJPO3FTQPOTF EFDJEF1PMJDZ'PSͰ ಡΈࠐΈΛڐՄ͢Δ͔Ωϟϯηϧ͢Δ͔Λ ઃఆͰ͖Δ ϦΫΤετͩͱVSM΍ϑΥʔϜૹ৴ ϨεϙϯεͩͱϨεϙϯείʔυ΍.*.&λΠϓ Ͱ൑ఆͰ͖Δ

Slide 17

Slide 17 text

ͦͷ2 JavaScriptͷ࣮ߦ

Slide 18

Slide 18 text

JavaScriptͷ࣮ߦ • ಡΈࠐΜͩ΢Σϒίϯςϯπʹରͯ͠
 ೚ҙͷJavaScriptΛ࣮ߦͰ͖Δ • ElementΛऔಘ͠ɺσʔλΛSwiftଆͰ࢖༻ ͢Δ͜ͱ͕Ͱ͖Δ

Slide 19

Slide 19 text

JavaScriptͷ࣮ߦλΠϛϯ ά͸ೋछྨ͋Γ·͢

Slide 20

Slide 20 text

ೋछྨͷ࣮ߦλΠϛϯά • WKWebViewੜ੒ޙɺWKWebView͕࣋ͭ evaluateJavaScriptͱ͍͏ؔ਺ • WKWebViewConfigurationΛੜ੒͠ɺͦ ͜ʹJavaScriptΛηοτͯ͠WKWebView ͷੜ੒ʹ࢖༻͢Δ͜ͱͰಡΈࠐΈ࣌ʢલ/ ޙʣʹ࣮ߦ

Slide 21

Slide 21 text

(JavaScriptͰ͕͢) WEBεΫϨΠϐϯά Έ͍ͨͳ͜ͱ΋ՄೳͰ͢

Slide 22

Slide 22 text

ͦͷ3 ಡΈࠐΜͩϦιʔεͷ දࣔ

Slide 23

Slide 23 text

΢ΣϒίϯςϯπΛදࣔ͢Δ ViewͳͷͰɺ΢ΣϒϖʔδΛ ಡΈࠐΉͷ͸౰વͰ͕͢

Slide 24

Slide 24 text

ϩʔΧϧʹ഑ஔͨ͠HTMLΛ ಡΈࠐΈɺදࣔͤ͞Δ͜ͱ΋ ՄೳͰ͢

Slide 25

Slide 25 text

ϩʔΧϧϑΝΠϧΛಡΈࠐΉ let termsOfUsePath = Bundle.main.path(forResource: "privacyPolicy.html", ofType: nil)! let termsOfUseHtmlData = try! Data(contentsOf: URL(fileURLWithPath: termsOfUsePath)) termsOfUseHtml = String(data: termsOfUseHtmlData, encoding: String.Encoding.utf8) webView.loadHTMLString(termsOfUseHtml, baseURL: URL(string: TermsOfUseViewController.TERMS_OF_USE_URL)!) #VOEMFͰಡΈग़ͨ͠จࣈྻ Λ8,8FC7JFXʹϩʔυ

Slide 26

Slide 26 text

WKWebViewͷ ࢒೦ϙΠϯτ

Slide 27

Slide 27 text

ͦͷ1 StoryboardະରԠ

Slide 28

Slide 28 text

StoryboardະରԠ • UIWebView͕࢒͍ͬͯΔͨΊ͔ɺ StoryboardͰWKWebViewΛ഑ஔ͢Δ͜ ͱ͕Ͱ͖·ͤΜɻ

Slide 29

Slide 29 text

શͯίʔυͰରԠ͢Δ ඞཁ͕͋Δͷ͸ ͪΐͬͱෆศͰ͢

Slide 30

Slide 30 text

ͩͬͨͷͰ͕͢ɻɻ

Slide 31

Slide 31 text

ͦͷ2 WebRTCʹରԠ͍ͯ͠ͳ͍ (?)

Slide 32

Slide 32 text

WebRTCͱ͸ • W3C͕ఏএ͢ΔP2PϦΞϧλΠϜίϛϡχ έʔγϣϯΛ࣮ݱ͢Δٕज़ • ϓϥάΠϯͳ͠Ͱϒϥ΢βؒͷ΍ΓͱΓ͕Մ ೳ • ςΩετ΍όΠφϦͳͲͷσʔλܗࣜ΍ө૾ ΍Ի੠ͳͲͷStreamܗࣜͷ΍ΓͱΓ͕Մೳ

Slide 33

Slide 33 text

ͦ΋ͦ΋iOSʹ ରԠ͍ͯ͠Δͷ?

Slide 34

Slide 34 text

ݱ࣌఺Ͱ͸ରԠ͍ͯ͠·ͤΜ • Chrome΍FireFoxͳͲChroniumϕʔεͷϒϥ ΢βͰ͔࣮͠૷͞Ε͍ͯ·ͤΜͰͨ͠ɻ • iOS͸WebKitϕʔεͳͷͰະରԠͰ͕͢ɻɻ • iOS11ͰSafariʹ࣮૷͞ΕΔ͜ͱ͕༧ఆ͞Εͯ ͍·͢ʂ

Slide 35

Slide 35 text

Կ͕ඞཁͳͷ͔

Slide 36

Slide 36 text

σόΠεʹΞΫηε͢ΔͨΊͷ API(getUserMedia)͕ϒϥ΢βʹ ࣮૷͞Ε͍ͯΔඞཁ͕͋Δ • ֎෦σόΠεʢΧϝϥ/ϚΠΫʣΛ࢖༻͢Δڐ ՄΛϒϥ΢β͕͍࣋ͬͯΔ͔֬ೝ͠ɺͦͷ StreamΛऔಘͯ͠ฦ͠·͢ɻ • Safariʹ΋࣮૷͞ΕΔ͜ͱͰɺWebRTCʹରԠ ͠·͢ɻʢ஫ɿ͜Ε͚ͩඞཁͱ͍͏͜ͱͰ͸ ͳ͍Ͱ͢ʣ

Slide 37

Slide 37 text

ͨͩ͠ɺ࢒೦ͳ͕Β

Slide 38

Slide 38 text

WKWebViewͰ͸ ରԠ͞Εͳ͍Έ͍ͨͰ͢ • ͢ͰʹBeta൛Ͱࢼ͞Εͨํ͕͍Βͬ͠Ό͍· ͨ͠ https://stackoverflow.com/questions/45055329/ does-webkit-in-ios-11-beta-support-webrtc

Slide 39

Slide 39 text

·ͩBeta൛ͳͷͰਖ਼ࣜʹ͸ Θ͔Γ·ͤΜ͕ɺରԠ͞Ε Δ͜ͱΛظ଴͍ͨ͠Ͱ͢

Slide 40

Slide 40 text

·ͱΊ

Slide 41

Slide 41 text

·ͱΊ WKWebView௒ศརʂʂ ͩͱࢥ͍·͢ɻɻ

Slide 42

Slide 42 text

࠷ޙʹએ఻Ͱ͢ iOSDC 2017ʹొஃ͠·͢ʂ • ʮӳձ࿩αʔϏεͷͨΊʹ࡞੒ͨ͠ϏσΦ νϟοτΞϓϦͷٕज़ʯͱ͍͏ςʔϚͰ࠾ ୒͞Ε·ͨ͠ʂ • ΞϓϦͰWebRTCΛ࢖༻ͯ͠ϏσΦ௨࿩Λ ࣮૷ͨ͠࿩΍ɺFirebaseͰνϟοτΛ࣮૷ ͨ͠࿩ͱӡ༻Ͱͷ஌ݟΛ͓࿩͢͠Δ༧ఆͰ ͢ʂ

Slide 43

Slide 43 text

ͥͻདྷ͍ͯͩ͘͞ʂ

Slide 44

Slide 44 text

͋Γ͕ͱ͏͍͟͝·ͨ͠