標籤:class http java tar get 使用
下載 phonegap
安裝phonegap之前需要NodeJS環境,下載NodeJS並安裝.安裝環境的目的是為了使用phonegap命令列.
3. 安裝phonegap使用命令
$phonegap create my-app
$cd my-app
$phonegap run iOS
這樣就會自動建立ios環境,可以在目錄my-app/platforms/中找到ios目錄.這樣系統就自動為我們建立了一個ios的phonegap項目.此項目在預設目錄中.
4. 自訂項目建立路徑
命令: phonegap create <項目目錄> <項目ID> <項目名稱>
自動建立了helloword目錄,然後cd到platforms目錄中,執行$phonegap run iOS命令.這樣就自訂建立了phonegap項目.
從目錄可以看出,widget相關項目檔案都放在staging檔案目錄裡,在www檔案夾中有具體的編程檔案.還有各種移動平台的適配資訊及資源檔.
ios相關檔案
Classes:
代理和主介面類
Plugins:空目錄
Other Sources:
pch檔案和程式入口檔案
Resources:
資源檔:圖片,plist
Frameworks:類庫
程式運行index.html 的原因:
CDVConfigParser類中有個屬性startPage,在方法loadSettings中判斷,如果沒有設定指定開始頁面就會執行預設頁。
項目運行依賴於phonegap中提供的類庫,但是在項目裡面找不到相關檔案,經過分析發現在Build Phases中有Copy www Directory項,其中Shell寫的是/bin/sh 執行的shell在cordova/lib/copy-www-build-step.sh中。測試發現sh是unix執行指令碼的可執行檔。
cordova/lib/copy-www-build-step.sh在/bin/sh -c 目錄中。
在這個sh檔案中有一句代碼cordova/lib/copy-www-build-step.sh,這個目錄在Phonegap建立的時候建立的,位於項目裡的platforms/ios/cordova/lib下。ios目錄就是程式根目錄,所以設定設定檔cordova/lib/copy-www-build-step.sh可以用這個路徑找到,sh找到這個檔案之後會執行copy-www-build-step.sh裡面的路徑配置代碼。
Cordova就是Phonegap被Adobe收購後改的名字
一、JS跟OC通訊原理:
1、JS 使用了兩種方式來與 Objective-C 通訊,一種是使用 XMLHttpRequest 發起請求的方式,另一種則是通過設定透明的 iframe 的 src 屬性.
1) JS 端使用 XMLHttpRequest 發起了一個請求,而在 Objective-C 端使用一個 NSURLProtocol 的子類來檢查每個請求,如果地址是 /!gap_exec 的話,則認為是 Cordova 通訊的請求,直接攔截,攔截後就可以通過分析請求的資料,分發到不同的外掛程式類(CDVPlugin 類的子類)的方法中.
2)在 JS 端建立一個透明的 iframe,設定這個 ifame 的 src 為自訂的協議,而 ifame 的 src 更改時,UIWebView 會先回調其 delegate 的 webView:shouldStartLoadWithRequest:navigationType: 方法
二、OC跟JS通訊原理
通過UIWebView的方stringByEvaluatingJavaScriptFromString:執行一段JS代碼,可以達到OC與JS通訊的效果。
三、JS 請求 Objective-C,Objective-C 返回結果給 JS
IOS原生代碼拿到 callbackId、service、action 及 actionArgs 後,會做以下的處理:
1.根據 service 參數找到對應的外掛程式類
2.根據 action 參數找到外掛程式類中對應的處理方法,並把 actionArgs 作為處理方法請求參數的一部分傳給處理方法
3.處理完成後,把處理結果及 callbackId 返回給 JS 端,JS 端收到後會根據 callbackId 找到回調方法,並把處理結果傳給回調方法。