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的加载页加载过程,没有实现后台加载。考虑到上线稳定。暂时用的还是原来自己定制的浏览器。以后有时间再研究一下了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章