Как я могу получить токен expo вместо токена ios при вызове addPushTokenListener?

#push-notification #firebase-cloud-messaging #apple-push-notifications #expo #expo-notifications

#push-уведомление #firebase-облако-обмен сообщениями #apple-push-уведомления #expo #expo-уведомления

Вопрос:

Я работаю с уведомлениями expo, все работает нормально, пока я не понял, что каким-то образом мне нужно обновить токен expo, вызвав Notifications.addPushTokenListener, поскольку expo обновляет новый, а старый перестает работать. это то, что я сделал.

 // with this I get an expo token Ok
let token = await Notifications.getExpoPushTokenAsync();
// type expo
{
    data: "ExponentPushToken[6CoxIjM15ilo2_ZDTWzeTh]"
    type: "expo"
}

// but when I want to retrieve on refreshed token I get an IOS token
Notifications.addPushTokenListener(function(response){
    console.log(response);
});
// I get an IOS type token and I do not need that, I need an expo token eventough I am in a ios physical device
{
    data: "a9ee9433ea8a3e883cb7f5f1eb0d1bada4eed5473713153534aa2abb5cf6268f"
    type: "ios"
}
  

Что мне нужно, так это обновленный токен «expo» вместо IOS, поскольку я работаю с expo.

Тот же токен для push-уведомлений expo? требуется ли «addPushTokenListener» только для FCM / APN?

Ответ №1:

Попробуйте вызвать getExpoPushTokenAsync() в прослушивателе push-токенов!

 import * as Notifications from 'expo-notifications';

Notifications.addPushTokenListener(response => {
  Notifications.getExpoPushTokenAsync().then(expoTokenResponse => {
    // ... do stuff
  });
});
  

или

 Notifications.addPushTokenListener(async () =>
  const expoTokenResponse = await Notifications.getExpoPushTokenAsync();
  // ... do stuff
});