Подтвердить что ты не робот

Добавить значок в значок приложения в iOS 8 с Swift

Я хотел бы установить значок значка моего приложения, например, в приложении apple mail (номер поверх значка). Как я могу сделать это в Swift (iOS8)?

4b9b3361

Ответ 1

"Номер поверх значка" называется значком. Значки могут быть установлены на нескольких вещах, помимо значков приложений, включая значки панели инструментов панели навигации.

Существует много способов изменить значок значка приложения. Большинство случаев использования включают настройку этого, когда приложение находится в фоновом режиме, чтобы предупредить пользователя о том, что есть некоторые изменения, которые могут быть им интересны. Это будет включать push-уведомление.

Подробнее об этом см.: https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

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

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert |
        UIUserNotificationType.Badge, categories: nil
        ))

application.applicationIconBadgeNumber = 5

enter image description here

Ответ 2

Ответ ericgu кажется устаревшим. выглядит так → | был заменен.

Вот рабочий Swift 2 код:

    let badgeCount: Int = 0
    let application = UIApplication.sharedApplication()
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Badge, .Alert, .Sound], categories: nil))        
    application.applicationIconBadgeNumber = badgeCount

Изменить: Swift 3:

import UIKit
import UserNotifications

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let badgeCount: Int = 10
        let application = UIApplication.shared
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
            // Enable or disable features based on authorization.
        }
        application.registerForRemoteNotifications()
        application.applicationIconBadgeNumber = badgeCount
    }  
}

введите описание изображения здесь

Ответ 3

Для iOS10, Swift 3 с обратной совместимостью вы можете обернуть лучшие ответы в приятную (статическую) служебную функцию:

class func setBadgeIndicator(badgeCount: Int) {
    let application = UIApplication.shared
    if #available(iOS 10.0, *) {
      let center = UNUserNotificationCenter.current()
      center.requestAuthorization(options: [.badge, .alert, .sound]) { _, _ in }
    } else {
      application.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))
    }
    application.registerForRemoteNotifications()
    application.applicationIconBadgeNumber = badgeCount
  }