无法关闭应用中显示的推送通知

时间:2019-07-08 18:35:39

标签: ios react-native push-notification firebase-cloud-messaging react-native-firebase

我正在使用Firebase Cloud Messaging向Android和iOS设备发送推送通知。在Android上,一切正常。在iOS上,我也可以收到通知,但是我的iPhone上存在一个非常奇怪的问题。我的工作:

  1. 关闭我的应用。
  2. 从Firebase控制台发送测试通知到我的iOS设备。
  3. 在iPhone上接收通知。
  4. 点击通知以打开我的应用。

现在,该应用程序将按预期方式打开。 但是由于某种原因,通知现在在应用程序内显示为警报(或类似内容)。而且不可能消除它!

以下是此过程的一些屏幕截图:

Push notification as it should be Open the notification Push notification shown in-app which can't be dismissed

在我的Android设备上执行相同的步骤时,该应用也会同时打开,但没有显示“警报”或其他任何内容。该应用程序照常启动。

我的目标是删除此应用内通知。我只希望应用在点击推送通知时照常启动。

iPhone 6iOS 12.3.1上进行了测试。

"react-native-firebase": "^5.5.4""react-native": "^0.59.9"一起使用。

自定义应用代码:

除了请求用户获得接收推送通知和获取Firebase消息传递令牌所需的权限外,我没有任何特殊的应用程序端代码。

我已经尝试做的事情:

定义一个onMessage处理程序,以最终覆盖正在创建此警报的任何默认处理程序。没有帮助。

非常感谢您!

2 个答案:

答案 0 :(得分:1)

这不是因为通知本身。这是因为您提出了警报。

每个警报必须至少具有一个使用UIAlertAction生成的按钮。

在动作内的任何按钮触摸时,警报(和动作表)会自动关闭。因此,无需关闭其他代码,但是您必须UIAlertAction

指定至少一个UIAlertController

答案 1 :(得分:0)

我刚刚发现了问题所在-再次在这里发布有点太早了...

此应用内警报的起源只是我不知道的AppDelegate.m中的一些自定义代码,因为我对这个项目的代码库比较陌生。

详细地讲,存在此方法showPush,该方法已在负责接收推送通知的各种处理程序中调用:

- (void)showPush: (id)userInfo {
  NSString *title = userInfo[@"aps"][@"alert"][@"title"];
  NSString *message = userInfo[@"aps"][@"alert"][@"body"];
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
  [[[self window] rootViewController] presentViewController:alert animated:true completion:nil];
}

删除此自定义代码后,一切正常。