【移动应用开发技术】烽火exmobile-ios原生插件开发_第1页
【移动应用开发技术】烽火exmobile-ios原生插件开发_第2页
【移动应用开发技术】烽火exmobile-ios原生插件开发_第3页
【移动应用开发技术】烽火exmobile-ios原生插件开发_第4页
【移动应用开发技术】烽火exmobile-ios原生插件开发_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】烽火exmobile--ios原生插件开发

一:开发工具xcode、mbuilder1:在/open/resource.html网站下载生成插件包,XKPlugin_Test2_ComponentFactory是使用时的插件工厂,可以改成自己的名称想使用的名称:XKPlugin_CPI_ComponentFactory.h;其他文件XKPlugin_Component不要改动。2:XKPlugin_CPI_ComponentFactory.m文件中,修改红色代码,CPI_CalendarComponent是自己写的插件类。

-

(XKPlugin_Component*)createComponent:(NSString*)type{

NSLog(@"XKPlugin_Component

createComponent%@",type);

//根据插件type名构建插件

if

([@"CPI_CalendarComponent"isEqualToString:type]){

return[[CPI_CalendarComponentalloc]init];

}

returnnil;}

3:新建插件类,AppPlugin下,新建NewGroup,名称是CPI_CalendarComponent,在此文件夹下新建文件,NewFile...-->CocoaTouchClass-->Class(class就是插件类名称,和步骤2中的红色代码中的type类型一致CPI_CalendarCpmponent)-->SubClass(NSObject)-->Language(Objective-C);#import

<UIKit/UIKit.h>

#import

"XKPlugin_Component.h"

@interface

CPI_CalendarComponent

:

XKPlugin_Component

@property

(strong,

nonatomic)

NSString*

idetifier

;

4:CPI_CalendarCpmponent.h文件中导入基础插件类(XKPlugin_Component),其中idetifier

是需要返回的回调值

5:CPI_CalendarCpmponent.m中,(1)getView是返回视图,如果有视图,则返回视图模式,如果不返回视图,则只可以直接返回一个nil;(2)call方法是js和插件之间调用的桥梁,第一个参数必须是方法名称,用来判断js调用的什么方法,最多有起个参数,前台自己传参,只要不大于7个就可以,后台自己判断参数个数。call方法格式不要修改,不要在call方法中使用UIAlert方法,容易造成闪退。<nativecomponentid="native"style="width:200;height:300"type="ABC_SliderComponent"

factoryname="XKPlugin_Test2_ComponentFactory"onchange="changetodo"minvalue=”1”maxvalue=”10”></nativecomponent>

(3)set方法是获取前台nativecomponent的xml标签中的参数

(4)setValue是插件的回调,在方法体里执行了需要操作的功能之后,回调一个值返回

SEL

sel

=

@selector(setValue:);

if([delegate

respondsToSelector:

sel]){

[delegate

performSelector:

sel

withObject:

@"success"];

}

5:get方法是可以在mbuilder上可以调用的返回值。varnav=document.getElementById("nav");vartest=nav.get("test");

前段页面调用MBuilder1:body里放xml标签文件,其实“type”代表的是你写的插件类,id是自己定义的,在js中使用varnav=document.getElementById("nav");来获取这个插件,factoryname是写的工厂类,wid是自己定义的方法,js中使用toGetWid(v)方法来获取这个回调回来的值,就是xcode插件中,setValue中和回调函数一起返回过来的参数。<nativecomponent

type="CPI_CalendarComponent"id="nav"

factoryname="XKPlugin_CPI_ComponentFactory"

wid="toGetWid">

</nativecomponent>

二:打包1:新建一个文件夹,名称为自己定义的工厂类:XKPlugin_CPI_ComponentFactory2:将xcode中的代码通过编译,点击AppPlugin项目-->Product-->Archive。3:可以在项目的Products目录下看见一个libplugin.a文件,右键点击-->ShowinFinder,将.a文件复制到文件夹中。4:将自己写的工厂类XKPlugin_CPI_ComponentFactory.h文件复制到文件夹中5:在文件夹中新建一个framework文件夹,里面新建一个framework.txt文档,将插件项目中所需要的freamwork相对路径放到.txt文件中,将插件工程中所需要的.a文件或者其他第三方framework库复制到framework文件夹中6:新建p_w_picpath文件夹,将插件工程中所需要的图片放到文件夹中7:新建other文件夹,将项目中一些其他文件放置到这个文件夹中,比如plist、xml文件(如果说插件中需要设计到权限的问题,需要在plist文件中添加权限);8:新建xib文件夹,将插件工程中需要的xib文件放到文件夹中(返回视图的插件需要,不然不需要);9:新建natives文件夹,在文件夹下新建文件夹,名称为插件类的名称CPI_CalendarComponent,新建config.xml文件,作为插件的版本信息,可以有有多个插件,config文件格式如下,其中version是版本号,每次要更新的时候需要提高版本号,不然会打包失败。type是你的插件类,factoryname是工厂类,其他信息可以随便填了。<?xmlversion="1.0"

encoding="UTF-8"?><config>

<version>1.1.9</version>

<type>CPI_CalendarComponent</type>

<factoryname>XKPlugin_CPI_ComponentFactory</factoryname>

<description>日程写入</description>

<date></date>

<vendorurl=""email=""></vendor></config>

10:所有文件完成之后,压缩XKPlugin_CPI_ComponentFactory,格式必须是.zip格式的。11:插件打包好之后登陆到烽火的控制台,在插件管理中,添加插件,打包成功之后,在mbuilder打包的时候可以修改ios的打包配置文件,将自己的插件添加进去就可以使用了。

三:遇到的问题Q:打包的时候,烽火平台的教程上,直接选择了文件夹中的七项,然后压缩,上传之后显示打包失败;A:文件夹中的七个选项,外面还需要加一层工厂类的文件夹,然后再压缩,压缩格式必须是ZIP格式的。Q:在IOS平台压缩打包,上传失败A:IOS平台打包的时候,文件夹中会出现多余的文件,导致打包失败,将所有的文件拷到windows平台压缩。Q:第一次上传成功,第二次失败A:一个可能是修改的插件有问题,还有一个可能是因为config.xml文件中version的版本号没有提高导致的。Q:本次所做的日历插件中,ios10以下的版本可以正常使用,ios10以上的没有反应A:IOS10的版本提高了安全性,在开发的时候,需要加上权限,在AppPlugin的文件夹下,新建一个info.plist文件,或者直接从别处拷过来,在InformationPropertyList下添加一个AppTransportSecuritySettings选项,在此项下面加上插件所需要的权限。然后选中AppPlugin工程,在BuildSettings选项下面找到packaging-->info.plistFile选项,将info.plist文件的路径加上去,并且将这个plist文件加入到打包文件夹中的other文件夹下。Q:打包成功之后安装app,但是打开之后会有闪退现象A:第一,在MBuilder中打包的项目的时候,基座版本不要选的太高

第二,在插件的call方法中,不要使用UIAlert方法弹出信息,将所需的信息通过回调,返回到js中,

通过js去回调。Q:使用get方法获取参数值,在js中使用nav.get("v"),信息没有返回A:返回的参数没有获取到,参数需要操作成功之后通过自身的回调函数回来,js使用时并没有获取到这个参数值,callbackFunction是从set方法中根据前端<nativecomponent>中自定义的名称获取的,helper_callJsScript调用了js中的方法名称。

-(void)

set:(NSString*)

name

value:(NSString*)value{

if

([@"wid"

isEqualToString:

name]){

callbackFunction

=

[NSString

stringWithString:value];

}

}

-(void*)setValue:(NSString*)v{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论