2016-05-22 6 views
1

Ich habe lokale Benachrichtigungen arbeiten für mein iOS-Projekt einige Zeit im letzten Jahr, bevor es beiseite legte, aber als ich vor ein paar Wochen kam ich bemerkte, dass sie nicht mehr funktionierte. Ich habe ein paar Tage gegraben und bin völlig ratlos. Das Abzeichen wird weiterhin ordnungsgemäß mit einem Hintergrundabruf aktualisiert, die Benachrichtigungswarnung wird jedoch nicht mehr gesendet. Hier ist ein minimaler Aufbau dessen, was ich zum Testen habe.Lokale Benachrichtigungen funktioniert nicht mehr, kann nicht herausfinden, warum

AppDelegate:

func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 
    application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum) 
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Badge, .Alert], categories: nil)) 

    return true 
}  

func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {  
    let localNotification = UILocalNotification() 
    localNotification.alertAction = "Message" 
    application.presentLocalNotificationNow(localNotification) 

    completionHandler(.NoData) 
} 

Dinge, die ich versucht habe:

  • Deinstallation/Neuinstallation der App (Gerät und Simulatoren)
  • Ändern der Bundle-Kennung
  • Deaktivieren/Wiederfreigabe Hintergrund-Fetch-Fähigkeit
  • Präsentieren verzögerte lokale Benachrichtigung durch Hinzufügen der FireDate a ttribute
  • Versuchte willFinishLaunchingWithOptions und didFinishLaunchingWithOptions
  • ich es ausgetestet habe und bin 100% sicher, dass performFetchWithCompletionHandler ausführt, wenn ich Hintergrund simulieren holen und dass presentLocalNotificationNow

-Setup aufgerufen wird:

  • Xcode 7.3 .1 (gestartet in der vorherigen Version, wahrscheinlich 6.xx)
  • Swift 2.2 (startete das Projekt auf 2.1 und war funktionsfähig)
  • iOS 9 (startete das Projekt am 8. und war funktionell)

etwas Veränderung in der API Hat die ich verpasst, oder gibt es einige Fehler in dem, was ich tue? Danke für jede Hilfe!

+0

try this: 'lassen MySettings: UIUserNotificationSettings = UIUserNotificationSettings (forTypes: [.alert, .Badge] Kategorien: nil als Set ) UIApplication.sharedApplication(). registerUserNotificationSettings (mySettings) ' – satishiOS25

+0

' Katze als? Set 'gibt einen Fehler, aber ich habe versucht mit' Set () 'stattdessen und es hat nicht funktioniert –

+0

yeah müssen Sie festlegen' categories: nil' haben die obige Kommentarprüfung bearbeitet – satishiOS25

Antwort

0

UILocalNotification setzt voraus, dass alertBody eingestellt ist, um angezeigt zu werden. So mit den folgenden Werken:

func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {  
    let localNotification = UILocalNotification() 
    localNotification.alertBody = "You have a notification" 
    localNotification.alertAction = "Message" 
    application.presentLocalNotificationNow(localNotification) 

    completionHandler(.NoData) 
} 
Verwandte Themen