繁体   English   中英

使用 Swift 在 iOS 8 中为应用程序图标添加徽章

[英]Add badge to app icon in iOS 8 with Swift

我想在我的应用程序图标上设置一个徽章,就像在苹果的邮件应用程序中一样(图标顶部的数字)。 我怎样才能在 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

在此处输入图片说明

2019年

答案很简单

UIApplication.shared.applicationIconBadgeNumber = 777

不幸的是,除非您先征得许可,否则它不会起作用

要做到这一点,您只需:

UNUserNotificationCenter.current().requestAuthorization(options: .badge)
     { (granted, error) in
          if error == nil {
              // success!
          }
     }

ericgu的回答似乎已经过时了。 看起来像这样 -> | 被替换了。

这是一个有效的Swift 2代码:

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

编辑:斯威夫特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
  }
UIApplication.shared.applicationIconBadgeNumber = NotifCount

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM