Android H5+SDK插件开发

前言:

        阅读该文档需要Android和前端H5两种技术支持,使用Android Studio和HBuilder两个开发工具.

        工作中有H5+SDK插件开发的需求,于是通过查看DCloud官网,自己总结出了关于H5+SDK插件开发的详细步骤;看过DCloud官网的文档的同学肯定都会骂gf,看DCloud官网的文档简直就是一种摧残,当你第一遍看完文档,根本不知道写的是什么,也看不明白说的是什么意思,于是,福利来了,以下就是本人通过工作中项目的研究,总结出了一个超级详细的H5+SDK插件开发步骤,先告诉同学插件开发不是很难,主要是js和原生api的对应关系,废话不多说,上干货!!!上干货!!!上干货!!!

先附上Demo地址:H5+SDK桌面角标插件

步骤1:配置Android最精简离线打包工程

            查阅Android创建最精简离线打包工程,配置好Android最精简离线打包工程;

步骤2:引入第三方扩展功能

            1>.在lib目录导入要用到功能的jar包;

            2>.添加要用功能的依赖;

            3>.要依赖的module库;

            以上三种方式任选一种根据自己需求自行添加,简言之就是添加要开发插件使用的第三方功能库

步骤3:开发扩展插件类BadgeFeature文件

            该类必须要继承io.dcloud.common.DHInterface.StandardFeature这个类,包名路径是固定的,有图有真相

步骤4:自定义扩展方法

        方法名自定义,参数固定,必须是IWebview和JSONArray两个参数,有图有真相,方法体内写你要调用的原生api;

步骤5:开发扩展插件badge.js文件

开发js文件是为了调用原生api,截图截不全就贴代码吧,js模板可用该模板,具体逻辑可以根据自己需求自行修改,代码示例如下:

document.addEventListener('plusready',function () {   //固定模板,不用修改

    var _BARCODE ='Badge' // ① 插件名称(很重要),变量名和字符串值可自定义

      var B = window.plus.bridge //②固定模板,不用修改,

        var BadgePlugin = { //③变量名可自定义

            //该模板做了简单的封装,因为需要调用的逻辑比较简单,而且参数一致,该方法中的参数根据自己需求修改

            callNative:function (fname, args, successCallback) { 

            var callbackId =this.getCallbackId(successCallback,this.errorCallback) //固定模板,不用修改

            //该if条件是对参数的判断

            if (args !=null) {

                args.unshift(callbackId)

            }else {

            var args = [callbackId]

            }

            return B.exec(_BARCODE, fname, args)  //一个很重要的方法,第一个参数_BARCODE是插件名,同注释①的变量名一致;第二个参数fname是js方法名,第三个参数是要传递的参数;

        },

//模板回调方法,可不用修改

    getCallbackId:function (successCallback) {

            var success =typeof successCallback !=='function' ?null :function (args) {

            successCallback(args)

            }

        return B.callbackId(success,this.errorCallback)

    },

//模板回调方法,可不用修改

    errorCallback:function (errorMsg) {

            console.log('Javascript callback error: ' + errorMsg)

    },

//自定义js方法,但是必须要和扩展类的的方法名称一致,否则无法调用原生api

    setBadge:function (count) {

            this.callNative('setBadge', [count],null)  //第一个参数方法名称字符串,必须和方法名一致,参数二是要传递的参数

    },

//自定义方法,对应扩展类的另一个方法,方法名同样要保持一致

     removeBadge:function () {

            this.callNative('removeBadge',null,null)

            }

   }

        window.plus.Badge = BadgePlugin //固定模板,示例:window.plus.插件名 = 同注释③变量名一致

},true)

步骤6:添加权限

            HBilder项目的manifest.json文件的perminsion节点下配置插件名称(步骤5中注释①等号后的字符串值),必须和js文件中的插件名称一致,描述信息可以随便写;

步骤7:声明插件类别名(权限名)和插件类的对应关系

步骤8:使用

            在要使用的html页面中引入扩展js文件后,在PlusReady方法中调用扩展js文件中的方法

以上就是关于H5+SDK插件开发的详细步骤,第一次写文档,有不足之处欢迎指教!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,994评论 19 139
  • 我们的领导是一个非常好的人,我们的关系相处的也是比较融洽。春节前一个多月里就找我商量给员工送礼的事情。在年关的时候...
    快乐的健身阅读 1,132评论 0 0
  • 接二连三的事情只有好心态和好精力才能应对。这周最大收获不忘记锻练目标,让身体有了抵抗力。每天给自己一点精神鸡汤,上...
    刘牙牙阅读 166评论 0 0
  • 孵化营到了最后几天,感觉心里很沉重,不知道是我想多了,还是怎么的,老是觉得老师们不要我了。 加人思涵创业平台两年以...
    笑看风云_9628阅读 273评论 0 5
  • 开篇语 笔者目前算是一个WEB方向的踽踽前行的小菜鸟,但是也是现在手上有两台云服务器在手的人了,网站也做了两个了,...
    张照博阅读 3,940评论 10 31

友情链接更多精彩内容