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
1
1.4k
jq at the Shortcuts
cockscomb
1
2.1k
GraphQL放談
cockscomb
4
2.2k
GraphQL Highway
cockscomb
28
8.8k
吉田を支える技術
cockscomb
0
2.6k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.5k
ユーザインターフェイスと非同期処理
cockscomb
5
2.1k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.7k
Other Decks in Programming
See All in Programming
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
770
React本体のコードリーディング
high_g_engineer
1
140
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
仕様駆動開発の消費期限
watany
19
7.7k
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
120
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
480
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
140
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
140
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
220
今さら聞けない .NET CLI
htkym
0
190
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
880
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
4 Signs Your Business is Dying
shpigford
187
22k
Between Models and Reality
mayunak
4
390
Discover your Explorer Soul
emna__ayadi
2
1.2k
Crafting Experiences
bethany
1
250
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