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
WebViewを活用するアプリの作り方 LT @ Conference With Develo...
Search
cockscomb
February 01, 2014
Programming
2.2k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebViewを活用するアプリの作り方 LT @ Conference With Developers 2
cockscomb
February 01, 2014
More Decks by cockscomb
See All by cockscomb
はてなアカウント基盤 State of the Union
cockscomb
0
70
jq at the Shortcuts
cockscomb
1
2.1k
GraphQL放談
cockscomb
4
2.1k
GraphQL Highway
cockscomb
28
8.8k
吉田を支える技術
cockscomb
0
2.5k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.5k
ユーザインターフェイスと非同期処理
cockscomb
5
2k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.7k
Other Decks in Programming
See All in Programming
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
190
Lessons from Spec-Driven Development
simas
PRO
0
220
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
570
AI 輔助遺留系統現代化的經驗分享
jame2408
1
960
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
200
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
150
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.4k
The NotImplementedError Problem in Ruby
koic
1
910
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
800
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
610
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Bash Introduction
62gerente
615
220k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
It's Worth the Effort
3n
188
29k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
470
Discover your Explorer Soul
emna__ayadi
2
1.1k
For a Future-Friendly Web
brad_frost
183
10k
How to Ace a Technical Interview
jacobian
281
24k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Transcript
cockscomb
None
ͯͳϒϩά
8FC"1*Λར༻͢ΔJ04ΞϓϦ։ൃ ͯͳαϚʔΠϯλʔϯγοϓ
–id:griffin-stewie lͦΕͳΓʹ࣮ઓܦݧ͕͋ΔਓͰ ͬͯͳͦ͞͏ͩͬͨΓΒͳͦ͏ͳ͜ͱΛ αϥοͱݟͤͯ͘Ε͍ͯΔz
)BUFOB&OHJOFFS4FNJOBS ͯͳʹ͓͚ΔϞμϯJ04ΞϓϦ։ൃೖ
– @kazuph lϞμϯʹॻ͔ͳ͔ͬͨ߹ͱॻ͍ͨ߹Λίʔ υͰൺֱͨͭ͠ͷͰઆ໌Λͯ͘͠ΕͯΔͷͰ ͍͢͝ḿΔIBUFOBUFDIz
cockscomb
8FC7JFXΛ׆༻͢Δ ΞϓϦͷ࡞Γํ
6*ͱͯ͠ͷ8FC7JFX w 6*8FC7JFXͰ)5.-ΞϓϦΛ࡞Δ w ΞϓϦͷҰ෦͚ͩ)5.-Ͱ࡞Δ w +BWB4DSJQUͱωΠςΟϒͷؒΛͲ͏औ Γ͔࣋ͭ
w "QBDIF$PSEPWB "EPCF1IPOF(BQ w 6*8FC7JFX w +BWB4DSJQU$PSF w 8FC7JFX+BWB4DSJQU#SJEHF
"QBDIF$PSEPWB w 6*8FC7JFXΛӅṭ w ϓϥάΠϯΞʔΩςΫνϟ w ϚϧνϓϥοτϑΥʔϜ
6*8FC7JFX • -stringByEvaluating JavaScriptFromString: • -webView: shouldStartLoadWithRequest: navigationType:
8FC7JFX+BWB4DSJQU#SJEHF w HJUIVCDPNNBSDVTXFTUJO 8FC7JFX+BWBTDSJQU#SJEHF w 8FCίϯςϯπͱωΠςΟϒͷΓऔ ΓΛநԽ
self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
}]; ! [self.bridge registerHandler:@"objc-handler" handler:^(NSDictionary *data, WVJBResponseCallback responseCallback) { // do something responseCallback(@{}); }]; [self.bridge callHandler:@"js-handler" data:@{ @"key" : @"value" } responseCallback:^(id responseData) { // do something }];
var Bridge = {}; Bridge.connect = function(callback) { if (window.WebViewJavascriptBridge)
{ callback(WebViewJavascriptBridge); } else { document.addEventListener('WebViewJavascriptBridgeReady', function() { callback(WebViewJavascriptBridge); }, false); } }; ! Bridge.connect(function(bridge) { bridge.init(function (message, responseCallback) { if (responseCallback) { responseCallback(); } }); ! bridge.registerHandler('js-handler', function (responseData) { // do something }); ! bridge.callHandler(‘objc-handler', { 'key' : 'value' }, function responseCallback(responseData) { // do something }); });
8FC7JFX+BWB4DSJQU#SJEHF w ωΠςΟϒଆͱ8FCίϯςϯπଆɺ ํͷݺͼग़͠ɺσʔλͷड͚͠ w ബ͘ίϯτϩʔϧ͍͢͠Ϧʔζφϒ ϧͳΠϯλʔϑΣʔε
+BWB4DSJQU$PSF
JSContext *context = [self.webView valueForKeyPath: @"documentView.webView.mainFrame.javaScriptContext"]; JSValue *three = [context
evaluateScript:@"1+2"]; http://blog.impathic.com/post/64171814244/true-javascript-uiwebview-integration-in-ios7
6*8FC7JFX +BWB4DSJQU$PSF w ඇެ։"1* w +BWB4DSJQU$PSFͷߴͳΈ w কདྷͷJ04ͷظ
8FC7JFXΛ׆༻͢Δ ΞϓϦͷ࡞Γํ
DPDLTDPNCIBUFOBCMPHDPN
IBUFOBDPSQKQSFDSVJU