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

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

3 ответов


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

есть много способов изменить значок значка приложения. Большинство случаев использования включают установку этого, когда приложение находится в фоновом режиме, чтобы предупредить пользователя о том, что есть некоторые изменения, которые могут их заинтересовать. Это будет включать 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


ericgu, кажется, быть устаревшими. похоже, что это -> | заменено.

вот работает Swift 2 код:

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

Edit: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
    }  
}

enter image description here


на 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
  }