iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >H5项目如何开发iOS插件功能
  • 625
分享到

H5项目如何开发iOS插件功能

2024-04-02 19:04:59 625人浏览 安东尼
摘要

这篇文章主要为大家展示了“H5项目如何开发iOS插件功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H5项目如何开发ioS插件功能”这篇文章吧。

这篇文章主要为大家展示了“H5项目如何开发iOS插件功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H5项目如何开发ioS插件功能”这篇文章吧。

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开发都是去找美工要的..接着修改项目名称等我就不再一一说了。

以上是“H5项目如何开发iOS插件功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: H5项目如何开发iOS插件功能

本文链接: https://www.lsjlt.com/news/81633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • H5项目如何开发iOS插件功能
    这篇文章主要为大家展示了“H5项目如何开发iOS插件功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H5项目如何开发iOS插件功能”这篇文章吧。 ...
    99+
    2024-04-02
  • 如何使用jQuery插件开发发送短信倒计时功能
    小编给大家分享一下如何使用jQuery插件开发发送短信倒计时功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现的主要功能如下...
    99+
    2024-04-02
  • thinkphp5如何开发项目
    今天小编给大家分享一下thinkphp5如何开发项目的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。环境配置ThinkPHP5...
    99+
    2023-07-05
  • 如何开发MyBatis插件
    本篇内容介绍了“如何开发MyBatis插件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.MyBatis...
    99+
    2024-04-02
  • 如何开发jQuery插件
    今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip...
    99+
    2023-06-26
  • Springboot插件如何开发
    本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-06-30
  • 如何在PHP项目中实现邮件发送和通知功能?
    如何在PHP项目中实现邮件发送和通知功能?在当今互联网时代,邮件已成为人们日常生活中不可或缺的一部分。对于PHP开发者来说,实现邮件发送和通知功能在许多项目中是非常常见的需求。本文将介绍如何在PHP项目中实现邮件发送和通知功能,并提供一些实...
    99+
    2023-11-02
    邮件发送 PHP项目 通知
  • php如何实现插件功能
    本篇内容主要讲解“php如何实现插件功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现插件功能”吧!php实现插件功能:1、新建函数文件“function.php”,代码内容是“f...
    99+
    2023-07-04
  • Android开发中项目实现一个画板功能
    这期内容当中小编将会给大家带来有关Android开发中项目实现一个画板功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。效果图如下XML布局代码<RelativeLayout xmlns:andro...
    99+
    2023-05-31
    android roi
  • Spring+Redis+RabbitMQ开发限流和秒杀项目功能
    目录一、项目概述二、基于Redis的Lua脚本分析Lua脚本的特性在Redis中引入Lua脚本Lua脚本的返回值和参数分支语句三、实现限流和秒杀功能创建项目并编写配置文件编写启动类和...
    99+
    2024-04-02
  • VsCode工具开发vue项目必装插件清单(推荐!)
    目录1.概述2.VsCode插件清单2.1.Vetur插件让vue文件代码高亮2.2.Vue VSCode Snippets自动生成vue模板内容插件1.安装插件2.使用插件生成vu...
    99+
    2024-04-02
  • umi插件开发仿dumi项目实现markdown文件转为页面
    目录引言处理导入错误loader返回渲染函数添加react处理loader用ts来写loader改变原来的loader创建新的loader配置webpack引言 前面我们已经成功将...
    99+
    2023-01-28
    umi markdown文件转页面 umi markdown markdown文件转页面
  • umi插件开发仿dumi项目加载markdown文件实现详解
    目录引言为什么不能直接展示markdownchainWebpackwebpack loader实现过程新建插件新建loader新建测试文档运行项目解决文件加载类型错误webpack ...
    99+
    2023-01-28
    umi插件加载markdown文件 markdown文件加载
  • 如何开发node.js博客项目
    小编给大家分享一下如何开发node.js博客项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需要安装的模块body-parse...
    99+
    2024-04-02
  • asp.net如何开发微信派发现金红包/H5网页抢红包功能
    这篇文章将为大家详细讲解有关asp.net如何开发微信派发现金红包/H5网页抢红包功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、网页版抢红包功能,前端先做好抢红包的页面;后台配置微信公众号的app...
    99+
    2023-06-14
  • 如何快速开发Firefox插件
    这期内容当中小编将会给大家带来有关如何快速开发新浪微博的Firefox插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Firefox的插件机制对于一个Firefox插件...
    99+
    2024-04-02
  • springboot项目整合注册功能模块开发实战
    目录工程简介准备工作:第一步:注册功能的实现1.1持久层的设计1.2注册功能-业务层1.3控制层1.4前端页面的设计注册功能实现完成工程简介 准备工作: 项目所用到的html界面以及...
    99+
    2022-11-13
    springboot项目整合 springboot注册模块
  • 如何使用Javascript插件开发
    这篇文章将为大家详细讲解有关如何使用Javascript插件开发,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。该怎样架构?对于架构这个概念,接触的比较少,我的理解,架构就...
    99+
    2024-04-02
  • 小程序插件如何开发
    本文小编为大家详细介绍“小程序插件如何开发”,内容详细,步骤清晰,细节处理妥当,希望这篇“小程序插件如何开发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  插件是对一组 js 接口或自定义组件的封装,用于提供给...
    99+
    2023-06-26
  • Go开发Gin项目添加jwt功能实例详解
    目录啥是JWT为什么要用在你的Gin中使用JWTJWT的基本原理JWT TOKEN怎么组成HeaderBase64URLPayloadSignature解密过程一些特点(优点和缺点)...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作