-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathindex.js
124 lines (112 loc) · 2.8 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
if (!window.Promise) {
require('es6-promise').polyfill();
}
/**
* Node.js 的事件类
*
* @external EventEmitter
* @see {@link https://nodejs.org/api/events.html}
*/
var EventEmitter = require('eventemitter3');
/**
* 信鸽 Cordova 服务类,用于注册。
*
* @class
* @extends external:EventEmitter
* @param {function} exec - cordova 插件接口
* @tutorial README.md
*/
function XGPush(exec) {
EventEmitter.call(this);
this.exec = exec;
this.registerPush();
this.registerReceiver(
this.eventSuccess.bind(this),
this.eventError.bind(this)
);
}
XGPush.prototype = new EventEmitter();
XGPush.SERVICE = 'XGPush';
XGPush.ACTION_REGISTER_PUSH = 'registerpush';
XGPush.ACTION_UNREGISTER_PUSH = 'unregisterpush';
XGPush.ACTION_ADD_LISTENER = 'addlistener';
XGPush.prototype.eventSuccess = function(results) {
console.log('receive message:', results);
this.emit('textmessage', results);
};
XGPush.prototype.eventError = function(err) {
console.log('receive error:', err);
this.emit('error', err);
};
XGPush.prototype.registerReceiver = function(success, error) {
var exec = this.exec;
exec(
success, error,
XGPush.SERVICE, XGPush.ACTION_ADD_LISTENER,
[]
);
};
/**
* 与信鸽服务注册。注册的时候可以填别名,按照别名发送时,只有经过注册的别名才会收到推送。
*
* 可以重复调用这个方法。如果变更别名,则替换原有注册的结果。
*
* @param {string} [alias] - 设备的别名
* @return {external:Promise} 判断是否成功的 Promise
* @example
* // 直接注册
* xgpush.registerPush().then(function() {
* console.log('success');
*
* }).catch(function(errCode) {
* console.log('oh no: ' + errCode);
* });
*
* // 带设备别名注册
* xgpush.registerPush('foo').then(function() {
* console.log('success');
*
* }).catch(function(errCode) {
* console.log('oh no: ' + errCode);
* });
*/
XGPush.prototype.registerPush = function(alias) {
var exec = this.exec;
return new Promise(function(resolve, reject) {
exec(
resolve, reject,
XGPush.SERVICE, XGPush.ACTION_REGISTER_PUSH,
[alias]
);
});
};
/**
* 取消注册
*
* @return {external:Promise} 完成后的回调
*/
XGPush.prototype.unregisterPush = function() {
var exec = this.exec;
return new Promise(function(resolve, reject) {
exec(
resolve, reject,
XGPush.SERVICE, XGPush.ACTION_UNREGISTER_PUSH,
[]);
});
};
/**
* 事件的处理回调
*
* @callback XGPush#EventListener
* @param {event} e - 事件内容
*/
/**
* 收到信鸽消息时的事件
*
* @event XGPush#textmessage
* @property {string} content - 消息正文内容
* @property {Object} customContent - 消息自定义 key-value
* @property {string} title - 消息标题
*/
module.exports = XGPush;
window._XGPush = XGPush;