Добавить значок в значок приложения в 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
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
}
}
на 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
}