Quickblox를 통해 푸시 알림 메시지를 백엔드 서버에서 보내려고합니다. 이 작업을 수행하는 코드는 다음과 같습니다.quickblox를 사용하여 푸시 알림 양식 javascript를 보내는 방법
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 계정에 로그인하고 메시지 큐를 확인하면 메시지 큐는 항상 비어 있으므로 메시지를 보내지 않도록 예약됩니다. 구독은 'gcm'및 'apns'와 같은 푸시 알림 서비스에 가입 한 사용자를 보여줍니다. 아무도 내가 왜 이런 일이 일어나는지 알 수 없습니까?
http://quickblox.com/developers/Messages #Messages_API - A) 사용자를위한 푸시 토큰 생성 및 B) 푸시 알림에 대한 가입 QB는 구독 할 수있는 사용자가없는 경우 큐에 추가하지 않습니다. –