How to correctly set application badge value in iOS 8?

前端 未结 5 1748
故里飘歌
故里飘歌 2020-12-24 06:38

Old method

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:count];

is now gives error Attempting to badge the applic

5条回答
  •  佛祖请我去吃肉
    2020-12-24 07:26

    I write a class to handle it when I use swift:

    class ZYUtility
    {
        /// Set badge
        class func setApplicationBadgeNumber(badge: Int) {
            if ZYUtility.SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO("8.0") {
                if UIApplication.sharedApplication().currentUserNotificationSettings().types & UIUserNotificationType.Badge != nil {
                    UIApplication.sharedApplication().applicationIconBadgeNumber = badge
                } else {
                    println("No permission to set badge number")
                }
            } else {
                UIApplication.sharedApplication().applicationIconBadgeNumber = badge
            }
        }
    
        /// System check
        class func SYSTEM_VERSION_EQUAL_TO(version: String) -> Bool {
            return UIDevice.currentDevice().systemVersion.compare(version,
                options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedSame
        }
    
        class func SYSTEM_VERSION_GREATER_THAN(version: String) -> Bool {
            return UIDevice.currentDevice().systemVersion.compare(version,
                options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedDescending
        }
    
        class func SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version: String) -> Bool {
            return UIDevice.currentDevice().systemVersion.compare(version,
                options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedAscending
        }
    
        class func SYSTEM_VERSION_LESS_THAN(version: String) -> Bool {
            return UIDevice.currentDevice().systemVersion.compare(version,
                options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedAscending
        }
    
        class func SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(version: String) -> Bool {
            return UIDevice.currentDevice().systemVersion.compare(version,
                options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedDescending
        }
    }
    

提交回复
热议问题