Geozonen-API
getNearestZone
Anchor link toWird intern vom SDK aufgerufen. Ruft die Parameter der nächstgelegenen Geozone und die Entfernung zu ihr ab. Zeichnet auch den Gerätestandort für Geo-Push-Benachrichtigungen auf.
POST https://api.pushwoosh.com/json/1.3/getNearestZoneParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| application | string | Ja | Pushwoosh-Anwendungscode |
| hwid | string | Ja | Hardware-Geräte-ID, die in der /registerDevice-Anfrage verwendet wird. |
| lat | string | Ja | Breitengrad des Geräts. |
| lng | string | Ja | Längengrad des Geräts. |
Anfragebeispiel
Anchor link to{ "request": { "application": "APPLICATION_CODE", "hwid": "HWID", "lat": 10.12345, "lng": 28.12345 }}PHP-Beispiel
Anchor link to// Siehe http://gomoob.github.io/php-pushwoosh/get-nearest-zone.html
use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;
// Erstellt die Anfrageinstanz$request = GetNearestZoneRequest::create() ->setHwid('HWID') ->setLat(10.12345) ->setLng(28.12345);
// Ruft den '/getNearestZone'-Webdienst auf$response = $pushwoosh->getNearestZone($request);
if ($response->isOk()) { print 'Zonenname : ' . $response->getResponse()->getName(); print 'Breitengrad : ' . $response->getResponse()->getLat(); print 'Längengrad : ' . $response->getResponse()->getLng(); print 'Reichweite : ' . $response->getResponse()->getRange(); print 'Entfernung : ' . $response->getResponse()->getDistance();} else { print 'Hoppla, die Operation ist fehlgeschlagen :-('; print 'Statuscode : ' . $response->getStatusCode(); print 'Statusnachricht : ' . $response->getStatusMessage();}addGeoZone
Anchor link toFügt einer bestimmten App eine Geozone hinzu.
POST https://api.pushwoosh.com/json/1.3/addGeoZoneParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
| geozones | array | Ja | Geozonen-Parameter als JSON-Array. |
| geozones.name | string | Ja | Name der Geozone. |
| geozones.lat | string | Erforderlich für einen Kreis. | Breitengrad der Geozone. Weglassen, wenn polygon gesetzt ist – eine Polygon-Geozone leitet ihr eigenes Zentrum ab. |
| geozones.lng | string | Erforderlich für einen Kreis. | Längengrad der Geozone. Weglassen, wenn polygon gesetzt ist – eine Polygon-Geozone leitet ihr eigenes Zentrum ab. |
| geozones.cooldown | integer | Ja | Ruhezeit nach dem Senden einer Benachrichtigung (in Sekunden). |
| geozones.range | integer | Erforderlich für einen Kreis. | Reichweite der Geozone in Metern. Minimum 50. Weglassen, wenn polygon gesetzt ist – eine Polygon-Geozone leitet ihre eigene Reichweite ab. |
| geozones.polygon | object | Nein | Macht die Geozone zu einem Polygon anstelle eines Kreises. Kann nicht mit lat/lng/range kombiniert werden – das Senden von beidem wird abgelehnt. Siehe Polygon-Geozonen. |
| geozones.content | string oder object | Erforderlich, wenn presetCode leer ist. | Inhalt der Geozonen-Nachricht. |
| geozones.presetCode | string | Erforderlich, wenn content leer ist. | Push-Preset, das anstelle von content verwendet wird. |
| geozones.cluster | string | Nein | Geben Sie null an, um einen Cluster von der Geozone zu lösen. |
| geozones.campaign | string | Nein | Geben Sie null an, um eine Kampagne von der Geozone zu lösen. Wenn weggelassen, bleibt der Kampagnenwert unverändert. Hinweis: Hat eine höhere Priorität als die Kampagne im Preset. |
| geozones.timetable | object | Nein | Legt Zeitplanintervalle fest. |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX", // Pushwoosh-Anwendungscode "geozones": [{ "name": "Statue of George", // erforderlich. Name der Geozone. "lat": "40.70087797", // erforderlich. Breitengrad der Geozone. "lng": "-73.931851387", // erforderlich. Längengrad der Geozone. "cooldown": 60, // in Sekunden, erforderlich. Ruhezeit nach dem Senden einer Benachrichtigung "range": 50, // in Metern, Minimum 50, erforderlich. Reichweite der Geozone. "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // oder Objekt "presetCode": "AAAAA-BBBBB", // optional. Push-Preset kann anstelle von Inhalt verwendet werden "cluster": "GEOZONE CLUSTER CODE", // optional. Die Cooldown-Periode des Clusters wird angewendet "campaign": "CAMPAIGN_CODE", // optional. Geben Sie null an, um die Kampagne von der Geozone zu lösen "timetable": { // optional "timezone": 1234, // in Sekunden "Mon": [ // verfügbare Tage: Mo, Di, Mi, Do, Fr, Sa, So. Push-Versand { "start": "04:11", "stop": "12:00" } ], "Sun": [ { // ein oder zwei Intervalle "start": "01:11", "stop": "17:00" }, { "start": "18:01", "stop": "23:59" } ] } }] }}Hinzufügen mehrerer Geozonen auf einmal
Anchor link togeozones akzeptiert ein Array, sodass ein Aufruf einen ganzen Batch erstellen kann. Der Batch wird als Ganzes validiert, bevor etwas geschrieben wird: Wenn ein Eintrag abgelehnt wird, schlägt der Aufruf fehl und es wird keine Geozone aus dieser Anfrage erstellt. Der Fehler benennt den fehlerhaften Eintrag anhand seiner Position im Array, gezählt von null:
{ "status_code": 210, "status_message": "geozones[301]: range: range must be at least 50 meters"}Korrigieren Sie diesen Eintrag und senden Sie die Anfrage erneut. Bei Erfolg enthält GeoZones die neuen numerischen IDs in der gleichen Reihenfolge wie die von Ihnen gesendeten Einträge.
Batches mit mehr als 500 Einträgen werden akzeptiert und intern in Chunks aufgeteilt. Das gesamte Array wird immer noch vor dem ersten Schreibvorgang validiert, aber der Schreibvorgang selbst ist nicht atomar über Chunks hinweg: Ein Eintrag kann die Validierung bestehen und trotzdem nicht geschrieben werden, zum Beispiel wenn das von ihm benannte Preset zwischendurch gelöscht wird. In diesem Fall gibt der Aufruf 200 mit den geschriebenen IDs sowie einem Errors-Array zurück, das den Eintrag benennt, der die Ausführung gestoppt hat, sodass nichts Erstelltes verloren geht:
{ "status_code": 200, "status_message": "OK", "response": { "GeoZones": [100016750, 100016751], "Errors": [{ "index": 2, "message": "preset not found" }] }}Errors fehlt, wenn jeder Eintrag geschrieben wurde, sodass eine vollständig erfolgreiche Antwort unverändert bleibt. Ein GeoZones-Array, das kürzer ist als das von Ihnen gesendete Array, bedeutet immer, dass einige Einträge nicht erstellt wurden.
Polygon-Geozonen
Anchor link toSenden Sie polygon anstelle von lat/lng/range, um die Geozone zu einem Polygon zu machen. polygon.vertices ist ein geordneter Ring von {lat, lng}-Punkten, die den Umriss der Form beschreiben:
{ "request": { "auth": "yxoPUlwqm............pIyEX4H", "application": "XXXXX-XXXXX", "geozones": [{ "name": "Downtown mall — ground floor", "cooldown": 60, "polygon": { "vertices": [ { "lat": 40.70087797, "lng": -73.931851387 }, { "lat": 40.70112456, "lng": -73.931602211 }, { "lat": 40.70095321, "lng": -73.930987654 }, { "lat": 40.70068912, "lng": -73.931233456 } ] }, "content": "Welcome! Enjoy 15% off your first purchase today." }] }}lat, lng und range werden aus dem Ring abgeleitet – der Kreis, den ein Gerät tatsächlich überwacht, ist auf die Form zentriert und hat einen Radius, der bis zu seinem am weitesten entfernten Eckpunkt reicht (mindestens 50 m). Das Senden von polygon zusammen mit lat/lng/range wird abgelehnt.
Sie können den Ring offen oder geschlossen senden – wenn der letzte Eckpunkt den ersten wiederholt, verwirft der Server dieses schließende Duplikat vor der Validierung. Eckpunktvalidierung am resultierenden Ring: 3 bis 100 verschiedene Eckpunkte. Der Ring wird auch abgelehnt, wenn seine Punkte kollinear sind, wenn sich seine Kanten selbst schneiden oder wenn er den Antimeridian kreuzt.
updateGeoZone
Anchor link toAktualisiert die Eigenschaften einer Geozone.
POST https://api.pushwoosh.com/json/1.3/updateGeoZoneParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| geoZoneId | string | Ja | Geozonen-ID aus der /addGeoZone-Anfrage. |
| name | string | Nein | Neuer Name der Geozone. |
| cooldown | integer | Nein | Zu aktualisierende Cooldown-Periode in Sekunden. |
| status | integer | Nein | 0 - deaktiviert, 1 - aktiviert. |
| content | string | Nein | Inhalt für die Geozonen-Push-Benachrichtigung. Kann nicht mit presetCode verwendet werden. |
| cluster | string | Nein | Neuer Cluster-Name. Geben Sie null an, um den Cluster von der Geozone zu lösen. |
| campaign | string | Nein | Neue Kampagnen-ID. Geben Sie null an, um die Kampagne von der Geozone zu lösen. Wenn weggelassen, wird der Kampagnenwert nicht geändert. Hat eine höhere Priorität als eine Kampagne aus einem Preset. |
| lat | number | Nein | Breitengrad der Geozone. Kann nicht mit polygon kombiniert werden. |
| lng | number | Nein | Längengrad der Geozone. Kann nicht mit polygon kombiniert werden. |
| range | integer | Nein | Neue Reichweite in Metern. Kann nicht mit polygon kombiniert werden. |
| polygon | object | Nein | Neuer Ring von {lat, lng}-Eckpunkten – ersetzt die Form und leitet lat/lng/range daraus neu ab. Siehe Polygon-Geozonen. Funktioniert in beide Richtungen: Senden Sie es für eine bestehende Kreis-Geozone, um sie in ein Polygon umzuwandeln, oder senden Sie einen leeren Ring ({"vertices": []}) für eine bestehende Polygon-Geozone, um sie wieder in einen Kreis umzuwandeln. Lassen Sie polygon ganz weg, um die Form unverändert zu lassen. Dieselbe Eckpunktvalidierung wie bei addGeoZone. |
| timetable | object | Nein | Zeitplan der Geozone. Siehe weitere Informationen unten. |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "geoZoneId": 100016750, // erforderlich, von der /addGeoZone-Methode "name": "new geozone name", // optional "cooldown": 222, // in Sekunden, optional "status": 0, // optional, 0 - deaktiviert, 1 - aktiviert "presetCode": "BBBBB-AAAAA", // optional, kann nicht zusammen mit "content" verwendet werden "content": "new geozone content", // optional, kann nicht zusammen mit "presetCode" verwendet werden "cluster": "GEOZONE CLUSTER CODE", // optional. Geben Sie null an, um den Cluster von der Geozone zu lösen "campaign": "CAMPAIGN_CODE", // optional. Geben Sie null an, um die Kampagne von der Geozone zu lösen "lat": 10.56, // optional, Breitengrad der Geozone "lng": 12.523, // optional, Längengrad der Geozone "range": 500, // optional, Reichweite der Geozone "timetable": { // optional "timezone": 1234, // in Sekunden "Mon": [ // verfügbare Tage: Mo, Di, Mi, Do, Fr, Sa, So. Push-Versand { "start": "04:11", "stop": "12:00" } ], "Sun": [ { // ein oder zwei Intervalle "start": "01:11", "stop": "17:00" }, { "start": "18:01", "stop": "23:59" } ] } }}deleteGeoZone
Anchor link toEntfernt Geozonen aus der App.
POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
| geozones | string | Ja | Array von IDs oder eine einzelne ID einer zu entfernenden Geozone. |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX", // erforderlich, Pushwoosh-Anwendungscode "geozones": [550, 526] // erforderlich, Geozonen-IDs }}addGeoZoneCluster
Anchor link toFügt der App einen Geozonen-Cluster hinzu.
POST https://api.pushwoosh.com/json/1.3/addGeoZoneClusterParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
| name | string | Ja | Name des Clusters. |
| cooldown | integer | Ja | Eine Verzögerung, bevor ein einzelner Benutzer dieselbe Nachricht vom Geozonen-Cluster erhalten kann, in Sekunden. |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX", // erforderlich, Pushwoosh-Anwendungscode "name": "Raccoon city", // erforderlich, Cluster-Name "cooldown": 3210 // erforderlich, in Sekunden }}deleteGeoZoneCluster
Anchor link toEntfernt einen Geozonen-Cluster aus der App.
POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneClusterParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
| geoZoneCluster | string | Ja | ID des zu entfernenden Geozonen-Clusters. |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX", // erforderlich, Pushwoosh-Anwendungscode "geoZoneCluster": "EA1CE-69405" // erforderlich, Cluster-ID, die von der /addGeoZoneCluster-Anfrage erhalten wurde }}listGeoZones
Anchor link toRuft eine Liste von Geozonen für die App ab.
POST https://api.pushwoosh.com/json/1.3/listGeoZonesParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX" // erforderlich, Pushwoosh-Anwendungscode }}listGeoZoneClusters
Anchor link toRuft eine Liste von Geozonen-Clustern für die App ab.
POST https://api.pushwoosh.com/json/1.3/listGeoZoneClustersParameter des Anfragekörpers
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| auth | string | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| application | string | Ja | Pushwoosh-Anwendungscode |
Anfragebeispiel
Anchor link to{ "request": { "auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel "application": "XXXXX-XXXXX" // erforderlich, Pushwoosh-Anwendungscode }}