Я работал над функцией запроса на добавление в друзья для моего собственного приложения, и я хотел уведомить пользователя (отправителя) с помощью облачного сообщения, если запрос был принят. Он успешно работает на Android, и я получаю уведомление на устройстве, но iOS не работает.
Это моя облачная функция для приема запросов на добавление в друзья:
//======================ACCEPT REQUEST==========================//
exports.onAcceptRequest = functions.https.onCall((data, context) => {
const targetId = data.targetId;
const senderId = data.senderId;
return admin
.firestore()
.collection('Friendships')
.doc()
.set({
targetId: targetId,
senderId: senderId,
timeStamp: new Date(),
})
.then(() => {
console.log('Befriended');
notifySenderId(senderId);
return null;
//NOTIFICATION SENT TO uid2(senderId)
})
.catch(err => console.log('errrrrr', err));
});
function notifySenderId(senderId) {
return admin
.firestore()
.collection('Users')
.doc(`${senderId}`)
.get()
.then(doc => {
var tokens = Object.keys(doc.data().fcmTokens);
console.log('TOKENS: ', tokens);
return tokens;
})
.then(tokens => {
console.log('tokens: ', tokens);
const payload = {
notification: {
title: 'Friend Request Accepted',
body: 'Hi add me to a group',
sound: 'default',
},
};
return admin.messaging().sendToDevice(tokens, payload);
})
.then(() => console.log('notified senderId of Acceptance'))
.catch(err => console.log('err notifying senderId', err));
}
На iOS в облакеФункция успешно выполняется в бэкэнде (как показано в журналах функций ниже), но не отображает уведомления на устройстве, хотя я разрешил уведомления в настройках.
Я не использую никакую библиотеку для отображения уведомлений,Я ожидаю, что FCM отобразит уведомление автоматически (работает на Android).
Журнал облачных функций: ![enter image description here](https://i.stack.imgur.com/Sh3Vj.png)
РЕДАКТИРОВАТЬ: Решено! Я узнал, что fcmTokens может меняться со временем, обновление токена в базе данных решило мою проблему.
Но у меня есть дополнительный вопрос: как мы отслеживаем обновление токенов на устройстве ??