首页 > 代码库 > cordova的android notify消息通知插件

cordova的android notify消息通知插件

最近在学习用CORDOVA(PHONEGAP)结合SENCHA TOUCH开发应用,想实现一个安卓下的消息通知功能,这个可以通过CORDOVA的插件来实现。

插件目录结构如下:

notifyplugin

  • plugin.xml
  • www/notifysrv.js
  • src/android/NotifysrvPlugin.java
  • libs/android-support-v4.jar

先编写plugin.xml

<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"    id="com.elon.cordova.plugin" version="0.0.1">    <name>NotifysrvPlugin</name>    <description>NotifysrvPlugin Description</description>    <author>elon</author>    <license>Apache 2.0 License</license>    <engines>        <engine name="cordova" version=">=3.0.0" />    </engines>    <js-module src="http://www.mamicode.com/www/notifysrv.js" name="notifysrv">        <clobbers target="Notify" />    </js-module>    <platform name="android">        <source-file src="http://www.mamicode.com/src/android/NotifysrvPlugin.java"         target-dir="src/com/elon/cordova/plugin" />        <config-file target="res/xml/config.xml" parent="/*">            <feature name="NotifysrvPlugin">                <param name="android-package" value="http://www.mamicode.com/com.elon.cordova.plugin.NotifysrvPlugin"/>            </feature>        </config-file>        <config-file target="AndroidManifest.xml" parent="/*">            <uses-permission android:name="android.permission.VIBRATE" />        </config-file>    </platform></plugin>

NotifysrvPlugin.java

package com.elon.cordova.plugin;import org.apache.cordova.CordovaPlugin;import org.apache.cordova.CallbackContext;import org.apache.cordova.CordovaWebView;import org.apache.cordova.CordovaInterface;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.support.v4.app.NotificationCompat;public class NotifysrvPlugin extends CordovaPlugin {    public static final String TAG = "NotifysrvPlugin";    public static final String iconname = "icon";//icon res name        public NotificationManager nm;    public Context m_context;    public void initialize(CordovaInterface cordova, CordovaWebView webView) {        super.initialize(cordova, webView);        m_context = this.cordova.getActivity().getApplicationContext();        nm = (NotificationManager) m_context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);    }    @Override    public boolean execute(String action, JSONArray args,     CallbackContext callbackContext) throws JSONException {        if ("send".equals(action)) {            String title = args.getString(0);              String text = args.getString(1);              PendingIntent  m_PendingIntent=PendingIntent.getActivity(this.cordova.getActivity(),                      0, this.cordova.getActivity().getIntent(), 0);            int iconResID = m_context.getResources().getIdentifier(iconname,"drawable", m_context.getPackageName());            Notification notification = new NotificationCompat.Builder(m_context)            .setContentTitle(title)            .setContentText(text)            .setDefaults(Notification.DEFAULT_ALL) //设置默认铃声,震动等            .setSmallIcon(iconResID)            .setContentIntent(m_PendingIntent)            .setAutoCancel(true)        //    .setLargeIcon(aBitmap)            .build();                        nm.notify(1, notification);            callbackContext.success();            return true;        }        return false;    }}

notifysrv.js

var argscheck = require(‘cordova/argscheck‘);var exec = require(‘cordova/exec‘);var Notify = function() {};Notify.prototype.send = function(message, success, error) {    //argscheck.checkArgs(‘AFF‘, ‘notify.send‘, arguments);     console.log("send notification["+message[1]+"]");    if(!message)        error && error("please input message");    else        exec(success, error, ‘NotifysrvPlugin‘, ‘send‘, message);};var notify = new Notify();module.exports = notify;

将插件加入cordova工程的办法

进入CMD,进入cordova工程文件夹,然后输入如下命令

     cordova plugin add  [插件目录]

使用本插件的方法:

            var msg = ["新消息标题","新的消息内容"];            Notify.send(msg,function(){                console.log("成功");              },function(msg){                  console.log(msg || "失败");              });      

 

cordova的android notify消息通知插件