ios - 当我的应用程序打开时,我会收到横幅通知。我不想在我的应用打开时显示横幅
问题描述
我在我的 iOS 应用程序中使用 Firebase 通知,每当我收到通知时,即使应用程序打开,它也会显示为横幅。
当我们使用 iOS 原生远程通知方法时,这实际上不会发生。
我试图检查是否调用了默认的 iOS 方法,但它不起作用。
注册:
if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0")){
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if( !error ){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
}
else{
[application registerForRemoteNotifications];
}
对于设备令牌:
- (void)messaging:(nonnull FIRMessaging *)messaging didRefreshRegistrationToken:(nonnull NSString *)fcmToken {
// Note that this callback will be fired everytime a new token is generated, including the first
NSString* deviceTkn = [[NSString stringWithFormat:@"%@",fcmToken] stringByReplacingOccurrencesOfString:@"<" withString:@""];
}
接收通知:
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
//Called when a notification is delivered to a foreground app.
NSDictionary *userInfo = notification.request.content.userInfo;
completionHandler(UNNotificationPresentationOptionAlert);
}
请帮我解决这个问题
解决方案
在这里您设置演示样式警报,这就是显示横幅的原因。您应该根据苹果文档在完成处理程序中传递 UNNotificationPresentationOptionNone 。
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
//Called when a notification is delivered to a foreground app.
NSDictionary *userInfo = notification.request.content.userInfo;
completionHandler(UNNotificationPresentationOptionAlert);
}
推荐阅读
- java - 如何在调试器中查看 java.util.HashMap 子类中的字段?
- python - 如何创建要在模型 pandas python 中使用的汇总表
- java - 使用 Java SDK 列出阿里巴巴 OSS Bucket 中的所有对象
- laravel - 在 laravel 的构造函数中使用会话值
- project-reactor - 如何在本次测试中细化 stepVeriifer 的使用?
- c++ - int 数据如何以位为单位存储在内存中?不是右对齐吗?
- c# - 显示器上缺少 Unity 精灵,但在编辑器中显示
- elasticsearch - 在elasticsearch中使用function_score的术语过滤?
- hibernate - JPA - 尝试创建 NamedEntityGraph 以避免多重选择(具有 OneToOne 和 OneToMany 子级的父级)
- javascript - 使用 ```pm2 stop index.js``` 后 pm2 进程未重新启动