2016-03-28 19 views
1

In Android gibt es eine Broadcast gesendet von der OS, wenn Änderungen in Systemkonfigurationen (wie Änderung im Netzwerkstatus usw.). Diese Broadcast-Nachrichten können vom Broadcast-Empfänger in unserer App empfangen werden und das Verhalten der App entsprechend ändern, obwohl unsere App nicht im aktiven Zustand ist. Wie kann ich das ähnliche Broadcast Receiver Verhalten in iOS erreichen?So erhalten Sie Benachrichtigungen auf iOS bei Änderung des Netzwerks im nicht aktiven Zustand

Antwort

0

Sie können NSNotificationCenter verwenden, um Änderungen zu überwachen.

NSNotificationCenter.defaultCenter().addObserver(
    self, 
    selector: "batteryLevelChanged:", 
    name: NSUserDefaultsDidChangeNotification, 
    object: nil) 

Hier ist die API-Referenz ist: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/

EDIT 1:

Für Ihren Fall können Sie die Schritte und versuchen.

  1. Bibliothek verwenden Reachability zu Benachrichtigung erhält auf dem Netzwerk zu ändern und individuelle Benachrichtigungsfunktion definieren.

func reachabilityChanged(note: NSNotification) { 

    let reachability = note.object as! Reachability 

    if reachability.isReachable() { 
    if reachability.isReachableViaWiFi() { 
     print("Reachable via WiFi") 
    } else { 
     print("Reachable via Cellular") 
    } 
    } else { 
    print("Network not reachable") 
    } 
} 
  1. In Ihrer Benachrichtigungsfunktion, erstellen Sie eine entsprechende lokale Benachrichtigung

var notification = UILocalNotification() 
notification.alertBody = "Notification message!!!" // 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 = NSDate() // todo item due date (when notification will be fired) 
notification.soundName = UILocalNotificationDefaultSoundName // play default sound 
notification.userInfo = ["UUID": UUID, ] // assign a unique identifier to the notification so that we can retrieve it later 
notification.category = "CATEGORY" 
UIApplication.sharedApplication().scheduleLocalNotification(notification) 
+0

Dank für die Antwort. Vielleicht ist meine Frage nicht klar. Ich erwarte, dass eine lokale Benachrichtigung entweder als Warnung oder Benachrichtigung in der Statusleiste oder sogar als Ausweis bei einer Netzwerkzustandsänderung (z. B. wenn wir von WiFi auf Datenkarte wechseln oder umgekehrt) erhalten wird. Und das sollte ausgelöst werden, auch wenn meine Anwendung nicht im aktiven Zustand ist. – user3513902

+0

Verstehen, dann gibt es bereits eine Bibliothek für Ihre Anfrage https://github.com/ashleymills/Reachability.swift. – BobGao

+0

Dank @ BobGao, ich studierte Erreichbarkeit und es tut wie erwartet. Kann es funktionieren, wenn meine Anwendung nicht im laufenden Zustand ist, und ich sollte eine Benachrichtigung in der Benachrichtigungsleiste erhalten, wenn ich meinen Netzwerkstatus ändere. – user3513902