2016-04-18 14 views
1

Ich habe eine Anwendung, wo ich einige lokale Benachrichtigung habe. Und sie funktionieren gut mit Trigger und all das, auch wenn die App im Hintergrund ist.lokale Benachrichtigung mit API-Aufruf

Aber im Moment habe ich nur etwas statischen Text in dieser Benachrichtigung, ich klicke dann darauf und es öffnet sich auf der App und es macht einen API-Aufruf an den Server, wo ich dann den Namen zurück bekomme ich brauche und Inhalt.

Was ich tun möchte ist, dass wenn die Benachrichtigung ausgelöst wird es den Api Anruf machen und den Inhalt bekommen. So kann meine Benachrichtigung stattdessen etwas wie "This is X" schreiben und X wird mit dem Inhalt vom Server ersetzt.

Es ist mit iBeacons Ich arbeite mit, so ist es, wenn ich in der Nähe eines iBeacon bekomme ich eine Benachrichtigung.

Antwort

1

Also gehe ich davon aus, dass Sie einige IBeacon Manager haben die didRangeBeacons ruft:

func locationManager(manager: CLLocationManager, didRangeBeacons clBeacons: [AnyObject], inRegion region: CLBeaconRegion) { 
    // schedule local notification 
} 

und Sie in eine lokale Meldung planen. Alles, was Sie tun müssen, ist, zuerst einen Serveranruf zu tätigen und eine lokale Benachrichtigung zu planen, sobald sie abgeschlossen ist.

Sie müssen sich daran erinnern, dass Ihre Anwendung im Hintergrund sein kann (oder sogar getötet werden), wenn der Benutzer die Region Leuchtfeuer betritt, so dass Sie im Bereich beginnen müssen, wenn didEnterRegion aufgerufen wird:

func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) { 
    // start ranging for beacons 
} 
+0

Ja, ich habe didEnterRegion, und das ist, wo ich die Benachrichtigung sofort mache. Aber davon kann ich nicht sehen, was der große und kleine iBeacon ist, den ich für meinen api Anruf brauche. Die api Anruf ich habe ich in didRangeBeacons. Ist es möglich, es zu starten, wenn didEnterregion aufgerufen wird und es immer noch im Hintergrund ist? – LinkToThePast

+1

Ich habe nur die Benachrichtigung und das in den Didrangebeacons, und es lief gut, auch wenn die App im Hintergrund war. – LinkToThePast

0

Verwenden Sie die beginBackgroundTaskWithExpirationHandler , um die API im Hintergrund aufzurufen. Siehe diesen Thread für Detailinformationen: Proper use of beginBackgroundTaskWithExpirationHandler. In dieser Hintergrundaufgabe können Sie die API-Anfrage ausführen und die Benachrichtigung mit dem gewünschten Ergebnis anzeigen.

+0

Also in der Func DoUpdate sollte ich meine API anrufen und das alles nur? Und dann rufen Sie die DoUpdate in meiner DidEnterRegion? – LinkToThePast

+0

Ja, mit der DoUpdate-Funktion wird Ihr Code ausgeführt und Ihre Benachrichtigung wird gesendet. Der Name doUpdate dient nur zu Demonstrationszwecken, Sie können die Hintergrundlogik nur innerhalb der Funktion didEnterRegion aufrufen. –

Verwandte Themen