Я пытаюсь отправить push-уведомление с помощью Expo, и я его получаю. Но на моем устройстве нет ни вибрации, ни звука, ни всплывающих окон. Я использую Galaxy S9 с Android 9. Я еще не пробовал на Iphone.
Push-уведомление отправляется nodejs, и пользователь, установивший приложение, получит push-уведомление. Пользовательский токен сохраняется в базе данных Firebase. Мне удалось сохранить и получить токен.
Ниже из экспозиции приложение
class App extends Component {
componentWillMount() {
firebase.initializeApp(config);
this.registerForPushNotificationsAsync();
}
async registerForPushNotificationsAsync(){
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
);
let finalStatus = existingStatus;
if (Platform.OS === 'android') {
Notifications.createChannelAndroidAsync('chat-messages', {
name: 'Chat messages',
sound: true,
priority: 'high', // was max
vibrate: [0, 250, 250, 250],
});
}
if (existingStatus !== 'granted') {
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
finalStatus = status;
}
Ниже от серверной части nodejs
function sendMessage(to, title, body) {
const expo = new Expo();
let messages = [];
messages.push({
to, // Expo user token
body,
data: { withSome: 'data' },
ios: {
sound: true
},
android: {
"channelId": "chat-messages" //and this
}
})
let chunks = expo.chunkPushNotifications(messages);
let tickets = [];
(async () => {
for (let chunk of chunks) {
try {
let ticketChunk = await expo.sendPushNotificationsAsync(chunk);
tickets.push(...ticketChunk);
} catch (error) {
console.error(error);
}
}
})();
}
Также можем ли мы перенаправить на веб-страницу, когда пользователь нажимает push-уведомление?