仅在应用程序处于后台时隐藏 APN 通知?
Posted
技术标签:
【中文标题】仅在应用程序处于后台时隐藏 APN 通知?【英文标题】:Hide APN notification ONLY when app is in background? 【发布时间】:2016-08-20 18:45:26 【问题描述】:我将 Firebase 云消息传递用于我的推送通知,它在其后端使用 APN。
当应用在前台时,调用didReceiveRemoteNotification
并且不显示通知,完美。
当应用程序被杀死时,didReceiveRemoteNotification
不会被调用,但会显示通知,也可以。
但是,当应用程序处于后台时,didReceiveRemoteNotification
都会被调用并显示通知。如何隐藏它并只保留didReceiveRemoteNotification
被调用?
这是我的有效载荷的样子:
$fields = array(
'registration_ids' => $tokens,
'data' => $message,
'content_available' => true,
'priority' => 'high',
'notification' => array('body' => 'notifbody', 'title' => 'testtitle', 'sound' => 'default')
);
【问题讨论】:
你得到答案了吗?不可能吗? 【参考方案1】:试试这个。
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
UIApplicationState state = [application applicationState];
// user tapped notification while app was in background
if (state == UIApplicationStateInactive || state == UIApplicationStateBackground)
// go to screen relevant to Notification content
else
// App is in UIApplicationStateActive (running in foreground)
// perhaps show an UIAlertView
其次, 当您调用方法 - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types 时,您应该指明适当的参数类型。如果您想在系统收到您设备的推送通知时显示警报,那么您应该传递 UIRemoteNotificationTypeAlert。
您还可以组合类型并将其传递到该参数中:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge。
如果您不想从顶部收到警报,请删除警报。
希望对您有所帮助。
谢谢。
【讨论】:
这个方法在我的代码中是空的,我自己没有显示任何东西,APN生成并显示通知 你说的是来自ios顶部的通知中心的通知吗? @Gintas_ @Gintas_,现在检查答案,您可以在注册时设置您想要的通知类型。因此,您可以选择不选择警报,删除警报。 但是当应用程序被杀死时我需要提醒。只是不是在后台时 你能在终止前尝试改变类型吗,比如说 didAppTerminate 方法...以上是关于仅在应用程序处于后台时隐藏 APN 通知?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter IOS 通知的 FCM 在应用程序处于后台或终止时不显示
具有后台刷新功能的 APN。当 APN 被传递和通知被点击时,刷新调用了两次? [复制]