ionic 框架踩過的那些坑和總結

1:有時候添加插件以後,打包時插件未必能成功安裝。這種事情仍是很常見的,當你發現你安裝的插件功能未能實現時,首先看看Xcode裏有沒有出現插件的OC源碼。若是沒有,那在WebStorm裏在添加一次。若是有就去看看方法有沒有掉用。(安卓也會出現這個問題)javascript

2:儘可能使用ngCodova官網提供的插件,(附上網址http://ngcordova.com/docs/plugins/)一些開源的插件不是不能用,目前來講問題仍是比較多的,尤爲是有些插件不是跨平臺的。固然若是有能力的人能夠嘗試本身寫插件(若是你既會安卓又會ios)。java

3:在Xcode升級到7.1出現如圖問題,能夠運行app,可是在打包app提交到appstore的時候會報錯誤Cordova/CDVViewController.h file not found。這個網上有解決方案:Header Search Path 加入"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"android

 

4:IOS9 HTTP不能正常訪問,在info.plist中修改(PS爲了部分SDK的正常使用,但願不管你是否須要使用HTTP,都打開)ios

5:自定義插件:目前ionic會遇到一些瓶頸,尤爲是一個技術氛圍不是很好打團隊。自己
Anjularjs就不是很精通,(也不是精不精通的問題,由於原生開發這塊有好幾年的積累,第三方資源比較多。像微信支付什麼的就沒JSsdk)不得不寫原始插件來解決。
首先插件的目錄結構以下圖apache


Src裏面放得是原生代碼:分ios目錄和android目錄對應不一樣的平臺
WWW文件放javascript文件
這裏要講一下
var exec = require('cordova/exec');你能夠當成是固定形式 require 用於引入咱們的類。
exports.textPlugin=function(success,error,info) {
    exec(success, error, 「LDtext", 「texture", info);
};
exports 用於導出咱們的方法。LDtext是原生裏的類名。texture是LDtext類裏的方法。(PS textEerr方法參數是 CDVInvokedUrlCommand* 這裏跟參數傳遞有關 )
原生代碼以下
@implementation LDText
- (void)textEerr:(CDVInvokedUrlCommand*)command{微信


        NSLog(@「執行原生代碼");
}
@endapp


還有一個是配置文件plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
 // id: 插件的標識,即發佈到 plugins.cordova.io 的 ID
    id="cordova.LDText"
    version="1.0.2">
    <name>LDText</name>
//描述信息
    <description>Cordova LDText Plugin</description>
    <license>Apache 2.0</license>ionic

 <keywords>cordova,LDText</keywords>
    <engines>
        <engine name="cordova" version=">=3.0.0" />
    </engines>微信支付

// js-module:對應咱們的 javascript 文件,src 屬性指向 www/LDText.js 
    <js-module src="www/LDText.js" name="LDText">
        <clobbers target="LDText" />
    </js-module>ui

 //platform 支持的平臺  <!-- ios -->
    <platform name="ios">
        <config-file target="config.xml" parent="/*」>
            <feature name="LDText">
                <param name="ios-package" value="LDText"/>
            </feature>
        </config-file>
//這裏是引用原生類
        <header-file src="src/ios/LDText.h" />
        <source-file src="src/ios/LDText.m" />
    </platform>

</plugin>

6:UI部分仍是有問題,固然多是咱們水平有限,目前還在研究解決中。若是有經驗的朋友能夠加我QQ392539126,相互交流。

相關文章
相關標籤/搜索