cordova試用

以前自己定製瀏覽器之前,就知道有cordova這個app可以用,但是訪問官網的時候,發現他上面的媒體分享插件都是國外的,但是我們就想用國內的啊,因此放棄了,採用自己定製瀏覽器。但是前端時間做app消息推送,覺得騰訊的微信裝機量比較大,他的信鴿應該不錯,因此就想用信鴿來做推送。研究的時候,發現他的前端有支持cordova現成的模塊。研究了一下,發現國內的微信微博都是支持的,如果採用這個平臺,以後擴展功能就比較簡單了。因此花時間研究了一下。
首先需要安裝nodejs
下載jithub上的東西需要首先下載git客戶端
npm install -g cordova
cordova create myApp
此時要把工程根目錄下config.xml改對,這樣後期編譯就不需要大改了。默認cordova是不允許訪問外網的程序的,但是修改程序後是可以做到的
<widget id="com.test.abc">
<name>XXX</name>
<content src="http://test.example.com"/>

--添加項目所需的平臺
cd myApp
cordova platform add ios
cordova platform add android
--添加項目所需的插件
cordova plugin add cordova-plugin-crosswalk-webview
cordova plugin add cordova-plugin-wkwebview-engine
cordova plugin add cordova-plugin-media-capture
cordova plugin add cordova-plugin-splashscreen
cordova plugin add phonegap-plugin-barcodescanner
cordova plugin add cordova-plugin-wechat --variable wechatappid=wxa3e68fa07e34b963
cordova plugin add https://github.com/sunlu/cordova-plugin-xgpush --save --variable ACCESS_ID="2100188465"  --variable ACCESS_KEY="ACSL1I12Q15N"

// android CordovaActivity 中增加如下代碼,防止用戶點擊返回後,程序退出,而是改爲進入後臺
import android.view.KeyEvent;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    // Check if the key event was the Back button and if there's history
    if ((keyCode == KeyEvent.KEYCODE_BACK) ){
        if(appView.canGoBack()){
            appView.backHistory();
        }else{
            moveTaskToBack(true);
        }
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

WhitelistPlugin::shouldAllowNavigation,直接返回true,這樣就可以訪問服務器上頁面了

在platforms\android下增加gradle.properties,增加如下一行
android.useDeprecatedNdk=true

build.gradle下修改
compile fileTree(dir: 'libs', include: '*.jar') ---> provided fileTree(dir: 'libs', include: '*.jar')

在config.xml下添加
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="WECHATAPPID" value="wxad6b4e7b58b2a576" />
<preference name="Orientation" value="portrait" />
<preference name="Fullscreen" value="true" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="FadeSplashScreen" value="false"/>
運行安卓軟件
cordova run android

修改ios下CDVUIWebViewNavigationDelegate::shouldStartLoadWithRequest
改爲開始就 return YES;這樣就可以訪問服務器上頁面了
cordova run ios
要想把網頁放到服務器端,需要把www目錄下的所有東西都放到服務器端,引用安卓或ios專有js的時候,需要在網頁裏面動態的寫入路徑,讓網頁能加載正確的js。目前其他項目組的人反映程序極不穩定,每隔2~3分鐘安卓程序就會掛掉一次,但是他沒有調用任何定製的api,懷疑是crosswalk有問題,去掉這個試一下。iOS乾脆那個webkit webview就不起來調用的仍然是uiwebview,這個蘋果審覈是過不了的,程序的啓動頁加載後,跳轉到頁面的時候由於網絡延遲是要黑一段時間的。自己定製的程序可以在加載頁的後臺加載網頁,但是不太熟悉cordova的加載頁加載過程,沒有實現後臺加載。考慮到上線穩定。暫時用的還是原來自己定製的瀏覽器。以後有時間再研究一下了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章