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
290
BottomBarAndSnackBar
funnelbit
0
530
Dagger2 Optional bindings
funnelbit
0
600
WearableRecyclerView
funnelbit
1
840
QucikSettingsTileAPI
funnelbit
0
380
Mobile Vision
funnelbit
0
490
AwarenessAPI
funnelbit
0
160
Other Decks in Technology
See All in Technology
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
160
FASTでAIエージェントを作りまくろう!
yukiogawa
4
170
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
230
AIにより大幅に強化された AWS Transform Customを触ってみる
0air
0
210
FastMCP OAuth Proxy with Cognito
hironobuiga
3
230
GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える
flatt_security
9
6.8k
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
130
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
270
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.3k
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
520
契約書からの情報抽出を行うLLMのスループットを、バッチ処理を用いて最大40%改善した話
sansantech
PRO
3
330
遊びで始めたNew Relic MCP、気づいたらChatOpsなオブザーバビリティボットができてました/From New Relic MCP to a ChatOps Observability Bot
aeonpeople
1
120
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
Making Projects Easy
brettharned
120
6.6k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Design in an AI World
tapps
0
180
Navigating Team Friction
lara
192
16k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Marketing to machines
jonoalderson
1
5.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Designing for humans not robots
tammielis
254
26k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
93
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
͋Γ͕ͱ͏͍͟͝·ͨ͠