Отправка push-уведомлений с помощью Firebase и OneSignal
Не уверен, что это возможно, но у меня есть приложение Ionic 3, которое использует Firebase в качестве бэкэнда. Может быть, это только я, я не могу объединить логин Google, логин Facebook и push-уведомления в одном приложении. Уже несколько дней пытаюсь.
Мне удалось установить OneSignal и отправить push-уведомления на устройство Android, но я хочу отправлять их программно, используя токены, которые сохраняются для каждого устройства, а не из панели мониторинга OneSignal.
Это то, что я использую в облачных функциях Firebase для отправки уведомлений. Можно ли его изменить, чтобы отправить уведомление в OneSignal, а затем на каждое устройство?
`function sendFcm(userID, eventSnapshot, eventID) {
const getDeviceTokensPromise = admin.database().ref(`/fcmTokens/${userID}/`).once('value');
return Promise.all([getDeviceTokensPromise]).then(result => {
const tokensSnapshot = result[0];
const payload = {
"notification": {
"title": "Your invitation has arrived",
"body": eventSnapshot.name,
"sound": "default",
// "click_action": "FCM_PLUGIN_ACTIVITY",
"icon": "fcm_push_icon"
},
"data": {
"eventId": eventID,
"uid": userID,
"eventObj": JSON.stringify(eventSnapshot),
"notificationType": "newEventNotification"
}
};
const tokens = Object.keys(tokensSnapshot.val());
console.log(tokens);
// Send notifications to all tokens.
return admin.messaging().sendToDevice(tokens, payload).then(response => {
// For each message check if there was an error.
const tokensToRemove = [];
response.results.forEach((result, index) => {
console.log(tokens[index]);
const error = result.error;
if (error) {
console.error('Failure sending notification to', tokens[index], error);
// Cleanup the tokens which are not registered anymore.
if (error.code === 'messaging/invalid-registration-token' ||
error.code === 'messaging/registration-token-not-registered') {
tokensToRemove.push(tokensSnapshot.ref.child(tokens[index]).remove());
}
}
});
return Promise.all(tokensToRemove);
});
})
}`
1 ответ
Немного поиска я нашел API OneSignal. Кажется, мне просто нужно сохранить идентификатор игрока и отправить его или массив в массив onesignal.com/api/v1/notifications
, Более подробная информация здесь: https://documentation.onesignal.com/reference