Slide 1

Slide 1 text

ϦϑΝϨϯε͔ΒಡΈղ͘ WebKit.framework @yashigani
 Cocoaษڧձؔ੢ #56

Slide 2

Slide 2 text

@yashigani

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

–Mattt Thompson “UIWebView is dead. Long live WKWebView.”

Slide 7

Slide 7 text

WKWebView is Կʁ

Slide 8

Slide 8 text

WKWebViewͷਖ਼ମ • Safari/Mobile Safariͱಉ͡΋ͷ͕࢖͑Δ • ϞμϯͳΠϯλʔϑΣʔε • WebKit 2 APIϕʔε • ࣮͸UIWebView΍WebView͸ҧ͏API

Slide 9

Slide 9 text

WebKit 2 API • ϚϧνϓϩηεʹରԠͨ͠API • WebKit 1ͱ͸ඇޓ׵ • Safari 5.1(07/2011)~

Slide 10

Slide 10 text

࣮͸͜ͳ͍ͩൃදͨ͠ • @kyoto.ͳΜ͔ • WebKit 2 API͸CϕʔεͰʙͬͯ࿩΋ͨ͠ • ՈؼͬͯϦϙδτϦݟͨΒͦΜͳ͜ͱͳͯ͘ ݁ߏͪΌΜͱͯͨ͠ • #expectWWDC

Slide 11

Slide 11 text

ΊͰ͍ͨʂ

Slide 12

Slide 12 text

WKWebView • iOS/OS XͰڞ௨ • ϞμϯͳΠϯλʔϑΣʔε • property/delegate • Ϛϧνϓϩηε

Slide 13

Slide 13 text

ߏ੒ • WKWebView • WKUIDelegate • WKNavigationDelegate • WKWebViewConfiguration • WKPreferences • WKUserContentController

Slide 14

Slide 14 text

WKWebView • Built-in Gesture • KVO compliant • title/URL/loading/estimatedProgress… • backForwardList • WKUIDelegate/WKNavigationDelegate

Slide 15

Slide 15 text

WKUIDelegate • alert()ͷॲཧΛࣗલͰ • ࣗ෼Ͱॲཧͯ͠ɼcompletionHandlerΛݺͿ

Slide 16

Slide 16 text

WKNavigationDelegate • shouldStart…/didFinish… • UIDelegateͱಉ༷ʹdecisionHandlerͰॲཧ • ϩʔυͷਐḿΛࡉ͔͘औಘͰ͖Δ

Slide 17

Slide 17 text

WKWebViewConfiguration • WKPreferences/WKProcessPool/ WKUserContentController • WKWebViewΛॳظԽ͢Δͱ͖ʹ౉͢ • ෳ਺WKWebViewΛ࡞Δͱ͖ʹڞ༗Ͱ͖Δ

Slide 18

Slide 18 text

WKPreferences • JavaScriptͷΦϯΦϑ • ϑΥϯταΠζ • ಈը࠶ੜΛΠϯϥΠϯͰ • ઃఆ͸User Defaultsʹอଘ͞ΕΔ

Slide 19

Slide 19 text

WKUserContentController • ϩʔυ͢ΔUser Scriptͷ௥Ճ/࡟আ • User ScriptͷHandlerΛొ࿥ • User Script͔ΒϝοηʔδΛૹΕΔ

Slide 20

Slide 20 text

σϝϦοτ

Slide 21

Slide 21 text

stringByEvaluatingJavaScriptFromString: ͕ແ͍

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

͡Ό͋Ͳ͏͠Ζͱ • User ScriptͰͳΜͱ͔͠Ζͱ͍͏͜ͱʁ • Easy app-webpage communication • ΋ͪΖΜΦʔϓϯͳ࣮૷ʹ͸͋Δ • evaluateJavaSctipt:completionHandler: • ৭ʑࢼ͚ͨ͠Ͳ… #࡯͍ͯͩ͘͠͞

Slide 24

Slide 24 text

OS X͔Β͢Δͱ… • ΊͬͪΌऑମԽ • WebViewʹ͋Δdelegate͸΋ͬͱ͋Δ • WebFrameʹ΋ΞΫηεͰ͖ͳ͍͠… • ΋ͪΖΜJSContext΋࢖͑ͳ͍

Slide 25

Slide 25 text

ٙ໰ • લճͷWWDCͰJavaScriptCore.frameworkΛ ։์ͨ͠ҙਤ͕Θ͔Βͳ͍ • ಛʹ࠷ۙ͸WebKitͷJSEngine͸͍͢͝վྑ ͞Ε͍ͯΔ • ϑΟʔυόοΫ࣍ୈͰ͸΋ͬͱ։์͞ΕΔՄ ೳੑ͕ʁ

Slide 26

Slide 26 text

·ͱΊ • UIWebView is dead. Long live WKWebView. • Ϛϧνϓϩηε+Ϟμϯ API • ࠓͷͱ͜Ζظ଴΄ͲͰ͸ͳ͍(ͱࢥ͏) • ͨͩ͠ྗΛೖΕ͍ͯΔͷ͸͔֬ • ظ଴ͯ͠Δਓ͸Bug Reportʹཁ๬ग़ͦ͏ʂ

Slide 27

Slide 27 text

ؔ࿈ • http://www.webkit.org • https://github.com/webkit/webkit • Introducing the Modern WebKit API • http://nshipster.com/ios8/

Slide 28

Slide 28 text

Thank you!