HBuilder用来写H5项目,Xcode用来写iOS原生的插件,我所需实现的是,在H5页面点击打印,运行iOS原生插件来实现连接蓝牙打印机并打印出获取的内容。
首先去HBuilder文档上,下载HBuilder离线打包iOS版SDK,运行HBuilder-Hello,在HBuilder-Hello项目基础上开始进行原生插件开发。
HTML5+ 基座扩展采用三层结构,JS层、PluginBridge层和Native层。 三层功能分别是:
JS层: 在Webview页面调用,触发Native层代码,获取执行结果。 PluginBridge层: 将JS层请求进行处理,触发Native层扩展插件代码。
Native层: 插件扩展的平台原生代码,负责执行业务逻辑并执行结果返回到请求页面。
先来注册下对应关系
修改PandoraAPI.bundle中feature.plist文件,在其中添加JS插件别名和Native插件类的对应关系,SDK基座会根据对应关系查找并生成相应的Native对象并执行对应的方法。
plugintest为你所要扩展的插件类的类名,在iOS中创建plugintest类,并继承于PGPlugin,在.h中导入PGPlugin.h,PGMethod.h
#include "PGPlugin.h" #include "PGMethod.h"
若需要静态库的话直接吧.a和.h文件拖到项目中就可以了,native中的方法分同步和异步方法,我在这里只介绍异步方法
- (void)PluginTestFunctionArrayArgu:(PGMethod *)msg { NSArray *pArray = [NSArray array]; if (msg) { //CallBackid 异步方法的回调id,H5+ 会根据回调ID通知JS层运行结果成功或者失败 NSString *cdId = [msg.arguments objectAtIndex:0]; //用户的参数会在第二个参数传回,可以按照Array方式传入 pArray = [msg.arguments objectAtIndex:1]; NSLog(@"cdId: %@ pArray: %@",cdId,pArray); // 如果使用Array方式传递参数 NSString *pResultString = [NSString stringWithFormat:@"%@ %@ %@ %@ %@ %@ %@",[pArray objectAtIndex:0],[pArray objectAtIndex:1], [pArray objectAtIndex:2],[pArray objectAtIndex:3],[pArray objectAtIndex:4], [pArray objectAtIndex:5],[pArray objectAtIndex:6]]; NSLog(@"pResultString: %@",pResultString); //可以直接调用所导入的静态库里面的方法 NSString *UUID = [ZQDeviceSDK Prn_GetPortList:1]; NSString *port = [UUID stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; [self startPrintText:pArray andUUID:port]; // 运行Native代码结果和预期相同,调用回调通知JS层运行成功并返回结果 PDRPluginResult *result = [PDRPluginResult resultWithStatus:PDRCommandStatusOK messageAsString:pResultString]; // 如果Native代码运行结果和预期不同,需要通过回调通知JS层出现错误,并返回错误提示// PDRPluginResult *resultError = [PDRPluginResult resultWithStatus:PDRCommandStatusError messageAsString:@"出错了!"]; //通知JS层Native层运行结果,JS Pluginbridge会根据cbid找到对应的回调方法并触发 [self toCallback:cdId withReslut:[result toJSONString]]; } }
在js中的函数
document.addEventListener( "plusready", function(){ // 声明的JS“扩展插件别名” var _BARCODE = 'plugintest',B = window.plus.bridge; var plugintest ={ // 声明异步返回方法 // 通知Native层plugintest扩展插件运行”PluginTestFunction”方法 //参数为所需传入原生的参数 PluginTestFunctionArrayArgu : function (Argus, successCallback, errorCallback ){ var success = typeof successCallback !== 'function' ? null : function(args) { successCallback(args); }, fail = typeof errorCallback !== 'function' ? null : function(code) { errorCallback(code); }; callbackID = B.callbackId(success, fail); //这里写上原生中的异步方法名 return B.exec(_BARCODE, "PluginTestFunctionArrayArgu", [callbackID, Argus]); } window.plus.plugintest = plugintest; }, true );
在H5中调用的代码
plus.plugintest.PluginTestFunctionArrayArgu( printData, function( result ) { mui.alert( result ); },function(result){ mui.alert(result) });
大致的开发流程就值这个样子,其实真正麻烦的并是不代码而是IDE的各种调试..
下面就是把H5项目导入Xcode来实现离线打包了,在项目的manifest.json中,修改appid,使其与Xcode中的appid一致,Version和Build对应version下的name和code
将manifest.json中的中文注释全部删除,然后把H5项目导入到Pandora下的www目录中,记住,把项目下的所有文件导入到www下,而不是项目文件夹直接导入到www下,那样运行会打不开App。
把www上一级的文件夹名称改为Appid一致的名称,修改图标可以把图标放入HBuilder中可以生成相应尺寸的图标..这点儿用着非常亲民..之前iOS开发都是去找美工要的..接着修改项目名称等我就不再一一说了。
【相关推荐】
1. 免费h5在线视频教程
2. HTML5 完整版手册
以上是H5项目开发iOS插件功能的实例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5开发需要掌握的工具和框架包括Vue.js、React和Webpack。1.Vue.js适用于构建用户界面,支持组件化开发。2.React通过虚拟DOM优化页面渲染,适合复杂应用。3.Webpack用于模块打包,优化资源加载。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5通过语义化元素和ARIA属性提升网页的可访问性和SEO效果。1.使用、、等元素组织内容结构,提高SEO。2.ARIA属性如aria-label增强可访问性,辅助技术用户可顺利使用网页。

"h5"和"HTML5"在大多数情况下是相同的,但它们在某些特定场景下可能有不同的含义。1."HTML5"是W3C定义的标准,包含新标签和API。2."h5"通常是HTML5的简称,但在移动开发中可能指基于HTML5的框架。理解这些区别有助于在项目中准确使用这些术语。

H5,即HTML5,是HTML的第五个版本,它为开发者提供了更强大的工具集,使得创建复杂的网页应用变得更加简单。H5的核心功能包括:1)元素允许在网页上绘制图形和动画;2)语义化标签如、等,使网页结构清晰,利于SEO优化;3)新API如GeolocationAPI,支持基于位置的服务;4)跨浏览器兼容性需要通过兼容性测试和Polyfill库来确保。

如何创建 H5 链接?确定链接目标:获取 H5 页面或应用程序的 URL。创建 HTML 锚点:使用 <a> 标记创建锚点并指定链接目标URL。设置链接属性(可选):根据需要设置 target、title 和 onclick 属性。添加到网页:将 HTML 锚点代码添加到希望链接出现的网页中。

解决 H5 兼容问题的方法包括:使用响应式设计,允许网页根据屏幕尺寸调整布局。采用跨浏览器测试工具,在发布前测试兼容性。使用 Polyfill,为旧浏览器提供对新 API 的支持。遵循 Web 标准,使用有效的代码和最佳实践。使用 CSS 预处理器,简化 CSS 代码并提高可读性。优化图像,减小网页大小并加快加载速度。启用 HTTPS,确保网站的安全性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。