此SDK已停止维护,请开发者对接 RestApi V2
本章介绍了Node.js的消息推送方法,如何推送可详细阅读本章。
向单个clientid或别名用户推送消息。
注:个推使用clientid来标识每个独立的用户,每一台终端上每一个app拥有一个独立的clientid。
接口名称正常推送不需要传requestId,如果发生异常重试时将requestId传入,具体用法详见示例代码
pushMessageToSingle(message, target,requestId, callback)
这些需要向指定某个用户推送消息的场景,即需要使用对单个用户推送消息的接口。
pushMessageToSingle(message, target, callback)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
Message | object | 是 | 无 | 消息体 |
target | object | 是 | 无 | 推送目标 |
callback | function | 否 | 无 | 回调函数 |
callback(err,res)
参数名 | 必需 | 默认值 | 参数描述 |
---|---|---|---|
err | 是 | 无 | 错误 |
res | 是 | 无 | 返回信息 |
推送返回值详情查询,请点击Result返回值
'use strict';
var GeTui = require('./GT.push');
var Target = require('./getui/Target');
var SingleMessage = require('./getui/message/SingleMessage');
var NotificationTemplate = require('./getui/template/NotificationTemplate');
//采用"NodeJs SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可以自行替换
var APPID = '';
var APPKEY = '';
var MASTERSECRET = '';
var CID = '';
//别名推送方式
//var ALIAS = '';
var HOST = 'http://api.getui.com/apiex.htm';
var gt = new GeTui(HOST, APPKEY, MASTERSECRET);
gt.connect(function () {
pushMessageToSingle();
});
function pushMessageToSingle() {
var template = notificationTemplateDemo();
//单推消息体
var message = new SingleMessage({
isOffline: true, //是否离线
offlineExpireTime: 3600 * 12 * 1000, //离线时间
data: template //设置推送消息类型
});
//接收方
var target = new Target({
appId: APPID,
clientId: CID
//alias:ALIAS
});
target.setAppId(APPID).setClientId(CID);
//target.setAppId(APPID).setAlias(ALIAS);
gt.pushMessageToSingle(message, target, function(err, res){
if(err != null && err.exception != null && err.exception instanceof RequestError){
var requestId = err.exception.requestId;
console.log(err.exception.requestId);
//发送异常重传
gt.pushMessageToSingle(message,target,requestId,function(err, res){
console.log(err);
console.log(res);
});
}
});
}
function notificationTemplateDemo() {
var template = new NotificationTemplate({
appId: APPID,
appKey: APPKEY,
title: '请填写通知标题',
text: '请填写通知内容',
//logoUrl: 'http://wwww.igetui.com/logo.png',
isRing: true,
isVibrate: true,
isClearable: false,
transmissionType: 2,
transmissionContent: '测试离线'
});
return template;
}
上传clientid或别名列表,对列表中所有clientid或别名用户进行消息推送,如果仅对单个用户推送务必使用单推接口,否则会严重影响推送性能,如果对少量甚至几个用户推送同样的消息,建议使用单推实现,性能会更高
pushMessageToList(message, targets, callback)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
Message | object | 是 | 无 | 消息体 |
Targets | object | 是 | 无 | 推送目标列表 |
callback | function | 否 | 无 | 回调函数 |
推送具体返回值详情查询,请点击Result返回值
注:此接口有频次控制,申请修改请点击右侧“技术咨询”了解详情 。
'use strict';
var GeTui = require('./GT.push');
var Target = require('./getui/Target');
var BaseTemplate = require('./getui/template/BaseTemplate');
var NotificationTemplate = require('./getui/template/NotificationTemplate');
var ListMessage = require('./getui/message/ListMessage');
// http的域名
var HOST = 'http://api.getui.com/apiex.htm';
//https的域名
//var HOST = 'https://api.getui.com/apiex.htm';
//采用"NodeJs SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置
var APPID = '';
var APPKEY = '';
var MASTERSECRET = '';
var CID1 = ''; //请填入cid1
var CID2 = ''; //请填入cid2
//var ALIAS1 = ''; //请填入ALIAS1
//var ALIAS2 = ''; //请填入ALIAS2
var gt = new GeTui(HOST, APPKEY, MASTERSECRET);
pushMessageToList();
function pushMessageToList() {
//process.env.gexin_pushList_needDetails = true;
//process.env.gexin_pushList_needAsync=true;
//process.env.=true;
// var taskGroupName = 'test';
var taskGroupName = "toList任务组名";
var template = notificationTemplateDemo();
//定义"ListMessage"类型消息对象,设置消息内容模板、是否支持离线发送、以及离线消息有效期(单位毫秒)
var message = new ListMessage({
isOffline: true,
offlineExpireTime: 3600 * 12 * 1000,
data: template
});
gt.getContentId(message, taskGroupName, function (err, res) {
var contentId = res;
//接收方1
var target1 = new Target({
appId: APPID,
clientId: CID1
// alias:ALIAS1
});
//接收方2
var target2 = new Target({
appId: APPID,
clientId: CID2
// alias:ALIAS2
});
var targetList = [target1,target2];
console.log("getContentId", res);
gt.pushMessageToList(contentId, targetList, function (err, res) {
console.log(res);
});
});
}
function notificationTemplateDemo() {
var template = new NotificationTemplate({
appId: APPID,
appKey: APPKEY,
title: '请填写通知标题',
text: '请填写通知内容',
//logoUrl: 'http://wwww.igetui.com/logo.png',
isRing: true,
isVibrate: true,
isClearable: false,
transmissionType: 2,
transmissionContent: '测试离线'
});
return template;
}
getContentId(message,taskGroupName,callback)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
Message | object | 是 | 无 | 消息体 |
taskGroupName | string | 否 | 无 | 任务别名(详见任务组名推送),可为空 |
callback | function | 否 | 否 | 回调函数 |
注:此接口有频次控制,申请修改请点击右侧“技术咨询”了解详情 。
gt.getContentId(message, taskGroupName, function (err, res) {
var contentId = res;
//接收方1
var target1 = new Target({
appId: APPID,
clientId: CID
// alias:'_lalala_'
});
具体代码详见pushMessageToList代码实例
taskid被标识为无效
CancelContentId (taskId, callback)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
Taskid | String | 是 | 无 | 任务id(格式OSL-MMdd_XXXXXX) |
callback | function | 否 | 无 | 回调函数 |
'use strict';
var GeTui = require('./GT.push');
var Target = require('./getui/Target');
var HOST = 'http://api.getui.com/apiex.htm';
//采用"NodeJs SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可自行替换
var APPID = 'b03c5cfef65ed30108f0a3fd82c3f6b411';
var APPKEY = '110000';
var MASTERSECRET = 'a02a76119b20d4e31620d7597a3b4f35';
var CID = '289cf3a73ee6e37e456faa4582e96b2e';
var gt = new GeTui(HOST, APPKEY, MASTERSECRET);
gt.connect(function () {
gt.cancelContentId('11', function(err, res) {
console.log(res);
})
});
对单个指定应用的所有用户群发推送消息。注:个推使用AppID来标识每个独立的应用。
pushMessageToApp(message, taskidAlias, callback)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
Message | Object | 是 | 无 | 消息体 |
taskidAlias | String | 否 | 无 | 任务别名(详见任务组名推送),可为空 |
callback | function | 否 | 无 | 回调函数 |
result具体返回值详情查询,请点击Result返回值
注:此接口有频次控制,申请修改请点击右侧“技术咨询”了解详情 。
'use strict';
var GeTui = require('./GT.push');
var Target = require('./getui/Target');
var BaseTemplate = require('./getui/template/BaseTemplate');
var NotificationTemplate = require('./getui/template/NotificationTemplate');
var AppMessage = require('./getui/message/AppMessage');
// http的域名
var HOST = 'http://api.getui.com/apiex.htm';
//https的域名
//var HOST = 'https://api.getui.com/apiex.htm';
//采用"NodeJs SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置
var APPID = '';
var APPKEY = '';
var MASTERSECRET = '';
var gt = new GeTui(HOST, APPKEY, MASTERSECRET);
pushMessageToApp();
function pushMessageToApp() {
// var taskGroupName = 'test';
var taskGroupName = null;
var template = notificationTemplateDemo();
// 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)
var message = new AppMessage({
isOffline: true,
offlineExpireTime: 3600 * 12 * 1000,
data: template,
appIdList: [APPID]
// phoneTypeList: ['ANDROID','IOS'],
// provinceList: ['浙江','上海','北京'],
// tagList: ['开心'],
// speed: 10000
});
gt.pushMessageToApp(message, taskGroupName, function (err, res) {
console.log(res);
});
}
function notificationTemplateDemo() {
var template = new NotificationTemplate({
appId: APPID,
appKey: APPKEY,
title: '请填写通知标题',
text: '请填写通知内容',
//logoUrl: 'http://wwww.igetui.com/logo.png',
isRing: true,
isVibrate: true,
isClearable: false,
transmissionType: 2,
transmissionContent: '测试离线'
});
return template;
}
仅在wifi条件下才展示通知内容,2G/3G/4G等非wifi环境下,不显示推送内容,充分帮用户节省流量。
在message中设置setPushNetWorkType为1,推送时只有通过wifi登录在线的用户才收到消息,手机网络登录用户的消息进离线,等该用户wifi登录后才获取该条离线消息。
Tosingle(对单个用户推送消息)、tolist(对指定用户列表推送消息)、toapp(对指定应用群推消息)三个接口都支持wifi推送。
//1:wifi ,0:不限,默认不限
message.setPushNetWorkType(1);
'use strict';
var SingleMessage = require('./getui/message/SingleMessage');
var message = new SingleMessage();
message.setPushNetWorkType(1);
//或 var message = new SingleMessage({pushNetWorkType: 1});
具体推送详情代码请参考pushMessageToSingle代码实例
定速推送旨在解决个推群推系统在全量推送时速度过快,导致部分客户服务器连接压力过大的问题。提供接口设置让用户按自身情况控制推送速度。
在message中设置setSpeed为100,则全量送时个推控制下发速度在100条/秒左右。
只有toapp(对指定应用群推消息)支持定速推送。
message.setSpeed(100);
'use strict';
var AppMessage= require('./getui/message/AppMessage‘);
var message = new AppMessage ();
message. setSpeed(100);
//或 var message = new AppMessage ({speed: 100});
具体推送详情代码请参考pushMessageToApp代码实例
一个应用同时下发了n个推送任务,为了更好地跟踪这n个任务的推送效果,可以把他们组成一个任务组,在查询数据时,只需要输入该任务组名即可同时查到n个任务的数据结果。
命名同一个应用的不同taskid为同一个任务组名,任务组名由第三方填写。tolist(对指定用户列表推送消息)、toapp(对指定应用群推消息)接口支持该功能。
gt.getContentId(message, taskid别名, callback);
代码实例片段
gt.getContentId(message, taskGroupName, function (err, res) {
var contentId = res;
//接收方1
var target1 = new Target({
appId: APPID,
clientId: CID
// alias:'_lalala_'
});
具体推送代码详见pushMessageToList代码实例
gt.pushMessageToApp(message,taskid别名,callback);
具体推送详情代码请参考pushMessageToApp代码实例
以上文档对您是否有帮助?