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
webMessaging
Search
funnelbit
July 14, 2015
Technology
1
2.9k
webMessaging
funnelbit
July 14, 2015
Tweet
Share
More Decks by funnelbit
See All by funnelbit
Hatena Engineer Seminar #9
funnelbit
5
7.4k
droidkaigi-2017-renovation
funnelbit
10
11k
Dart
funnelbit
0
270
BottomBarAndSnackBar
funnelbit
0
510
Dagger2 Optional bindings
funnelbit
0
590
WearableRecyclerView
funnelbit
1
820
QucikSettingsTileAPI
funnelbit
0
360
Mobile Vision
funnelbit
0
480
AwarenessAPI
funnelbit
0
150
Other Decks in Technology
See All in Technology
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
130
AWSに革命を起こすかもしれない新サービス・アップデートについてのお話
yama3133
0
540
フィッシュボウルのやり方 / How to do a fishbowl
pauli
2
440
Agent Skillsがハーネスの垣根を超える日
gotalab555
7
5.1k
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
270
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
0
620
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
0
350
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
140
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
18k
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
280
Knowledge Work の AI Backend
kworkdev
PRO
0
340
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
160
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
57
Chasing Engaging Ingredients in Design
codingconduct
0
92
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How STYLIGHT went responsive
nonsquared
100
6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Writing Fast Ruby
sferik
630
62k
Designing for Performance
lara
610
70k
Statistics for Hackers
jakevdp
799
230k
Transcript
"OESPJE.͔Βͷ 8FC.FTTBHJOH JEGVOOFMCJU
͜Μʹͪ w JEGVOOFMCJU w ଜɹྋ
+4ͱ+BWBͷ௨৴
ݱঢ়ͷ+4ͱͷ௨৴ +4ʹ͢ mWebView.loadUrl( "javascript:document.getElementById('content').innerHTML=\ "͜Μʹͪ\""); mWebView.evaluateJavascript( "var content = document.getElementById('content');"
+ "content.innerHTML = \"͜Μʹͪ\"" , null); w "1*-FWFMd
͜Ε·Ͱͷ+4ͱͷ௨৴ +4͔Βड͚औΔ mWebView.addJavascriptInterface(new JavaScriptInterface(), “Callback"); private class JavaScriptInterface { @JavascriptInterface
public void onEdit(String text) { // ͜Μʹͪ } }
໘ w +4ʹͪΐͬͱΛ͚ͩ͢Ͱ͍͢͝खؒ w จࣈྻͳ+4͕+BWBʹฆΕࠐΉ
)5.-8FC.FTTBHJOH w JGSBNFXJOEPXؒͷ௨৴ΛՄೳͱ͢Δ w QPTU.FTTBHF w .FTTBHF$IBOOFMΛར༻ͨ͠ QPTU.FTTBHF
QPTU.FTTBHF JGSBNFTSDlEPNFJOzJGSBNF ʜ WBSJGSBNFEPDVNFOUHFU&MFNFOU#Z*E QBHF JGSBNFDPOUFOU8JOEPXQPTU.FTTBHF ͜Μʹͪ lEPNBJOl
WBSSFDFJWF.FTTBHFGVODUJPO FWFOU \ DPOTPMFMPH PL ^ XJOEPXBEE&WFOU-JTUFOFS NFTTBHF SFDFJWF.FTTBHF w QBHF w QBHF
QPTU.FTTBHF NFTTBHFDIBOOFM WBSSFDFJWF.FTTBHFGVODUJPO FWFOU \ WBSQPSUFWFOUQPSUT<> QPSUTUBSU QPSUQPTU.FTTBHF ͋Γ͕ͱ͏
^ XJOEPXBEE&WFOU-JTUFOFS NFTTBHF SFDFJWF.FTTBHF GBMTF w QBHF w QBHF WBSDIBOOFMOFX.FTTBHF$IBOOFM WBSJGSBNFEPDVNFOUHFU&MFNFOU#Z*E QBHF WBSQPSUDIBOOFMQPSU QPSUTUBSU QPSUBEE&WFOU-JTUFOFS NFTTBHF GVODUJPO F \ DPOTPMFMPH Αͬ͠Ό ^ JGSBNFDPOUFOU8JOEPXQPTU.FTTBHF ͜Μʹͪ <DIBOOFMQPSU>
8FC.FTTBHF༻ Ϋϥεͱϝιου w BOESPJEXFCLJU w 8FC.FTTBHF w 8FC.FTTBHF1PSU w 8FC.FTTBHF1PSUQPTU.FTTBHF
w 8FC.FTTBHF1PSU8FC.FTTBHF$BMMCBDL w BOESPJEXFCLJU8FC7JFX w 8FC7JFXDSFBUF8FC.FTTBHF$IBOOFM w 8FC7JFXQPTU8FC.FTTBHF
w ૹ৴͢ΔϝοηʔδΛදͨ͠Ϋϥε WebMessage webMessage = new WebMessage("͜Μʹͪ"); w .FTTBHF1PSUTΛҾʹऔΕΔ WebMessage
webMessage = new WebMessage("portͩΑ", ports); 8FC.FTTBHF
w .FTTBHF$IBOOFMͰ͏ϙʔτ w +4ͷ.FTTBHF$IBOOFMQPSUPS .FTTBHF$IBOOFMQPSU૬ 8FC.FTTBHF1PSU
w .FTTBHF$IBOOFMͰQPTU͢Δ mWebMessagePort1.postMessage(webMessage); 8FC.FTTBHF1PSU QPTU.FTTBHF 8FC.FTTBHF
w .FTTBHF$IBOOFMͰड৴ͨ͠༰Λड͚औΔ port1.setWebMessageCallback(new WebMessagePort.WebMessageCallback() { @Override public void onMessage(WebMessagePort port,
WebMessage message) { super.onMessage(port, message); Log.e("onMessage", message.getData()); } }); 8FC.FTTBHF1PSU8FC.FT TBHF$BMMCBDL
w .FTTBHF$IBOOFMΛ࡞Δ w ྻͰQPSU͕ͭฦͬͯ͘Δ mWebMessagePorts = mWebView.createWebMessageChannel(); WebMessagePort port1 =
mWebMessagePorts[0]; WebMessagePort port2 = mWebMessagePorts[1]; 8FC7JFX DSFBUF8FC.FTTHF$IBOOFM
w 8FC7JFXͰදࣔதͷ1BHFʹQPTU.BTTBHF͢Δ mWebView.postWebMessage(webMessage, uri); 8FC7JFX QPTU8FC.FTTBHF
ྫ
ྫ mWebMessagePorts = mWebView.createWebMessageChannel(); WebMessagePort port1 = mWebMessagePorts[0]; WebMessagePort port2
= mWebMessagePorts[1]; … port1.setWebMessageCallback(new WebMessagePort.WebMessageCallback() { … }}); … WebMessagePort[] ports = {port2}; WebMessage webMessage = new WebMessage("͜ΜʹͪportsͰ͢ ", ports); mWebView.postWebMessage(webMessage, uri);
·ͱΊ w +BWBʹจࣈྻͳ+4͕ฆΕࠐ·ͳ͍ w )5.-ͷඪ४ͳͷͰ൚༻త w ·ͩQSFWJFXஈ֊Ͱมߋ͕ଟ͍ͷͰҙ QSFWJFXQPTU.FTTBHF5P.BJO'SBNF QSFWJFXQPTU8FC.FTTBHF
͋Γ͕ͱ͏͍͟͝·ͨ͠