我正在使用https://github.com/zo0r/react-native-push-notification
来获取推送通知,并且当应用程序为Active
或Background
时,onNotification可以正常工作,但是我收到通知时杀死应用程序,我只会收到通知,并且不会触发onNotification,任何人都可以帮助我寻找解决方案,但是没有任何效果,当onNotification被触发时,我正在增加Android徽章计数,还有一种方法来增加Android徽章该应用程序被杀死了吗?
"react-native": "0.55.3",
"react-native-push-notification": "3.0.2"
我的代码
const options = {
// (optional) Called when Token is generated (iOS and Android)
onRegister: (token) => {
this._TOKEN = token.token;
this._addToPushChannels(channel);
},
onNotification: (notification) => {
console.log(notification);
if (notification['foreground']) {
}
//Notification from the background or when the app is killed
if (!notification['foreground']) {
if (Platform.OS !== 'ios' && Platform.Version < 26) {
this._messageCount++;
// console.log('this._messageCount ', this._messageCount);
let BadgeAndroid = require('react-native-android-badge');
BadgeAndroid.setBadge(this._messageCount);
}
}
// required on iOS only (see fetchCompletionHandler docs: https://facebook.github.io/react-native/docs/pushnotificationios.html)
notification.finish(PushNotificationIOS.FetchResult.NewData);
},
// ANDROID ONLY: GCM Sender ID (optional - not required for local notifications, but is need to receive remote push notifications)
senderID: this._SENDER_ID,
// 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
*/
requestPermissions: true,
};
PushNotification.configure(options);
答案 0 :(得分:3)
我不是很肯定,但是当我记得正确杀死(别名强制关闭)时,某个应用会禁用Android(GCM)推送通知网关中的onNotification功能(与iOS / APNS不同)。这是Android的一项功能,是有意创建的,因此愿意强迫关闭其应用程序的用户不会因通知而“烦恼”。重新启动电话或重新打开应用程序后,Xtify服务将重新启动并接收消息。
您可以做的是先期安排通知。例如,WhatsApp经常在强制关闭应用程序时提醒诸如:“您可能有新的通知”之类的通知,以提醒用户重新打开该应用程序。
参考文献:
答案 1 :(得分:0)
[1] https://stackoverflow.com/a/37845174/3607191
[2] https://stackoverflow.com/a/47857531/3607191
您可以在JS端调用无头函数来更新批计数,这是您必须要做的。在这里,问题在于您必须编写一些Java代码。
FirebaseMessagingService
的服务。HeadlessJsTaskService
来调用无头JS函数来编写一项服务。请参阅[3]的RNPushNotificationActionService.java
文件。onMessageReceived
函数中的[1]中所述,请调用您在步骤2中编写的本机服务以调用无头JS函数。要知道如何做,请参考[3]的RNPushNotificationActionHandlerReceiver.java
文件。