新手写的友盟的推送模块的Node.Js支持
发布于 8 年前 作者 scarletmu 6005 次浏览 来自 分享

简介

实习的公司有这个需求,但是NPM上的很久没有维护而且没有官方的Node支持,所以自己参照着PHP版本的写的…去年写的已经有段时间没有动了,最近需求又有了所以发布到了NPM上,准备也再好好的对代码进行维护一下。 因此发到这里希望大家能给点建议,毕竟我学Node刚刚半年,很多思路和语法都非常不成熟… 整体语法基于ES6的Class Github:https://github.com/scarletmu/UmengNode NPM:https://www.npmjs.com/package/umengpush-node

Usage

详细接口描述在官方文档 http://dev.umeng.com/push/android/api-doc#2 customizedcast推送未完全

Android Example

ATTENTION 对照官方文档在info内添加自己所需要的信息,所提供为必须字段

var Umeng = require('UmengNode');
var android = new Umeng();
android.initialize({
      platform: 'android',
      appKey: config.umeng.android.appKey,
      appMasterSecret: config.umeng.android.appSecret,
      production_mode: config.umeng.production_mode
});
var info = {
      timestamp: Date.now(),
      device_tokens: deviceToken,
      payload: {
	  //默认选择通知类型为Notification,需必填以下信息
        body: {
          "ticker": '通知栏的显示的文字',
          "title": '通知的标题',
          "text": '通知的内容',
		  ...//自行添加参数,默认after_open为go_app即打开APP		
        }
      }
    };
//调用响应方法
android.unicast(info, function (err, result) {
	...//回调处理					
});

iOS Example

ATTENTION 对照官方文档在info内添加自己所需要的信息,所提供为必须字段

var Umeng = require('UmengNode');
var ios = new Umeng();
ios.initialize({
    platform: 'ios',
    appKey: config.umeng.ios.appKey,
    appMasterSecret: config.umeng.ios.appSecret,
    production_mode: config.umeng.production_mode
});
var info = {
    timestamp: Date.now(),
    device_tokens: deviceToken,
    payload: {
	aps": {"alert": '通知内容'}// 苹果必填字段
	}
};
//调用响应方法
ios.unicast(info, function (err, result) {
	...//回调处理					
});

fileUpload

文件上传接口

var Umeng = require('UmengNode');
var file = new Umeng();
file.initialize({
      appKey: config.umeng.android.appKey,
});
var info = {
    timestamp: Date.now()
};
file.fileupload(info,function(err,result){
	...//回调处理
});

返回结果
{
	"ret":"SUCCESS/FAIL",
	"data": 
	{
		// 当"ret"为"SUCCESS"时
		"file_id":"xx" //再使用此file_id操作filecast

		// 当"ret"为"FAIL"时,包含参数如下:
		"error_code": "xx" //错误码详见官方附录I。
	}
}

Request callback(引用自官方)

{
	"ret":"SUCCESS/FAIL", // 返回结果,"SUCCESS"或者"FAIL"
	"data": 
	{
	// 当"ret"为"SUCCESS"时,包含如下参数:
    // 当type为unicast、listcast或者customizedcast且alias不为空时:
    "msg_id":"xx" 
    // 当type为于broadcast、groupcast、filecast、customizedcast
    且file_id不为空的情况(任务)
    "task_id":"xx"
	// 当"ret"为"FAIL"时,包含如下参数:
	"error_code":"xx" // 错误码详见官方附录I。
	}  
}
1 回复

同样实习,我学node才2个月吧。。 共勉

回到顶部