Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Monaca、WKWebViewに移行しようぜ!
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Daisuke Kishino
April 02, 2020
Programming
950
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Monaca、WKWebViewに移行しようぜ!
https://monacaug.connpass.com/event/170995/
の発表資料
Daisuke Kishino
April 02, 2020
More Decks by Daisuke Kishino
See All by Daisuke Kishino
Flutterコンテストを開催した話
kishino
1
470
Ionicあらまし@okayama-js
kishino
0
1.1k
MonacaアプリをネイティブのUXに近づけるために
kishino
0
990
Sign In with Appleを実装してみた
kishino
0
450
Fluid interfaces for Monaca
kishino
0
260
Vue.jsの特徴
kishino
0
620
Monacaでアプリ名の多言語化
kishino
0
790
Other Decks in Programming
See All in Programming
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.8k
Hono + Inertia + React で LP を構築した話
oukayuka
2
150
AIの中の人になってみる
htkym
0
120
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.7k
Cloudflare is Agents
chimame
0
180
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
720
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
370
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
170
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
GraphQLとの向き合い方2022年版
quramy
50
15k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
Why Our Code Smells
bkeepers
PRO
340
58k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
What's in a price? How to price your products and services
michaelherold
247
13k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Abbi's Birthday
coloredviolet
3
9.4k
Transcript
MonacaɺWKWebViewʹҠߦ͠Α ͏ͥʂ Daisuke Kishino Monaca UG ONLINE #1 2020.4.2
ࣗݾհ • ϐʔϓϧιϑτΣΞגࣜձࣾ • ؛ େี(@kishisuke) • Ԭࢁݝෑࢢࡏॅ • ͜͜2BaaS@rakuza+MonacaΞϓϦͷ։ൃ
(Vue.jsϝΠϯ) • Monaca UG OKAYAMAͬͯ·͢ • ࠷ۙFlutterΞϓϦ࡞ͬͯ·͢
ൃ https://developer.apple.com/news/?id=12232019b ”App Storeɺ20204݄Ҏ߱ɺUIWebViewΛ༻͢Δ৽͍͠Ξ ϓϦɺ͓Αͼ202012݄Ҏ߱ɺUIWebViewΛ༻͢ΔΞϓϦͷ ΞοϓσʔτΛड͚͚ͳ͘ͳΓ·͢ɻ”
None
Ͳ͏͢Εྑ͍ͷʁ • UIWebViewΛআ͢Δ • ͔ΘΓʹWKWebViewΛ͏ • Ҏ্ʂ
WKWebView is Կ • iOS 8͔Βొͨ͠৽͍͠WebView • ϨϯμϦϯάJSͷ࣮ߦ͕ߴ • ϓϩηε͕ΞϓϦͱ͍ͯ͠ΔʢΫϥογϡ͠ʹ͍͘ʣ
• ηΩϡϦςΟ͕ݫ֨
J04ϦϦʔεɻ8,8FC7JFX͕ొ J04ϦϦʔεɻ6*8FC7JFX͕ඇਪʹͳΔ ͍ۙকདྷ6*8FC7JFXΛؚΉΞϓϦͷਃ͕Ͱ͖ͳ͘ͳΔܯࠂ͕௨ ͞ΕΔʢ*5.4ʣ ৽نɺطଘʹ6*8FC7JFXΛؚΉΞϓϦͷਃ ͕Ͱ͖ͳ͘ͳΔ͜ͱ͕௨͞ΕΔ
.POBDB͕8,8FC7JFXͷαϙʔτΛ։࢝ 6*8FC7JFXΛؚΉ৽نΞϓϦͷਃ͕Ͱ͖ͳ͘ͳΔˡΠϚίί 6*8FC7JFXΛؚΉطଘΞϓϦͷਃ͕Ͱ͖ͳ͘ͳΔ
UIWebViewΛར༻͍ͯ͠Δ͔֬ೝ͢Δํ๏ • UIWebViewΛ࣮ࡍʹը໘ʹද͍ࣔͯ͠ͳ͘ͱɺϦϯΫ͍ͯ͠Δ߹ϦδΣΫτ͞ ΕΔՄೳੑ͕͋Δ • UIWebView͕ϦϯΫ͞Ε͍ͯΔ͔nmίϚϯυͰ֬ೝՄೳ • ※όΠφϦϑΝΠϧͷύεҎԼͰ֬ೝ 1. ipaϑΝΠϧΛղౚ͢Δʢ֦ுࢠΛzipʹมߋͯ͠ɺzipܗࣜͱͯ͠ղౚʣ
2. {ϑΝΠϧ໊}/Payload/{ϑΝΠϧ໊}.app/{ϑΝΠϧ໊} nm <όΠφϦϑΝΠϧͷύε> | grep UIWebView
UIWebViewΛར༻͍ͯ͠Δ͔֬ೝ͢Δํ๏ • ݁ՌྫʢԿදࣔ͞Εͳ͔ͬͨΒOKʣ U _OBJC_CLASS_$_UIWebView U _OBJC_METACLASS_$_UIWebView U _OBJC_CLASS_$_UIWebView U
_OBJC_METACLASS_$_UIWebView
جຊతͳରԠํ๏
WebViewͷEngineΛWKWebViewʹมߋ
WebViewΛWKWebViewʹมߋ WKWebView ʹมߋ
PlatformͱXcodeΛมߋ iOS 5.1.1 ʹมߋ Xcode11.3 ʹมߋ
WKWebView൛ΧελϜσόοΨʔʹରԠ Monaca Core UtilityΛ Ұ୴আ
WKWebView൛ΧελϜσόοΨʔʹରԠ Ճ 2.1.0 ΛΠϯετʔϧ
αʔυύʔςΟϓϥάΠϯͷରԠ
αʔυύʔςΟϓϥάΠϯͷରԠ • αʔυύʔςΟͷϓϥάΠϯͰUIWebViewΛϦϯΫ͍ͯ͠ΔՄೳ ੑ͕͋Δɻ • ͦͷ߹ɺϓϥάΠϯΛΞοϓσʔτ·ͨআʢඞཁͰ͋Ε ସ࣮ʹҠߦʣ͢Δ
ରԠྫ • InAppBrowser • WKWebViewʹରԠ͓ͯ͠ΓɺUIWebViewͷඇϦϯΫԽ3.2.0͔ΒରԠ • Firebase SDK • 6.8.0ͱ6.8.1͔ΒUIWebViewͷඇϦϯΫԽʹରԠʢ6.8.1ະຬͷ߹ཁ
Ξοϓσʔτʣ • AFNetworking • 3.xͰUIWebView͕ϦϯΫ͞Ε͍ͯΔɻ4ͰରԠ൛ΛϦϦʔε༧ఆ
ϋϚͬͨ
LocalStorage
LocalStorageͷσʔλอଘॴ Ҡߦલ Ҡߦޙ Library !"" WebKit !"" LocalStorage !"" file__0.localstorage
Library !"" WebKit #"" LocalStorage $ !"" file__0.localstorage $ !"" WebsiteData !"" LocalStorage !"" file__0.localstorage WKWebView͕ ࢀর ࢀর͞Εͳ͘ͳΔ ʢফ༷͑ͨʹݟ͑Δʣ
LocalStorageͷσʔλΛҠߦ͢Δ • cordova-plugin-migrate-localstorageΛΠϯετʔϧ͢Δ͚ͩ • ϓϥάΠϯͷॳظԽ࣌ʹWebKit/LocalStorage/file__0.localstorage͔ΒWebKit/ WebsiteData/LocalStorage/file__0.localstorageʹϑΝΠϧΛίϐʔ͢Δ • Ωϟογϡσʔλ͔͠LocalStorageʹอଘ͍ͯ͠ͳ͍߹ɺ͋͑ͯҠߦ͢Δඞཁ ͳ͍͔ •
ςετೖ೦ʹ͢ΔʢGoogle Chrome 79ͷ൵ܶΛ܁Γฦ͍͚ͯ͠ͳ͍..ʣ
CordovaͰXHR͕ΤϥʔʹͳΔ
HTTP(S)ͷΞΫηε MonacaΞϓϦ ʢfile://…ʣ API ʢhttps://example.com/…ʣ WKWebView ಉҰੜݩϙϦγʔʹΑΓ XHRͰΞΫηεͰ͖ͳ͍ ϒϥβͱಉ༷ʹ CORSରԠ͕ඞཁ
ϩʔΧϧϦιʔεͷΞΫηε MonacaΞϓϦ ʢfile://…ʣ MonacaΞϓϦ ʢfile://…/page.htmlʣ WKWebView fileεΩʔϜͷϩʔΧϧϦιʔε ʹXHRͰΞΫηεͰ͖ͳ͍
ղܾࡦᶃ: cordova-plugin-wkwebview-file-xhr • cordova-plugin-wkwebview-file-xhr • XHRͷॲཧΛϑοΫͯ͠ɺωΠςΟϒଆʢNSURLSessionʣͰϩʔ ΧϧϑΝΠϧʹΞΫηεͯ݁͠ՌΛฦ͢ • ϓϥάΠϯͷॳظԽྃ͠ͳ͍ͱXHRϦΫΤετͰ͖ͳ͍ʹҙ
ղܾࡦᶄ: Custom SchemeϓϥάΠϯ • ϩʔΧϧϦιʔεʹXHRͰΞΫηε͢ΔͨΊͷMonacaެࣜͷϓϥάΠϯʢ3/31ϦϦʔεʣ • wwwσΟϨΫτϦԼͷϑΝΠϧશମΛΧελϜεΩʔϜΛ௨ͯ͡ΞΫηε͢Δ • fileεΩʔϜͰͳ͍ͷͰΞΫηε੍ݶͳ͠ •
cordova-plugin-wkwebview-file-xhrͱҟͳΓɺϓϥάΠϯͷॳظԽΛͭඞཁͳ͠ monaca-app://monaca.io/www/index.html
ղܾࡦᶄ: Custom SchemeϓϥάΠϯ • ҙ • WKURLSchemeHandlerΛ͍ͬͯΔʢϋζʣͳͷͰɺiOS11Ҏ߱ͷΈରԠ • publicͳnpmϨδετϦͰެ։͞Ε͍ͯͳ͍ͨΊɺϩʔΧϧڥͰnpm installͰ͖ͳ͍
ͦͷଞͷ͕ى͖ͨΒ • ·ͱΊهࣄΛಡΉ • https://qiita.com/kishisuke/items/d201790aeae2129ff2e3 • CordovaͷIssueΛ֬ೝ͢Δ • https://issues.apache.org/jira/issues/? jql=project%20%3D%20CB%20AND%20labels%20%3D%20wkwebview-
known-issues
ྑ͍͜ͱ͋Δ • ύϑΥʔϚϯεͷ্ • ApplePayɺSign in with AppleͳͲͷ࠷৽ػೳʹରԠ͍ͯ͠Δ • UIWebViewͷόά͕Δ
None
None