【问题标题】:Can't dismiss push notification shown in app无法关闭应用中显示的推送通知
【发布时间】:2019-11-18 07:30:28
【问题描述】:

我正在使用 Firebase Cloud Messaging 向 Android 和 iOS 设备发送推送通知。在 Android 上,一切都按预期工作。在 iOS 上,我也可以收到通知,但我的 iPhone 上有一个相当奇怪的问题。我的工作:

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

现在,应用程序按预期打开。 但由于某种原因,通知现在在应用程序内显示为警报(或类似的东西)。并且无法关闭它!

这里是这个过程的一些截图:

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

我的目标是删除此应用内通知。我只想让应用在点击推送通知时像往常一样启动。

iPhone 6iOS 12.3.1 上测试。

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

自定义应用代码:

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

我已经尝试过的事情:

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

非常感谢您!

【问题讨论】:

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


    【解决方案1】:

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

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

    警报(和操作表)会在操作内部的任何按钮触摸时自动关闭。所以不需要额外的代码来关闭,但你必须为你的UIAlertController指定至少一个UIAlertAction

    【讨论】:

    • 非常感谢您的回答。我还认为可能是因为缺少操作按钮,所以我尝试在消息的action-loc-key 字段中发送不同的值。但它没有帮助。但是,由于您的提示,我发现问题是该项目以前开发人员的一些自定义代码,因为我对代码库相对较新。谢谢!
    • 不客气。如果我是 React-Native 程序员,我会发布代码。
    【解决方案2】:

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

    这个应用内提醒的起源只是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];
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多