Я разрабатываю локальный код уведомления. Я могу отображать номер значка в соответствии с количеством запущенных уведомлений, а также я могу сделать все значки равными 0, когда пользователь открывает уведомление, но если пользователь запускает приложение, значок не установлен в 0. Это установлен только на 0, когда пользователь открывает уведомление. Я прочитал несколько ответов & несколько статей и не смог найти решение. Для того, чтобы зарегистрировать свое локальное оповещение у меня есть следующий код -Значок значка значка значка приложения не меняется до нуля при запуске приложения, прикоснувшись к значку приложения
func addItem(item: TodoItem)
{
// persist a representation of this todo item in NSUserDefaults
var todoDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey(ITEMS_KEY) ?? Dictionary()// if todoItems hasn't been set in user defaults, initialize todoDictionary to an empty dictionary using nil-coalescing operator (??)
todoDictionary[item.UUID] = ["deadline" : item.deadline, "title" : item.title, "UUID" : item.UUID]// store NSData representation of todo item in dictionary with UUID as key
NSUserDefaults.standardUserDefaults().setObject(todoDictionary, forKey: ITEMS_KEY)
let notification = UILocalNotification()
notification.alertBody = "Todo Item \"\(item.title)\" Is Overdue" // text that will be displayed in the notification
notification.alertAction = "open" // text that is displayed after "slide to..." on the lock screen - defaults to "slide to view"
notification.fireDate = item.deadline // todo item due date (when notification will be fired)
notification.soundName = UILocalNotificationDefaultSoundName // play default sound
notification.userInfo = ["title": item.title, "UUID": item.UUID] // assign a unique identifier to the notification so that we can retrieve it later
let nextbadge = (UIApplication.sharedApplication().scheduledLocalNotifications?.count)! + 1
notification.applicationIconBadgeNumber = nextbadge//here I provide an incremental badge number to my local notification.
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
В моем классе appdelagate
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification)
{
NSNotificationCenter.defaultCenter().postNotificationName("ToDoListShouldtRefresh", object: self)
application.applicationIconBadgeNumber = 0;
}
Сейчас в объективном CI обычно делают так, чтобы очистить значки на запуск приложения -
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Handle launching from a notification
UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (locationNotification) {
// Set icon badge number to zero
application.applicationIconBadgeNumber = 0;
}
return YES;
}
Я пытался что-то подобное, но с напрасными -
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
application.registerUserNotificationSettings(UIUserNotificationSettings (forTypes:[.Alert, .Badge, .Sound], categories: nil))
if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification
{
application.applicationIconBadgeNumber = 0
}
return true
}
Итак, как это сделать сейчас в SWIFT?
К сожалению вы можете уточнить немного больше. –