2017-02-20 2 views
-1

Как я могу сделать фоновый вызов API при получении уведомления для обновления значка значка вкладки в swift 2.3?Как обновить значение значка tabBar при получении уведомления

Я использую следующий код для обновления значения жетона на удаленное оповещение:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    pushDictionary = userInfo 

    NSNotificationCenter.defaultCenter().postNotificationName("PushNotification", object: self, userInfo: userInfo) 

    let pushNotification = PushNotification(dictionary: pushDictionary!) 
    notification.subtitleText = pushNotification.message 

    if application.applicationState == UIApplicationState.Inactive { 

     if pushNotification.type != nil { 
      if pushNotification.type == "vc1"{ 
       self.tabBarViewController.selectedIndex = 0 
       self.tabBarViewController.tabBar.items![0].badgeValue = "1" 
       self.tabBarViewController.selectedViewController?.viewWillAppear(true) 
      } 
      if pushNotification.type == "vc2"{ 
       self.tabBarViewController.selectedIndex = 1 
      } 
      if pushNotification.type == "vc3"{ 
       self.tabBarViewController.selectedIndex = 2 
      } 
     } 
    } 

Я хочу то значение значок будет увеличиваться при получении уведомления, если пользователь находится на переднем плане и фона. Заранее спасибо

Я обновляю значение жетона в ViewController:

let unreadFeeds = feedsDictionary?.objectForKey("UnReadFeeds") as! NSInteger 
     if unreadFeeds > 0 { 

     self.tabBarController?.tabBar.items?[0].badgeValue = String(unreadFeeds) 
       if #available(iOS 10.0, *) { 
        self.tabBarController?.tabBar.items![0].badgeColor = UIColor(red: 219/255.0, green: 90/255.0, blue: 41/255.0, alpha: 1) 
       } else { 
        // Fallback on earlier versions 
       } 
+0

Пожалуйста, добавьте немного исходный код на ваш вопрос. – ventiseis

+0

Теперь я хочу обновить значение значка автоматически (приращение, если есть какой-либо существующий значок) для IndexPath = 0, когда пользователь получает новое уведомление, если он находится на переднем плане или в фоновом режиме @ventiseis –

ответ

1

Всякий раз, когда пользователь получить уведомление, то вы получите обратный вызов по методу удаленного уведомления делегата. Обновите значок табуляции там, как показано ниже.

self.tabBarController?.tabBar.items![0].badgeValue = "YourBadgeValue" 

если ваш контроллер представления находится внутри navigation controller, вы должны использовать

self.navigationController!.tabBarItem.badgeValue = "YourBadgeValue" 
Смежные вопросы