Add pushId back to GCM payload
This commit is contained in:
@@ -23,15 +23,17 @@ describe('GCM', () => {
|
|||||||
var data = {
|
var data = {
|
||||||
'alert': 'alert'
|
'alert': 'alert'
|
||||||
};
|
};
|
||||||
|
var pushId = 'pushId';
|
||||||
var timeStamp = 1454538822113;
|
var timeStamp = 1454538822113;
|
||||||
var timeStampISOStr = new Date(timeStamp).toISOString();
|
var timeStampISOStr = new Date(timeStamp).toISOString();
|
||||||
|
|
||||||
var payload = GCM.generateGCMPayload(data, timeStamp);
|
var payload = GCM.generateGCMPayload(data, pushId, timeStamp);
|
||||||
|
|
||||||
expect(payload.priority).toEqual('normal');
|
expect(payload.priority).toEqual('normal');
|
||||||
expect(payload.timeToLive).toEqual(undefined);
|
expect(payload.timeToLive).toEqual(undefined);
|
||||||
var dataFromPayload = payload.data;
|
var dataFromPayload = payload.data;
|
||||||
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
||||||
|
expect(dataFromPayload['push_id']).toEqual(pushId);
|
||||||
var dataFromUser = JSON.parse(dataFromPayload.data);
|
var dataFromUser = JSON.parse(dataFromPayload.data);
|
||||||
expect(dataFromUser).toEqual(data);
|
expect(dataFromUser).toEqual(data);
|
||||||
done();
|
done();
|
||||||
@@ -42,16 +44,18 @@ describe('GCM', () => {
|
|||||||
var data = {
|
var data = {
|
||||||
'alert': 'alert'
|
'alert': 'alert'
|
||||||
};
|
};
|
||||||
|
var pushId = 'pushId';
|
||||||
var timeStamp = 1454538822113;
|
var timeStamp = 1454538822113;
|
||||||
var timeStampISOStr = new Date(timeStamp).toISOString();
|
var timeStampISOStr = new Date(timeStamp).toISOString();
|
||||||
var expirationTime = 1454538922113
|
var expirationTime = 1454538922113
|
||||||
|
|
||||||
var payload = GCM.generateGCMPayload(data, timeStamp, expirationTime);
|
var payload = GCM.generateGCMPayload(data, pushId, timeStamp, expirationTime);
|
||||||
|
|
||||||
expect(payload.priority).toEqual('normal');
|
expect(payload.priority).toEqual('normal');
|
||||||
expect(payload.timeToLive).toEqual(Math.floor((expirationTime - timeStamp) / 1000));
|
expect(payload.timeToLive).toEqual(Math.floor((expirationTime - timeStamp) / 1000));
|
||||||
var dataFromPayload = payload.data;
|
var dataFromPayload = payload.data;
|
||||||
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
||||||
|
expect(dataFromPayload['push_id']).toEqual(pushId);
|
||||||
var dataFromUser = JSON.parse(dataFromPayload.data);
|
var dataFromUser = JSON.parse(dataFromPayload.data);
|
||||||
expect(dataFromUser).toEqual(data);
|
expect(dataFromUser).toEqual(data);
|
||||||
done();
|
done();
|
||||||
@@ -62,16 +66,18 @@ describe('GCM', () => {
|
|||||||
var data = {
|
var data = {
|
||||||
'alert': 'alert'
|
'alert': 'alert'
|
||||||
};
|
};
|
||||||
|
var pushId = 'pushId';
|
||||||
var timeStamp = 1454538822113;
|
var timeStamp = 1454538822113;
|
||||||
var timeStampISOStr = new Date(timeStamp).toISOString();
|
var timeStampISOStr = new Date(timeStamp).toISOString();
|
||||||
var expirationTime = 1454538822112;
|
var expirationTime = 1454538822112;
|
||||||
|
|
||||||
var payload = GCM.generateGCMPayload(data, timeStamp, expirationTime);
|
var payload = GCM.generateGCMPayload(data, pushId, timeStamp, expirationTime);
|
||||||
|
|
||||||
expect(payload.priority).toEqual('normal');
|
expect(payload.priority).toEqual('normal');
|
||||||
expect(payload.timeToLive).toEqual(0);
|
expect(payload.timeToLive).toEqual(0);
|
||||||
var dataFromPayload = payload.data;
|
var dataFromPayload = payload.data;
|
||||||
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
||||||
|
expect(dataFromPayload['push_id']).toEqual(pushId);
|
||||||
var dataFromUser = JSON.parse(dataFromPayload.data);
|
var dataFromUser = JSON.parse(dataFromPayload.data);
|
||||||
expect(dataFromUser).toEqual(data);
|
expect(dataFromUser).toEqual(data);
|
||||||
done();
|
done();
|
||||||
@@ -82,17 +88,19 @@ describe('GCM', () => {
|
|||||||
var data = {
|
var data = {
|
||||||
'alert': 'alert'
|
'alert': 'alert'
|
||||||
};
|
};
|
||||||
|
var pushId = 'pushId';
|
||||||
var timeStamp = 1454538822113;
|
var timeStamp = 1454538822113;
|
||||||
var timeStampISOStr = new Date(timeStamp).toISOString();
|
var timeStampISOStr = new Date(timeStamp).toISOString();
|
||||||
var expirationTime = 2454538822113;
|
var expirationTime = 2454538822113;
|
||||||
|
|
||||||
var payload = GCM.generateGCMPayload(data, timeStamp, expirationTime);
|
var payload = GCM.generateGCMPayload(data, pushId, timeStamp, expirationTime);
|
||||||
|
|
||||||
expect(payload.priority).toEqual('normal');
|
expect(payload.priority).toEqual('normal');
|
||||||
// Four week in second
|
// Four week in second
|
||||||
expect(payload.timeToLive).toEqual(4 * 7 * 24 * 60 * 60);
|
expect(payload.timeToLive).toEqual(4 * 7 * 24 * 60 * 60);
|
||||||
var dataFromPayload = payload.data;
|
var dataFromPayload = payload.data;
|
||||||
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
expect(dataFromPayload.time).toEqual(timeStampISOStr);
|
||||||
|
expect(dataFromPayload['push_id']).toEqual(pushId);
|
||||||
var dataFromUser = JSON.parse(dataFromPayload.data);
|
var dataFromUser = JSON.parse(dataFromPayload.data);
|
||||||
expect(dataFromUser).toEqual(data);
|
expect(dataFromUser).toEqual(data);
|
||||||
done();
|
done();
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ function GCM(args) {
|
|||||||
* @returns {Object} A promise which is resolved after we get results from gcm
|
* @returns {Object} A promise which is resolved after we get results from gcm
|
||||||
*/
|
*/
|
||||||
GCM.prototype.send = function(data, devices) {
|
GCM.prototype.send = function(data, devices) {
|
||||||
|
let pushId = cryptoUtils.newObjectId();
|
||||||
// Make a new array
|
// Make a new array
|
||||||
devices = new Array(...devices);
|
devices = new Array(...devices);
|
||||||
let timestamp = Date.now();
|
let timestamp = Date.now();
|
||||||
@@ -52,7 +53,8 @@ GCM.prototype.send = function(data, devices) {
|
|||||||
expirationTime = data['expiration_time'];
|
expirationTime = data['expiration_time'];
|
||||||
}
|
}
|
||||||
// Generate gcm payload
|
// Generate gcm payload
|
||||||
let gcmPayload = generateGCMPayload(data.data, timestamp, expirationTime);
|
// PushId is not a formal field of GCM, but Parse Android SDK uses this field to deduplicate push notifications
|
||||||
|
let gcmPayload = generateGCMPayload(data.data, pushId, timestamp, expirationTime);
|
||||||
// Make and send gcm request
|
// Make and send gcm request
|
||||||
let message = new gcm.Message(gcmPayload);
|
let message = new gcm.Message(gcmPayload);
|
||||||
|
|
||||||
@@ -107,9 +109,10 @@ GCM.prototype.send = function(data, devices) {
|
|||||||
* @param {Number|undefined} expirationTime A number whose format is the Unix Epoch or undefined
|
* @param {Number|undefined} expirationTime A number whose format is the Unix Epoch or undefined
|
||||||
* @returns {Object} A promise which is resolved after we get results from gcm
|
* @returns {Object} A promise which is resolved after we get results from gcm
|
||||||
*/
|
*/
|
||||||
function generateGCMPayload(coreData, timeStamp, expirationTime) {
|
function generateGCMPayload(coreData, pushId, timeStamp, expirationTime) {
|
||||||
let payloadData = {
|
let payloadData = {
|
||||||
'time': new Date(timeStamp).toISOString(),
|
'time': new Date(timeStamp).toISOString(),
|
||||||
|
'push_id': pushId,
|
||||||
'data': JSON.stringify(coreData)
|
'data': JSON.stringify(coreData)
|
||||||
}
|
}
|
||||||
let payload = {
|
let payload = {
|
||||||
|
|||||||
Reference in New Issue
Block a user