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,相互交流。

相关文章
相关标签/搜索