第一次推送通知在几秒钟后消失

时间:2017-05-23 10:54:17

标签: ios swift push-notification

当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
   }

}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

该问题是由于手动设置徽章编号引起的。我的应用程序中有代码,可以在应用程序启动时手动设置徽章编号(根据情况将其设置为0或保存在NSUserDefaults中的值),发现执行上述任一操作都会导致通知横幅消失并且声音消失会中断中间通知。为了解决这个问题,我检查了applicationState,如果它是UIApplicationStateBackground,我没有触摸徽章编号。

因此,根据上面的代码,或者删除didFinishLaunching中的行以将标志设置为0,或者确保在设置为0之前应用程序状态不是背景。

我在这里发布了类似的答案: https://stackoverflow.com/a/53381819/2788608