Zum Inhalt springen

Geozonen-API

getNearestZone

Anchor link to

Wird 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/getNearestZone

Parameter des Anfragekörpers

Anchor link to
ParameterTyp
ErforderlichBeschreibung
applicationstringJaPushwoosh-Anwendungscode
hwidstringJaHardware-Geräte-ID, die in der /registerDevice-Anfrage verwendet wird.
latstringJaBreitengrad des Geräts.
lngstringJaLä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 to

Fügt einer bestimmten App eine Geozone hinzu.

POST https://api.pushwoosh.com/json/1.3/addGeoZone

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-Anwendungscode
geozonesarrayJaGeozonen-Parameter als JSON-Array.
geozones.namestringJaName der Geozone.
geozones.latstringErforderlich für einen Kreis.Breitengrad der Geozone. Weglassen, wenn polygon gesetzt ist – eine Polygon-Geozone leitet ihr eigenes Zentrum ab.
geozones.lngstringErforderlich für einen Kreis.Längengrad der Geozone. Weglassen, wenn polygon gesetzt ist – eine Polygon-Geozone leitet ihr eigenes Zentrum ab.
geozones.cooldownintegerJaRuhezeit nach dem Senden einer Benachrichtigung (in Sekunden).
geozones.rangeintegerErforderlich 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.polygonobjectNeinMacht 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.contentstring oder objectErforderlich, wenn presetCode leer ist.Inhalt der Geozonen-Nachricht.
geozones.presetCodestringErforderlich, wenn content leer ist.Push-Preset, das anstelle von content verwendet wird.
geozones.clusterstringNeinGeben Sie null an, um einen Cluster von der Geozone zu lösen.
geozones.campaignstringNeinGeben 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.timetableobjectNeinLegt 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 to

geozones 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 to

Senden 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 to

Aktualisiert die Eigenschaften einer Geozone.

POST https://api.pushwoosh.com/json/1.3/updateGeoZone

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
geoZoneIdstringJaGeozonen-ID aus der /addGeoZone-Anfrage.
namestringNeinNeuer Name der Geozone.
cooldownintegerNeinZu aktualisierende Cooldown-Periode in Sekunden.
statusintegerNein0 - deaktiviert, 1 - aktiviert.
contentstringNeinInhalt für die Geozonen-Push-Benachrichtigung. Kann nicht mit presetCode verwendet werden.
clusterstringNeinNeuer Cluster-Name. Geben Sie null an, um den Cluster von der Geozone zu lösen.
campaignstringNeinNeue 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.
latnumberNeinBreitengrad der Geozone. Kann nicht mit polygon kombiniert werden.
lngnumberNeinLängengrad der Geozone. Kann nicht mit polygon kombiniert werden.
rangeintegerNeinNeue Reichweite in Metern. Kann nicht mit polygon kombiniert werden.
polygonobjectNeinNeuer 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.
timetableobjectNeinZeitplan 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 to

Entfernt Geozonen aus der App.

POST https://api.pushwoosh.com/json/1.3/deleteGeoZone

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-Anwendungscode
geozonesstringJaArray 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 to

Fügt der App einen Geozonen-Cluster hinzu.

POST https://api.pushwoosh.com/json/1.3/addGeoZoneCluster

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-Anwendungscode
namestringJaName des Clusters.
cooldownintegerJaEine 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 to

Entfernt einen Geozonen-Cluster aus der App.

POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneCluster

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-Anwendungscode
geoZoneClusterstringJaID 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 to

Ruft eine Liste von Geozonen für die App ab.

POST https://api.pushwoosh.com/json/1.3/listGeoZones

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-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 to

Ruft eine Liste von Geozonen-Clustern für die App ab.

POST https://api.pushwoosh.com/json/1.3/listGeoZoneClusters

Parameter des Anfragekörpers

Anchor link to
Parameter
Typ
ErforderlichBeschreibung
authstringJaAPI-Zugriffstoken aus dem Pushwoosh Control Panel.
applicationstringJaPushwoosh-Anwendungscode

Anfragebeispiel

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // erforderlich, API-Zugriffstoken aus dem Pushwoosh Control Panel
"application": "XXXXX-XXXXX" // erforderlich, Pushwoosh-Anwendungscode
}
}