#ios #react-native #react-native-push-notification #react-native-fcm
Вопрос:
В моем приложении react я использую эти пакеты
"react-native-code-push": "^7.0.1",
"@react-native-community/push-notification-ios": "^1.8.0",
Проблема, с которой я сталкиваюсь (возможно, это не проблема и проблема с моим пониманием), заключается в том, что, когда я получаю толчок, приложение вызывает уведомление, даже если мое приложение закрыто и не взаимодействует. Это происходит только в IOS.
Вот мой код для обработки push-нотации
const _pushConfig = () => {
PushNotification.configure({
// (optional) Called when Token is generated (iOS and Android)
onRegister: async function (token) {
let pushToken = token.token
if (Platform.OS === 'ios') {
pushToken = await Storage.getString('IOSPushToken')
if (!pushToken amp;amp; pushToken !== '') {
let fcmToken = await apnsToFcm(token.token)
pushToken = fcmToken.results[0].registration_token
await Storage.setString('IOSPushToken', pushToken)
}
}
await Storage.setString('pushtoken', pushToken)
},
onNotification: _handleNotification,
// (optional) Called when Registered Action is pressed and invokeApp is false, if true onNotification will be called (Android)
onAction: function (notification) {
},
// (optional) Called when the user fails to register for remote notifications. Typically occurs when APNS is having issues, or the device is a simulator. (iOS)
onRegistrationError: function (err) {
console.error(err.message, err)
},
// IOS ONLY (optional): default: all - Permissions to register.
permissions: {
alert: true,
badge: true,
sound: true,
},
// Should the initial notification be popped automatically
// default: true
popInitialNotification: true,
/**
* (optional) default: true
* - Specified if permissions (ios) and token (android and ios) will requested or not,
* - if not, you must call PushNotificationsHandler.requestPermissions() later
* - if you are not using remote notification or do not have Firebase installed, use this:
* requestPermissions: Platform.OS === 'ios'
*/
requestPermissions: true,
})
createNotifcationChannel()
}
const _handleNotification = async notification => {
console.log('handle notification', notification)
try {
if (appState.Authorized amp;amp; !notification.userInteraction) {
}
// reduce the number of time we need to set state
if (notificationState.appNativeState === 'active') {
}
if (notification.userInteraction) {
_handleNotificationFromTray(notification)
return //handle opened from tray notification separately
}
if (appState.Authorized) {
}
} catch (ex) {
console.debug(ex)
}
}
Так это ошибка в библиотеке или я что-то делаю не так? Заранее спасибо за вашу помощь. 🙂