当app位于notification
时,即使用户未对background
采取任何操作,我的应用优先notification
也会在几秒后消失。之后,每个notification
仍然存在。
将应用badge number
设置为0或取消local
notifications
是否会对此产生任何影响。(我尝试评论这些部分,但没有修复)。
`func application(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)
-> Bool {
Fabric.with([Crashlytics.self])
registerForPushNotifications(application)
application.registerForRemoteNotifications()
//Firebase push notification
FIRApp.configure()
// Add observer for InstanceID token refresh callback.
NSNotificationCenter.defaultCenter().addObserver(self,
selector: #selector(self.tokenRefreshNotification),
name: kFIRInstanceIDTokenRefreshNotification,
object: nil)
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
}
}`
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
guard let aps = userInfo["aps"] as? [String: AnyObject] else{
return
}
let state = UIApplication.sharedApplication().applicationState
if state == .Background || state == .Inactive{
//do some background work
}
}
非常感谢任何帮助。
答案 0 :(得分:1)
该问题是由于手动设置徽章编号引起的。我的应用程序中有代码,可以在应用程序启动时手动设置徽章编号(根据情况将其设置为0或保存在NSUserDefaults中的值),发现执行上述任一操作都会导致通知横幅消失并且声音消失会中断中间通知。为了解决这个问题,我检查了applicationState
,如果它是UIApplicationStateBackground
,我没有触摸徽章编号。
因此,根据上面的代码,或者删除didFinishLaunching
中的行以将标志设置为0,或者确保在设置为0之前应用程序状态不是背景。
我在这里发布了类似的答案: https://stackoverflow.com/a/53381819/2788608