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
Daisuke Kishino
April 02, 2020
Programming
940
0
Share
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
450
Ionicあらまし@okayama-js
kishino
0
1.1k
MonacaアプリをネイティブのUXに近づけるために
kishino
0
960
Sign In with Appleを実装してみた
kishino
0
440
Fluid interfaces for Monaca
kishino
0
250
Vue.jsの特徴
kishino
0
610
Monacaでアプリ名の多言語化
kishino
0
770
Other Decks in Programming
See All in Programming
10 Tips of AWS ~Gen AI on AWS~
licux
5
320
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
690
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
550
Vibe NLP for Applied NLP
inesmontani
PRO
0
350
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
190
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
840
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
250
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.4k
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
180
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
存在論的プログラミング: 時間と存在を記述する
koriym
5
860
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Between Models and Reality
mayunak
3
260
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
270
Navigating Weather and Climate Data
rabernat
0
160
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
93
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
370
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
310
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Darren the Foodie - Storyboard
khoart
PRO
3
3.2k
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