开发cordova下的wp8插件

末鹿安然 提交于 2019-11-27 06:49:17

1、创建cs文件

在VS中,右键项目,添加新建项,选择类,给这个类命名,我们就叫他Exit.cs吧。

2、编辑cs文件

在文件里包含下面内容,这是cordova和C#代码沟通的桥梁:

using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;
using System.Windows;//最后这一行是要退出应用所需要的,一般的插件不必包含
cs文件的主体内容:
namespace myPlugins//命名空间自选
{
    public class Exit : BaseCommand//需要继承BaseCommand类,这里类名需要和文件名一致
    {
        public void exitApp(string options)
        //用public声明方法,返回值为void,传入的参数为字符串的
        {
            string optVal = null;

            try
            {
                optVal = JsonHelper.Deserialize<string[]>(options)[0];
                //因为js传过来的值都经过json编码过的,这里需要解码 
            }
            catch (Exception)
            {
                //异常处理
            }

            if (optVal == null)
            {
                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
            }
            else
            {
                Application.Current.Terminate();//重点,退出应用
                //返回状态,这里可以注释掉第二行,因为应用退出了,返回就没意义了。
                DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
            }
        }
    }
}

3、配置config.xml文件

在config.xml文件里的widget元素内加入:

<feature name="Exit">
    <param name="wp-package" value="myPlugins.Exit" />
</feature>

4、写js代码

var app = {
    location: 'index',
    initialize: function() {
        this.bindEvents();
    },
    // `load`, `deviceready`, `offline`, and `online`.
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function(){
        //注册返回按钮事件
        document.addEventListener('backbutton', app.onBackKeyDown, false);
    },
    onBackKeyDown: function(e){
        switch(app.location){
            case 'index':
	        navigator.notification.confirm(
		    '您确定要退出游戏吗?',
		    function(button){
		        if(button == 1){//点击了确定按钮
			    cordova.exec(
			        function(data){
				    //调用C#代码成功的回调函数
			        },
			        function(data){
				//调用C#代码失败的回调函数
			        },
			        'myPlugins.Exit',//插件类名
			        'exitApp',//插件方法名
			        ["string"]//要传递的参数
			    );
		        }
		    },
		    '提示',
		    ['确定', '取消']
	        );
            break;
        }
    }
};
app.initialize();


这里使用到了内置插件notification,还没安装的小伙伴可以到我上一篇博文里查看安装方法,点击这里

5、完工总结

这样就解决了cordova的wp8平台没提供退出应用的问题了。

当然,大家也可以基于这个例子,随心所欲地制作自己需要的插件,也可以使用plugman发布插件到互联网上分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!