写一个phonegap插件

本文介绍了使用PhoneGap(Cordova)进行混合应用开发时如何创建插件以便于与原生代码交互。通过示例代码展示了插件的实现步骤,包括在Eclipse中配置插件类、修改config.xml文件及在JavaScript中调用插件。

我的博客网站:http://www.zeromike.net

本文地址:http://www.zeromike.net/?p=58

 

在使用phonegap或者说叫cordova进行hybrid开发的时候,肯定需要和原生代码进行交互,因此需要开发一个插件来完成两者之间的交互,下面我给出示意性代码。将建好的cordova项目导入eclipse中,我下一篇会写如何建立cordova项目。

 

插件开发链接:http://docs.phonegap.com/en/3.5.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

 

         Warning:中文文档千万别看,还是繁体,编程用词和大陆相差比较大,貌似是台湾翻译的吧,看了变SB了。。。

 

         需求:在客户端点击一个按钮,将一个字符串信息传到原生代码并通过回调方法显示出来。

 

   1.在src目录中建立插件类

        

package com.mike;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

public class MyPlugin extends CordovaPlugin {
	@Override
	public boolean execute(String action, JSONArray args,
			CallbackContext callbackContext) throws JSONException {
		if (action.equals("echo")) {
			String message = args.getString(0);
			this.echo(message, callbackContext);
			return true;
		}
		return false;
	}

	private void echo(String message, CallbackContext callbackContext) {
		if (message != null && message.length() > 0) {
			callbackContext.success(message);
		} else {
			callbackContext.error("Expected one non-empty string argument.");
		}
	}
}

 

   2.在res/confg.xml文件中加入

    

    <feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature> 
   	<!-- 设备 -->
    <feature name="Device" >
        <param  name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
   	<!-- 添加自定义插件 -->
    <feature name="MyPlugin" >
        <param name="android-package" value="com.mike.MyPlugin"/>
    </feature>

 

    3.在www/js/index.js文件中加入

    

var MyPlugin = function() {

};
MyPlugin.prototype.service ='MyPlugin';
MyPlugin.prototype.exec = cordova.require('cordova/exec');
MyPlugin.prototype.sayHello =  function(params,success) {
   this.exec(success, function(err) {success('Nothing to echo.');}, this.service, "echo", [params]);
};

 

exec的执行方法参数介绍:

第一个参数     success:方法执行成功时调用该方法

第二个参数    方法执行失败时调用该函数,可自定义该方法

第三个参数    插件名称,保证和config.xml中的插件名称一致就行(feature的name)

第四个参数   插件类中的调用的方法名称

第五个参数   [target, content]:一个数据,插件类中的参数JSONObject data

    4.在www/index.html代码

    

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <link rel="stylesheet" type="text/css" href="css/index.css" />
        <meta name="msapplication-tap-highlight" content="no" />
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>Apache CordovaHelelloo</h1>
             <div class="app">
            <h1>Apache Cordova</h1>
            <input type="button" value="test" onclick="test();" />
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript">
            var plugin = new MyPlugin();
            function test(){
            	   plugin.sayHello("zeromike", function(echoValue) {
            		     alert("hello,"+echoValue);
			     	       });
            }
        </script>
    </body>
</html>

 

    点击后结果:hello,zeromike

 

 

    原文链接:http://www.zeromike.net/?p=58
    原文作者:zeromike

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值