Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
WebViewを活用するアプリの作り方 LT @ Conference With Develo...
Search
cockscomb
February 01, 2014
Programming
2.3k
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
1
1.6k
jq at the Shortcuts
cockscomb
1
2.1k
GraphQL放談
cockscomb
4
2.2k
GraphQL Highway
cockscomb
28
8.9k
吉田を支える技術
cockscomb
0
2.6k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.5k
ユーザインターフェイスと非同期処理
cockscomb
5
2.1k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.8k
Other Decks in Programming
See All in Programming
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
310
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
230
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
160
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
300
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
170
ChromeでローカルLLM
ryu1013
0
200
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
730
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
160
Moscow Python Meetup №112. Как поселить ИИ агентов в event driven архитектуре
moscowdjango
PRO
0
110
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
3.5k
地方こそサーバーレス — 10年続けた、顔が見えるチームで確かな基盤を / Serverless Matters Most in Regional Areas — 10 Years of Building Reliable Foundations with Close-Knit Teams
seike460
PRO
1
270
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
What's in a price? How to price your products and services
michaelherold
247
13k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
520
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
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