привет, я новичок в том, чтобы реагировать на родные. Я просто тестирую push-уведомления на Android. но нет вибрации или звука, когда я тестирую свое устройство Android через клиент expo.
Однако, когда я открываю приложение на своих устройствах Android через клиент expo, push-уведомление действительно появляется, но не было ни звука, ни вибрации, хотя я уже установил для них значение true.
я хочу сделать уведомление, чем уведомлять пользователя каждый день в 8 утра, даже если приложение закрыто, могу ли я это сделать ??
async componentWillMount() {
let result = await Permissions.getAsync(Permissions.NOTIFICATIONS);
if (result.status === "granted" && this.state.switchStatus) {
console.info("Notification permissions granted.");
this.setNotifications();
} else {
console.info("No Permission", Constants.lisDevice);
}
this.listenForNotifications();
}
getNotification(date) {
const localNotification = {
title: `Notification at ${date.toLocaleTimeString()}`,
body: "N'oubliez pas de prendre tes medicament",
ios: {
sound: true
},
android: {
sound: true,
priority: "max",
sticky: false,
vibrate: true
}
};
return localNotification;
}
setNotifications() {
Notifications.cancelAllScheduledNotificationsAsync();
for (let i = 0; i < 64; i++) {
//Maximum schedule notification is 64 on ios.
let t = new Date();
if (i === 0) {
t.setSeconds(t.getSeconds() + 1);
} else {
t.setMinutes(t.getMinutes() + 1 + i * 1);
}
const schedulingOptions = {
time: t
};
Notifications.scheduleLocalNotificationAsync(
this.getNotification(t),
schedulingOptions
);
}
}
listenForNotifications = () => {
Notifications.addListener(notification => {
console.info("received notification", notification);
});
};





я нашел решение для звука и вибрации, это не самое лучшее, как я сказал, я новичок в RN, но все же это работает (я использовал это: «создать канал Android Async»)
async componentWillMount() {
let result = await Permissions.getAsync(Permissions.NOTIFICATIONS);
if (result.status === "granted" && this.state.switchStatus) {
// i add this :
if (Platform.OS === 'android') {
Notifications.createChannelAndroidAsync('chat-messages', {
name: 'Chat messages',
sound: true,
vibrate: true,
});
}
console.info("Notification permissions granted.");
this.setNotifications();
} else {
console.info("No Permission", Constants.lisDevice);
}
this.listenForNotifications();
}
getNotification(date) {
const localNotification = {
title: `Notification at ${date.toLocaleTimeString()}`,
body: "N'oubliez pas de prendre tes medicament",
ios: {
sound: true
},
android: {
"channelId": "chat-messages" //and this
}
};
return localNotification;
}
setNotifications() {
Notifications.cancelAllScheduledNotificationsAsync();
for (let i = 0; i < 64; i++) {
//Maximum schedule notification is 64 on ios.
let t = new Date();
if (i === 0) {
t.setSeconds(t.getSeconds() + 1);
} else {
t.setMinutes(t.getMinutes() + 1 + i * 1); // 15 Minutes
}
const schedulingOptions = {
time: t
};
Notifications.scheduleLocalNotificationAsync(
this.getNotification(t),
schedulingOptions
);
}
}
listenForNotifications = () => {
Notifications.addListener(notification => {
console.info("received notification", notification);
});
};
Спасибо! этот код предназначен только для решения проблемы неполучения уведомлений. так что теперь вам нужно планировать уведомления в соответствии с вашими потребностями, и это будет работать. извините за поздний ответ ^^
В моем случае я разрешил звук уведомлений (настройки -> уведомления -> имя вашего приложения -> звук -> разрешить), и послесловие работало нормально
В файле app.json добавьте
android:{useNextNotificationApi:true }
Добро пожаловать. Можете ли вы добавить немного больше контекста о том, как это помогает, и некоторую справочную информацию. Это может помочь в будущих поисках понять предназначенное решение.
Моя проблема с отсутствием вибрации на Android (хорошо в IOS) была такой:
Vibration.vibrate([100]);
Где это должно быть
Vibration.vibrate();
Большое спасибо! Ваш код отлично работает для меня, но приходят только первые одно или два уведомления, а затем он останавливается. Любая идея, почему это может быть?