ios - 我想在应用程序的非事件模式下接收通知时在主应用程序图标上增加角标(Badge)

标签 ios objective-c react-native push-notification apple-push-notifications

我正在开发 react-native iOS 中的聊天应用程序。我想在收到通知、应用程序被杀死或用户强制退出时在主应用程序图标上进行标记增量。当应用程序处于后台模式时,它运行良好。但是 didReceiveRemoteNotification 当应用程序处于非事件状态时,不会调用方法。对此有任何想法吗?我在 中添加了代码didReceiveRemoteNotification AppDelegate 的方法。

在 AppDelegate 文件中添加了以下代码集

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
      [RNNotifications didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
    }

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
      [RNNotifications didFailToRegisterForRemoteNotificationsWithError:error];
    }

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    NSLog(@"APPDELEGATE: didReceiveRemoteNotification:fetchCompletionHandler %@", userInfo);
  int badge = (int) application.applicationIconBadgeNumber;
  if ( application.applicationState == UIApplicationStateInactive ) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  else if(application.applicationState == UIApplicationStateBackground) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  else if(application.applicationState == UIApplicationStateActive) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  completionHandler(UIBackgroundFetchResultNewData);
}

最佳答案

您需要创建一个 UNNotificationServiceExtension当应用程序处于后台/被杀死时处理通知。

这是一个小型应用程序,将在收到通知时执行,并且在将其内容呈现给用户之前编辑其内容的时间有限。

当您在 didReceive(_:withContentHandler:) 中收到通知时委托(delegate)回调你可以修改badge UNNotificationContent 的值

关于ios - 我想在应用程序的非事件模式下接收通知时在主应用程序图标上增加角标(Badge),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61585292/

相关文章:

ios - 如何将 NSOperationQueue 内部的 NSData 分配给 NSOperationQueue 外部的 NSData

iphone - iOS 6 Facebook 登录不刷新访问 token

ios - 如何分配标签文本属性以显示数组中的字符串?

javascript - ReferenceError 因为变量没有被传递

ios - 使用Unity3d中的更改更新xcode项目

android - 如何在react-native应用程序中打开网站(Android和iOS)

jquery - 带有 jQ​​uery-Mobile 的 webview IOS 中的 href 属性

objective-c - 为什么这个 sin 方法会返回错误的答案?

react-native - 任何状态更改时的 FlatList ScrollView 错误 - 不变违规 : Changing onViewableItemsChanged on the fly is not supported

webview - react-native webview 嵌入 youtube 视频在 Android 中没有全屏选项