Я пытаюсь отправить push-уведомления через Quickblox с моего сервера. Код, который делает это, выглядит следующим образом:Как отправить push-уведомления формы javascript с помощью quickblox
app.post('/requests', function(req, res) {
var mobileNumber = req.param('mobile_number');
if (typeof mobileNumber === 'undefined') {
return res.badRequest("Parameters missing: [mobile_number]");
}
var query = {
international_number: mobileNumber
}
User.findOne(query, function(err, user) {
if (err) {
return res.dbError(err);
}
if (!user) {
console.log("User not found");
return res.apiError("NOT_FOUND");
}
var request = new Request();
request.sender_id = req.user._id;
request.receiver_id = user._id;
request.status = 'pending';
request.save(function(err) {
if (err) {
return res.dbError(err);
}
var response = {};
response.image_url = user.image_url;
response.id = request._id;
// ¡TODO! Notify the end user -- Quickblox
QB.createSession(function(err, result) {
if (err) {
console.log(err);
return res.apiError();
}
console.log("**** SESSION CREATE ****")
console.log(result);
var params = {
login: req.user.qb_username,
password: req.user.qb_password
}
console.log("LOGIN PARAMS");
console.log(params);
QB.login(params, function(err, result) {
if (err) {
console.log(err);
return res.apiError();
}
console.log("**** USER LOGIN ****")
console.log(result);
var params = {
notification_type: 'push',
environment: 'production',
user : {
ids: user.qb_id
},
message: 'SSBsb3ZlIE0mTSdzISBFc3BlY2lhbGx5IHJlZCBvbmUh',
push_type: user.device.notification_channel
}
console.log("EVENTS CREATE PARAMS");
console.log(params);
QB.messages.events.create(params, function(err, result) {
if (err) {
console.log(err);
return res.apiError();
}
console.log("**** MESSAGE EVENT CREATE ****");
console.log(result);
console.log(result.event.subscribers_selector);
QB.messages.events.list(function(err, result) {
if (err) {
console.log(err);
return res.apiError();
}
console.log(result);
console.log("**** EVENTS LIST ****");
console.log(result.items);
res.apiSend(response);
});
});
});
});
});
});
});
Обратите внимание, что я регистрирую ответ после каждого запроса Quickblox. Таким образом, журнал после QB.messages.events.create() заключается в следующем:
**** MESSAGE EVENT CREATE ****
{ event:
{ active: true,
application_id: 18113,
created_at: '2015-01-13T10:32:45Z',
date: null,
end_date: null,
event_type: 'one_shot',
id: 1809320,
message: 'data.message=SStsb3ZlK00lMjZNJTI3cyUyMStFc3BlY2lhbGx5K3JlZCtvbmUlMjE=',
name: null,
occured_count: 0,
period: null,
updated_at: '2015-01-13T10:32:45Z',
user_id: 2185263,
notification_channel: { name: 'gcm' },
subscribers_selector:
{ environment: 'production',
tags_query: null,
user_ids: [Object] } } }
и когда я список событий с помощью QB.messages.events.list() я получаю следующий ответ:
{ current_page: 1,
per_page: 10,
total_entries: 19,
items:
[ { event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] },
{ event: [Object] } ] }
Поэтому в нем говорится, что в очереди сообщений есть 19 записей, и все кажется ОК. Однако, когда я вхожу в учетную запись Quickblox и проверяю очередь сообщений, он всегда пуст, и поэтому никакие сообщения не планируются для отправки. Также обратите внимание, что подписки показывают, что пользователи подписались на push-уведомления, такие как «gcm» и «apns». Может ли кто-нибудь помочь мне узнать, почему это происходит, пожалуйста?
http://quickblox.com/developers/Messages #Messages_API - У вас есть: A) Создал токен для пользователя и B) Подписывал их для push-уведомлений? QB не добавит их в очередь, если нет доступных (подписанных) пользователей для их отправки. –