Я хотел бы установить значок значка моего приложения, например, в приложении apple mail (номер поверх значка). Как я могу сделать это в Swift (iOS8)?
Добавить значок в значок приложения в iOS 8 с Swift
Ответ 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
Ответ 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
}