Appleのメールアプリのように、アプリのアイコンにバッジを設定したい(アイコンの上の数字)。 Swift(iOS8)でこれを行うにはどうすればよいですか?
「アイコンの上の数字」はバッジと呼ばれます。バッジは、ナビゲーションバーのツールバーアイコンなど、アプリケーションアイコン以外の多くの項目に設定できます。
アプリケーションアイコンバッジを変更するには多くの方法があります。ほとんどのユースケースでは、アプリケーションがバックグラウンドにあるときにこれを設定して、ユーザーに関心のある変更があることをユーザーに警告します。これにはプッシュ通知が含まれます。
詳細については、以下を参照してください: https://developer.Apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//Apple_ref/doc/uid/TP40008194-CH8-SW1
ただし、アプリがアクティブなときに変更することもできます。 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
編集: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
}
}
答えは単純です
UIApplication.shared.applicationIconBadgeNumber = 777
残念ながら、最初に許可を求めない限り、それは動作しませんです。
それを行うには、単純に:
UNUserNotificationCenter.current().requestAuthorization(options: .badge)
{ (granted, error) in
if error != nil {
// success!
}
}
iOS1、Swiftとbackward-compatibilityの場合、ベストアンサーをNice(静的)ユーティリティ関数にラップできます。
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
}