$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
关于PhoneGap你应该知道的12件事 (12 things you should know...
Search
dong
March 02, 2012
Technology
2
410
关于PhoneGap你应该知道的12件事 (12 things you should know about PhoneGap)
在w3ctech上的演讲稿,介绍了PhoneGap的基本概念,用法,打包,插件的开发,以Android为例介绍了PhoneGap的内部机制,以及如何调试PhoneGap应用。
dong
March 02, 2012
Tweet
Share
More Decks by dong
See All by dong
CSS Backgrounds and Borders规范导读
dong
0
1.7k
模块化HTML5移动应用开发:jQuery Mobile + BackboneJS+RequireJS
dong
8
5.6k
Other Decks in Technology
See All in Technology
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
360
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
120
Building Serverless AI Memory with Mastra × AWS
vvatanabe
0
290
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
1k
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
110
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
2
340
AI with TiDD
shiraji
1
240
Identity Management for Agentic AI 解説
fujie
0
360
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
110
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.3k
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
1
1.8k
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
320
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
120
It's Worth the Effort
3n
187
29k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Optimizing for Happiness
mojombo
379
70k
Typedesign – Prime Four
hannesfritz
42
2.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
ラッコキーワード サービス紹介資料
rakko
0
1.7M
How GitHub (no longer) Works
holman
316
140k
The SEO Collaboration Effect
kristinabergwall1
0
300
Accessibility Awareness
sabderemane
0
22
Transcript
ܱႿ1IPOF(BQ֥ࡱ൙ Mark Dong ٦ Adobe Developer Evangelist weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙၍ഡСЧֹหྟ յЇ)5.-"QQ ҆ඇ֞؟ᇕ QIPOF(BQQMVHJO Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ҂൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWB4DSJQU 'SBNFXPSL *%&5PPMT Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ఏჷ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
! Ⴟ୍ࣸࣁ֥ J1IPOF%FW$BNQ ! oCSJEHJOHUIFHBQ CFUXFFOUIFXFCBOEUIF JQIPOF4%,p ! 1IPOF(BQJUnTMJLF"*3 GPSUIF*QIPOF
/JUPCJCMPH Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQᄝ҂֥Чֹหྟ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
षჷĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
$BMM#BDL ۷ູ "QBDIF$PSEPWB Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
http://incubator.apache.org/cordova/
յЇ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ᆌؓ҂֥*%& 4%, Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
PhoneGap Build Compile in the cloud Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙Чֹۿି
None
None
હ൞1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
None
+4 /BUJWF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC$POUSPM 1MVHJOT ''* JavaScript/CSS/HTML5 Not Web Tech Adobe 董龙飞 weibo.com/donglongfei
weibo.com/javascriptdev
/BUJWF8FC$POUSPM #SPXTFSğGVMMGVODUJPOT $ISPNFSFNPWFE /PUPQCBS
''* 'PSFJHO'VODUJPO*OUFSGBDF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC7JFX 1IPOF(BQ1MVHJOT .PCJMF04 /BUJWF"1* )BSEXBSF Ԯۋఖ ྙԩ ຩ
l 8FC"QQ +BWB4DSJQU $44 )5.- FFI 浏览器 OS API OS API 1IPOF(BQ"QQ
1IPOF(BQࡏܒ .PCJMF04 8FC"QQ )5.- +BWB4DSJQU $44 /BUJWF8FC7JFX 8FC7JFXa6*8FC7JFXl
1IPOF(BQ1MVHJOT ജཞ ᄎԮۋఖ ᆷଲᆌ ഡСྐ༏ (14 ๙ᆩ ຩሑ l קᇅQMVHJO HTML5 API PhoneGap JS API OS API OS API PhoneGap Native API
/BUJWF8FC$POUSPM ಆۿିᛍফఖ ીႵшॿ
public class CirclesActivity extends DroidGap { @Override public void onCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/ www/circles.html"); } } /BUJWF8SBQQFSXJUI1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
QMVHJO
)5.-ཛଢ QIPOFHBQKBS QMVHJOTYNM "OESPJE.BOJGFTUYNM BOESPJEBDUJWJUZ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
In Java
public class callsPGPlugin extends Plugin { // List Actions public
static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result=null; if(ACTION.equals(action)){ CallLogAI callLogAI = new CallLogAI(ctx); JSONObject callsHistory=callLogAI.fetchCallLogs(null); Log.d("RESULT=", callsHistory.toString()); result=new PluginResult(Status.OK,callsHistory); }else{ result=new PluginResult(Status.INVALID_ACTION); Log.d("CallsPlugin","Invalidate action:" + action); } return result; } } Javaקᇅplugin Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ᇿҨplugin <?xml version="1.0" encoding="UTF-8"?> <plugins> <plugin name="App" value="com.phonegap.App"/> <plugin name="Geolocation"
value="com.phonegap.GeoBroker"/> <plugin name="Device" value="com.phonegap.Device"/> …… <plugin name="Temperature" value="com.phonegap.TempListener"/> <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> <plugin name="Capture" value="com.phonegap.Capture"/> <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlugin" /> </plugins> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
In JavaScript Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWBTDSJQUࢤ१ var CallsListing=function(){}; CallsListing.prototype.list=function(successCallback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test'] );
}; PhoneGap.addConstructor(function(){ PhoneGap.addPlugin("callsListing",new CallsListing); });
window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); ႨᆀטႨplugin +BWBTDSJQUࢤ१
ཬࢲ
window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); CallsListing.prototype.list=function(success Callback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin',
'list',['test’]); }; public class callsPGPlugin extends Plugin { // List Actions public static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlu gin" />
ೂޅൌགྷ+4აЧֹ"1*֥ࢌ
"OESPJE
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğonJsPrompt BEE+BWB4DSJQU*OUFSGBDF
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğڭۂonJsPrompt 'SPN+4UP/BUJWF 'SPN/BUJWFUP+4
CallsListing.prototype.list=function(successCallback,fai lureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test’]); }; PhoneGap.exec =
function(success, fail, service, action, args) { … var r = prompt(JSON.stringify(args), "gap:"+JSON.stringify([service, action, callbackId, true])); … +BWBTDSJQU Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Droidgap.java public boolean onJsPrompt(WebView view, String url, String message, String
defaultValue, JsPromptResult result) { …… String r = pluginManager.exec(service, action, callbackId, message, async); …… } Pluginmanager.java public String exec( nal String service, nal String action, nal String callbackId, nal String jsonArgs, nal boolean async) { …… cr = plugin.execute(action, args, callbackId); ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); …… } +BWB
Pluginmanager.java ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); $BMMCBDL4FSWFSKBWBğ9)3TFSWFS PhoneGap.Channel.join(function() { // Start listening for XHR
callbacks setTimeout(function() { if (PhoneGap.UsePolling) { PhoneGap.JSCallbackPolling(); } l +BWBTDSJQU +BWB
*04
+4֞/BUJWF֥๙ document.location = “gap://Class.method/args” /BUJWF֞+4֥๙ UIWebView.stringByEvaluatingJavaScriptFromString webView =[[UIWebView alloc] initWithFrame:webViewBounds];
ൌ২߄6*8FC7JFX Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
EFCVH
XFJOSF
8FJOSFᇂູ4FSWFSđ षؿᆀႨ$ISPNF 4BGBSJषؿ۽ऎটჹӱט ൫၍ႋႨ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
<script src="http://192.168.1.101:8080/target/target-script-min.js#anonymous"> </script> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ%FCVH4FSWFS Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ਫ਼ཌ
9 1FSGPSNBODF 8$DPNQBUJCMFđၞႨྟ $BMFOEBS .FTTBHFđ#MVFUPPUIđ"VEJP7JEFP
Mark Dong Developer Evangelist
[email protected]
weibo.com/donglongfei weibo.com/javascriptdev