我正在使用Firebase Cloud Messaging向Android和iOS设备发送推送通知。在Android上,一切正常。在iOS上,我也可以收到通知,但是我的iPhone上存在一个非常奇怪的问题。我的工作:
现在,该应用程序将按预期方式打开。 但是由于某种原因,通知现在在应用程序内显示为警报(或类似内容)。而且不可能消除它!
以下是此过程的一些屏幕截图:
在我的Android设备上执行相同的步骤时,该应用也会同时打开,但没有显示“警报”或其他任何内容。该应用程序照常启动。
我的目标是删除此应用内通知。我只希望应用在点击推送通知时照常启动。
在iPhone 6
和iOS 12.3.1
上进行了测试。
将"react-native-firebase": "^5.5.4"
与"react-native": "^0.59.9"
一起使用。
自定义应用代码:
除了请求用户获得接收推送通知和获取Firebase消息传递令牌所需的权限外,我没有任何特殊的应用程序端代码。
我已经尝试做的事情:
定义一个onMessage
处理程序,以最终覆盖正在创建此警报的任何默认处理程序。没有帮助。
非常感谢您!
答案 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];
}
删除此自定义代码后,一切正常。