<
Nachrichten senden API

Wie kann ich Push-Benachrichtungen mit der Nachrichten API versenden?

Mittels HTTP Post (nicht GET) in der Programmiersprache deiner Anwendung, sende eine Anfrage an http://www.pushsafer.com/api oder über eine sichere Verbindung an https://www.pushsafer.com/api! Um die Push Benachrichtung an deine Bedürfnisse anzupassen, können folgende Werte übermittelt werden: Titel, Nachricht, Icon, Icon Farbe, Sound, Vibration, Bilder, Gerät oder Gerätegruppe, URL, URL Titel, Time to Live, Priorität, Erneut Senden, Verfallen, Antwort.

Hier ein paar Beispiele:

PHP (HTTP CONTEXT)
<?php
$url = 'https://www.pushsafer.com/api';
$data = array(
	't' => urldecode($title),
	'm' => urldecode($message),
	's' => $sound,
	'v' => $vibration,
	'i' => $icon,
	'c' => $iconcolor,
	'd' => $device,
	'u' => urldecode($url),
	'ut' => urldecode($urltitle),
	'p' => $picture,
	'k' => $private_key
);
$options = array(
	'http' => array(
		'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
		'method'  => 'POST',
		'content' => http_build_query($data)
	)
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
?>

PHP (CURL)
<?php
$ch = curl_init();
$data = array(
	't' => urldecode($title),
	'm' => urldecode($message),
	's' => $sound,
	'v' => $vibration,
	'i' => $icon,
	'c' => $iconcolor,
	'd' => $device,
	'u' => urldecode($url),
	'ut' => urldecode($urltitle),
	'p' => $picture,
	'k' => $private_key
);
$postString = http_build_query($data, '', '&');
curl_setopt($ch, CURLOPT_URL, 'https://www.pushsafer.com/api' );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
$response = curl_exec($ch);
curl_close($ch);
?>

jQuery
$.ajax({
  type: "POST",
  url: 'https://www.pushsafer.com/api',
  data:  {
		t: escape(title),
		m: escape(message),
		s: sound,
		v: vibration,
		i: icon,
		c: iconcolor,
		d: device,
		u: escape(url),
		ut: escape(urltitle),
		p: picture,
		k: private_key
  }
});

JavaScript
var xhttp;
if (window.XMLHttpRequest) {
    xhttp = new XMLHttpRequest();
    } else {
    // code for IE6, IE5
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("POST", "https://www.pushsafer.com/api", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("t="+escape(title)+"&m="+escape(message)+"&s="+sound+"&v="+vibration+"&i="+icon+"&c="+iconcolor+"&d="+device+"&u="+escape(url)+"&ut="+escape(urltitle)+"&k="+private_key);

Node.JS

npm install pushsafer-notifications

var push = require( 'pushsafer-notifications' );
 
var p = new push( {
    k: 'Your20CharPrivateKey',             // your 20 chars long private key 
    debug: true
});
 
var msg = {
    m: 'This is a Node.js test message',   // message (required)
    t: "Node.js Test",                     // title (optional)
    s: '8',                                // sound (value 0-50) 
    v: '2',                                // vibration (empty or value 1-3) 
    i: '5',                                // icon (value 1-176)
    c: '#FF0000',                          // iconcolor (optional)
    u: 'https://www.pushsafer.com',        // url (optional)
    ut: 'Open Link',                       // url title (optional)
    d: '221'                               // the device or device group id 
};
 
// console.log( p ); 
 
p.send( msg, function( err, result ) {
    //console.log( 'ERROR:', err ); 
    console.log( 'RESULT', result );
    // process.exit(0); 
});

Unix Command Line
curl -s \
  --form-string "t=title" \
  --form-string "m=message" \
  --form-string "s=sound" \
  --form-string "v=vibration" \
  --form-string "i=icon" \
  --form-string "c=iconcolor" \
  --form-string "d=device" \
  --form-string "u=url" \
  --form-string "ut=urltitle" \
  --form-string "p=picture" \
  --form-string "k=private_key" \  
  https://www.pushsafer.com/api

Ruby
require "net/https"
url = URI.parse("https://www.pushsafer.com/api")
req = Net::HTTP::Post.new(url.path)
req.set_form_data({
  :t => title,
  :m => message,
  :s => sound,
  :v => vibration,
  :i => icon,
  :c => iconcolor,
  :d => device,
  :u => url,
  :ut => urltitle,
  :p => picture,
  :k => private_key,
})
res = Net::HTTP.new(url.host, url.port)
res.use_ssl = true
res.verify_mode = OpenSSL::SSL::VERIFY_PEER
res.start {|http| http.request(req) }

C#/.NET
var options= new NameValueCollection {
		{ "t", title },
		{ "m", message },
		{ "s", sound },
		{ "v", vibration },
		{ "i", icon },
		{ "c", iconcolor },
		{ "d", device },
		{ "u", url },
		{ "ut", urltitle },
		{ "p", picture },
		{ "k", private_key }
};
using (var client = new WebClient())
{
    client.UploadValues("https://www.pushsafer.com/api", options);
}

Perl
use LWP::UserAgent;
LWP::UserAgent->new()->post(
  "https://www.pushsafer.com/api", [
  "t" => title,
  "m" => message,
  "s" => sound,
  "v" => vibration,
  "i" => icon,
  "c" => iconcolor,
  "d" => device,
  "u" => url,
  "ut" => urltitle,
  "p" => picture,
  "k" => private_key,
]);

TCL - Tool Command Language
package require http
set url "https://www.pushsafer.com/api"
::http::geturl $url -query [::http::formatQuery k "privateKey" t "Title" m "Message" d "deviceID" i "Icon" s "Sound" v "Vibration" c "IconColor" u "URL" ut "URLTitle" l "Time2Live" p "Base64EncodedImageString"]

Python 3
from urllib.parse import urlencode
from urllib.request import Request, urlopen

url = 'https://www.pushsafer.com/api' # Set destination URL here
post_fields = {                       # Set POST fields here
	"t" : title,
	"m" : message,
	"s" : sound,
	"v" : vibration,
	"i" : icon,
	"c" : iconcolor,
	"d" : device,
	"u" : url,
	"ut" : urltitle,
	"k" : private_key
	}

request = Request(url, urlencode(post_fields).encode())
json = urlopen(request).read().decode()
print(json)
VBSript
sUrl = "https://www.pushsafer.com/api"

sRequest = "k=YourKey&d=DeviceID&t=Title Here&m=Test Message sned with VBScript&i=20&s=37&v=3"

HTTPPost sUrl, sRequest

Function HTTPPost(sUrl, sRequest)
  set oHTTP = CreateObject("Microsoft.XMLHTTP")
  oHTTP.open "POST", sUrl,false
  oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  oHTTP.setRequestHeader "Content-Length", Len(sRequest)
  oHTTP.send sRequest
  HTTPPost = oHTTP.responseText
 End Function
Lesen API
Mit der Lesen API kann man mittels Privaten Schlüssel und Geräte ID alle Nachrichten eines Gerätes (inkl. aller Parameter) abrufen. Der Aufruf kann mittels GET oder POST erfolgen.

Ein einfaches Beispiel:

https://www.pushsafer.com/api-m?k={private_key}&d={device}

Lesen API Antwort-Codes

HTTP/1.0 200 OK
JSON
{
"status": 1, "messages": { "21231": { "id": "21231", "title": "Pushsafer Test Push", "message": "This is only a test", "icon": "22", "iconcolor": "#FFCCCC", "sound": "12", "vibration": "3", "url": "https:\/\/www.pushsafer.com", "url_title": "Open Pushsafer", "image1": "", "image2": "", "image3": "", "time2live": "", "date_sent": "2018-08-21 16:00:23", "status_sent": "1", "priority": "2", "retry": "1", "retries": "10", "expire": "2018-08-21 18:00:23", "expired": "1", "reply": "1", "replied": "1", "answer": "This is a test answer", "location_lat": "51.0410180581", "location_lon": "12.3791688397", "location_time": "2019-07-01 22:29:30" } } }

HTTP/1.0 250 invalid authentication
JSON
{
"status": 0, "error": "invalid authentication" }

Geräte API
Mit der Geräte API kann man mittels Privaten Schlüssel und Benutzer seine bei Pushsafer registrierten Geräte auslesen. Der Aufruf der Geräte API ist ähnlich der Nachrichten API aufgebaut. Der Aufruf kann mittels POST oder GET erfolgen.

Es müssen folgende Parameter übergeben werden:
k = Privater Schlüssel
u = Benutzername oder eMail Adresse

Ein einfaches Beispiel:

https://www.pushsafer.com/api-d?k={private_key}&u={user}

Geräte API Antwort-Code

HTTP/1.0 200 OK
JSON
{
"status":1, "devices":{ "a":"All Devices", "gs40":"Group: iOS", "gs44":"Group: Windows", "gs46":"Group: Android", "gs47":"Group: Browser", "53":"iPhone4", "78":"GT-P5110", "82":"Cindys iPhone6", "86":"iPad Air", "119":"iPhone6p", "143":"Windows Firefox", "267":"Lumia 550", "269":"PC Office WIN10", "318":"Windows Chrome", "418":"BV2000s", "484":"CUBOT GT72E", "1351":"HUAWEI MT7-L09", "1520":"Cindy's SATELLITE PRO" } }

HTTP/1.0 250 invalid authentication
JSON
{ "status":0, "error":"invalid authentication" }

Gerät löschen API
Mit der Gerät löschen API kann man mittels Privaten Schlüssel, Benutzer und Geräte ID seine bei Pushsafer registrierten Geräte löschen. Der Aufruf der Geräte API ist ähnlich der Nachrichten API aufgebaut. Der Aufruf kann mittels POST oder GET erfolgen.

Es müssen folgende Parameter übergeben werden:
k = Privater Schlüssel
u = Benutzername oder eMail Adresse
d = Geräte ID

Ein einfaches Beispiel:

https://www.pushsafer.com/api-d?k={private_key}&u={user}&d={device_id}

Geräte API Antwort-Code

HTTP/1.0 200 OK
JSON
{
"status":1, "devicedeleted":119 }

HTTP/1.0 250 invalid authentication
JSON
{ "status":0, "error":"invalid authentication" }

Schlüssel API
Mit der Schlüssel API kann man mittels Privaten Schlüssel und Benutzer prüfen, ob der Private Schlüssel valide ist. Der Aufruf der Schlüssel API ist ähnlich der Nachrichten oder Geräte API aufgebaut. Der Aufruf kann mittels POST oder GET erfolgen.

Es müssen folgende Parameter übergeben werden:
k = Privater Schlüssel
u = Benutzername oder eMail Adresse

Ein einfaches Beispiel:

https://www.pushsafer.com/api-k?k={private_key}&u={user}

Schlüssel API Antwort-Codes

HTTP/1.0 200 OK
JSON
{ "status":1, "success":"valid key", "available-api-calls":21398 }

HTTP/1.0 250 invalid authentication
JSON
{ "status":0, "error":"invalid authentication" }

Callback-URL

In den Profil-Einstellungen kann man eine Callback-URL angeben.Pushsafer Callback URL
Bei positiven Aktionen, wie z.B. dem Versenden von Push-Benachrichtungen oder dem Registrieren von neuen Geräten, werden die JSON Antwort-Codes an diese URL per POST mit dem Parameter json gesendet. Mit dieser Funktion hat man die Möglichkeit, im eigenen System Automatismen zu erstellen oder ein registriertes Gerät einem Account zuzuordnen.

Beispiel: https://www.pushsafer.com/call/me/back

$json = $_POST['json'];
if($json){
	$file = 'callback.txt';
	// open data
	$current = file_get_contents($file);
	// insert new line
	$current.= "\n".date("Y-m-d H:i:s", time()).' '.$json;
	// write data
	file_put_contents($file, $current);
}

Antwort-Code für das Versenden von Push-Benachrichtigungen

{
	"status":1,
	"success":"message transmitted",
	"available":1823,
	"message_ids":"1324312:118,1324313:324"
}

Antwort-Code für das Registrieren eines neuen Gerätes

{
	"action": "add-device",
	"id": "27899",
	"name": "iPhone XS",
	"group": "gs123",
	"guest": "1"
}

Antwort-Code für das Löschen eines Gerätes

{
	"action": "delete-device",
	"id": "27899"
}
Standort-Verfolgung
(BETA) Mit der Standort-Verfolgung (Android, iOS & Windows 10 mt Cient-APP Version >=2.3.1) hat man die Möglichkeit, mit jeder versendeten Push-Benachrichtung den Standort des Gerätes zu verfolgen. Dafür müssen die nötigen Berechtigungen akzeptiert werden. Wurde der Standort ordnungsgemäß übermittelt und dieser ist nicht älter als 24 Stunden, wird dieser in der Client APP als neues Icon angezeigt und kann über die Nachrichten Lese API ausgegeben werden!

Pushsafer Standort Verfolgung Client APP

Um den Geräte Akku zu schonen & Energie zu sparen, wird das Tracking nur ausgelöst, wenn das Gerät nicht still liegt und mindestens eine Entfernung von ca. 100 Meter zur letzten Messung zurückgelegt wurde.

Berechtigung iOS

Pushsafer Standort Verfolgung Berechtigung iOS
Unter iOS müssen folgende Berechtigungen erlaubt werden, damit Standorte ordnungsgemäß übermittelt werden können

  • Standort = immer
  • Bewegung & Fitness, zur Erkennung, ob sich das Gerät bewegt. Nur bei Bewegung werden Standorte übermittelt (Schonung der Batterie)
  • Hintergundaktualisierung & Mobile Daten, nur so können die Standort-Daten übermittelt werden, wenn sich die APP im Hintergrund befindet

Berechtigung Android

Pushsafer Standort Verfolgung Berechtigung Android bis Version 7

Gesonderte Berechtigung ab Android 8

Pushsafer Standort Verfolgung Berechtigung Android bis Version >=8

Mit der Einführung von Benachrichtungs-Kategorien (Kanälen) in Android 8, muss der Kanal Sync Service aktiviert werden/bleiben. Dieser wird benötigt, um die APP im Hintergrund offen zu halten, sodaß Standort-Änderungen übermittelt werden können.

Berechtigung Windows 10
für die Standort-Verfolgung unter Windows 10 müssen folgende Berechtigungen aktiviert werden: Position & Hintergrund Apps

Pushsafer Standort Verfolgung Berechtigung Windows 10

Pushsafer Standort Verfolgung Berechtigung Hintergrund APP Windows 10

Firewall

Werden Zugriffe durch eine Firewall blockiert, bitte folgender IP Adresse den Zugriff erlauben!

IPv4 = 212.83.36.91

IPv6 = 2a00:f48:cafe:a911::1

Parameter

Benutze Parameter, um deine Push-Nachricht anzupassen, drücke auf den orangen Parameter um eine detailierte Beschreibung zu erhalten:

k = Privater oder Alias Schlüssel*

Beispiel: 3SAz1a2iTYsh19eXIMiO

d = Gerät

einzelne Geräte ID oder Gerätegruppen ID oder alle Geräte

d=a = an alle Geräte
d=gs23 = an eine Gerätegruppe
d=52 = an ein einzelnes Gerät

t = Titel

m = Nachricht*

s = Sound Leer=Gerätestandard oder eine Nummer 0-62

v = Vibration Leer=Gerätestandard oder eine Nummer 1-3

(nur iOS & Android)

i = Icon Standard = 1 oder eine Nummer 1-177

c = Icon Farbe Standard = Leer

oder ein Hexadezimaler Farbcode Beispiel: #FF0000

(nur Android >5.0, Windows 10 & alle Client APPs)

Farbe für LED Benachrichtigung
(nur Android, Gerät benötigt eine RGB LED)

u = URL/Link u="https://www.pushsafer.com"

ut = URL Title ut="Link öffnen"

Öffne andere Apps mit deiner Push-Benachrichtung mittles
URL Schemas

p = Bild Data URL mit Base64-kodierter Zeichenkette
p2 = Bild 2 Data URL mit Base64-kodierter Zeichenkette
p3 = Bild 3 Data URL mit Base64-kodierter Zeichenkette

data:image/gif;base64,R0l...BOw==
data:image/jpeg;base64,C4s...Cc1==
data:image/png;base64,G0G...h5r==

is = Bild Größe kleineres Bild = schneller Ladezeit

0 = 1024px
1 = 768px
2 = 512px
3 = 256px

l = Time to Live Ganzzahl 0-43200: Zeit in Minuten,

nach der die Nachricht automatisch gelöscht wird.
0 oder leer = nicht automatisch löschen

pr = Priorität

-2 = niedrigste Priorität

-1 = niedrige Priorität

0 = normale Priorität

1 = hohe Priorität

2 = höchste Priorität (Kritische Hinweise)

re = Retry / erneut senden

Ganzzahl 60-10800 (60er Schritte): Zeit in Sekunden, nach der die Nachricht erneut versendet werden soll.

ex = Expire / Verfallen

Ganzzahl 60-10800: Zeit in Sekunden, nach der das erneute Versenden der Nachrichten gestoppt werden soll.

a = Antwort

1 = auf diese Nachricht kann geantwortet werden.
0 = auf diese Nachricht kann nicht geantwortet werden.

cr = Bestätigung / erneut senden

Ganzzahl 10-10800 (10s Schritte) Zeit in Sekunden, nachdem eine Nachricht erneut gesendet werden soll, bis diese bestätigt wird.

g = GIPHY GIF Code z.B. 8dMU9pN4pGwEfVpdY4

* benötigte Parameter

max. Größe aller POST Parameter = 8192kb

API Antwort-Codes

Mit jedem Nachrichten-API-Aufruf wird eine Antwort mit HTTP-Header-Code und einen JSON String für Auswertungen zurückgeliefert

HTTP/1.0 200 OK
JSON
{ "status":1, "success":"message transmitted", "available":1823, "message_ids":"1324312:118,1324313:324" }


available verfügbare API Aufrufe

message_ids eindeutige Nachrichten IDs mit Komma getrennt
und dazugehöriger Geräte-ID mit Doppelpunkt getrennt

HTTP/1.0 250 invalid key
JSON
{ "status":0, "error":"invalid key" }

HTTP/1.0 255 invalid key or empty message
JSON
{ "status":0, "error":"invalid key or empty message" }

HTTP/1.0 260 empty message
JSON
{ "status":0, "error":"empty message" }

HTTP/1.0 270 invalid device
JSON
{ "status":0, "error":"invalid device" }

HTTP/1.0 275 invalid device group
JSON
{ "status":0, "error":"invalid device group" }

HTTP/1.0 280 not enough API calls
JSON
{ "status":0, "error":"not enough API calls" }

HTML Formatierung
Die Nachricht kann mittels BBCode formatiert werden. Die Formatierung kann nur in den Client Apps & Browser, aber nicht direkt in der Push-Nachricht dargestellt werden. Folgende BBCodes werden akzeptiert:

[b]Wort[/b] Wort fett
[i]Wort[/i] Wort kursiv
[u]Wort[/u] Wort unterstrichen
[s]Wort[/s] Wort durchgeschrichen
[left]Wort[/left] Text linksbündig
[center]Wort[/center] Text zentriert
[right]Wort[/right] Text rechtsbündig
[size=18]Wort[/size] Text in Schriftgröße 18 Pixel
optimale Schriftgrößen 8-48
[color=blue]Wort[/color] Wort blau
[color=#FF0000]Wort[/color] Wort rot
Es werden Hex Codes und die meisten Farbnamen unterstützt.
[url=http://www.domain.com]Link[/url] zeigt einen Link
Kombinierte Werte sind auch möglich:
[b][u][color=#980000]Wort[/color][/u][/b] = Wort
Zeilenumbruch: \n oder BBCode [br]

Ton
Werte in Klammern gelten für Windows 10 (UWP)

leer = Gerätestandard
0 = Lautlos
1 = Ahem (IM)
2 = Applaus (Mail)
3 = Pfeil (Reminder)
4 = Baby (SMS)
5 = Glocke (Alarm)
6 = Fahrradklingel (Alarm2)
7 = Boing (Alarm3)
8 = Buzzer (Alarm4)
9 = Kamera (Alarm5)
10 = Auto Hupe (Alarm6)
11 = Registrierkasse (Alarm7)
12 = Glockenspiel (Alarm8)
13 = Knarrende Tür (Alarm9)
14 = Kuckucksuhr (Alarm10)
15 = Verbindung trennen (Call)
16 = Hund (Call2)
17 = Türklingel (Call3)
18 = Fanfare (Call4)
19 = Pistole (Call5)
20 = Hupen (Call6)
21 = Maultrommel (Call7)
22 = Morsen (Call8)
23 = Elektrizität (Call9)
24 = Radio Tuner (Call10)
25 = Sirene
26 = Militär Trompeten
27 = Ufo
28 = Whah Whah Whah
29 = Mann sagt Goodbye
30 = Mann sagt Hello
31 = Mann sagt No
32 = Mann sagt Ok
33 = Mann sagt Ooohhhweee
34 = Mann sagt Warning
35 = Mann sagt Welcome
36 = Mann sagt Yeah
37 = Mann sagt Yes
38 = Beep kurz
39 = Weeeee kurz
40 = Cut in and out kurz
41 = Finger an Glas schnipsen kurz
42 = Wa Wa Waaaa kurz
43 = Laser kurz
44 = Wind Spiel kurz
45 = Echo kurz
46 = Zipper kurz
47 = HiHat kurz
48 = Beep 2 kurz
49 = Beep 3 kurz
50 = Beep 4 kurz
51 = The Alarm is armed
52 = The Alarm is disarmed
53 = The Backup is ready
54 = The Door is closed
55 = The Door is opend
56 = The Window is closed
57 = The Window is open
58 = The Light is off
59 = The Light is on
60 = The Doorbell rings
61 = Pager kurz
62 = Pager lang

Nur für die Verwendung in Zusammenhang mit Pushsafer, können alle Sounds hier herunterladen werden!

Icon
= 1 = 2 = 3 = 4 = 5 = 6 = 7 = 8 = 9 = 10 = 11 = 12 = 13 = 14 = 15 = 16 = 17 = 18 = 19 = 20 = 21 = 22 = 23 = 24 = 25 = 26 = 27 = 28 = 29 = 30 = 31 = 32 = 33 = 34 = 35 = 36 = 37 = 38 = 39 = 40 = 41 = 42 = 43 = 44 = 45 = 46 = 47 = 48 = 49 = 50 = 51 = 52 = 53 = 54 = 55 = 56 = 57 = 58 = 59 = 60 = 61 = 62 = 63 = 64 = 65 = 66 = 67 = 68 = 69 = 70 = 71 = 72 = 73 = 74 = 75 = 76 = 77 = 78 = 79 = 80 = 81 = 82 = 83 = 84 = 85 = 86 = 87 = 88 = 89 = 90 = 91 = 92 = 93 = 94 = 95 = 96 = 97 = 98 = 99 = 100 = 101 = 102 = 103 = 104 = 105 = 106 = 107 = 108 = 109 = 110 = 111 = 112 = 113 = 114 = 115 = 116 = 117 = 118 = 119 = 120 = 121 = 122 = 123 = 124 = 125 = 126 = 127 = 128 = 129 = 130 = 131 = 132 = 133 = 134 = 135 = 136 = 137 = 138 = 139 = 140 = 141 = 142 = 143 = 144 = 145 = 146 = 147 = 148 = 149 = 150 = 151 = 152 = 153 = 154 = 155 = 156 = 157 = 158 = 159 = 160 = 161 = 162 = 163 = 164 = 165 = 166 = 167 = 168 = 169 = 170 = 171 = 172 = 173 = 174 = 175 = 176 = 177

Nur für die Verwendung in Zusammenhang mit Pushsafer, können alle Icons hier herunterladen werden!


Copyright © Pushsafer.com, All rights reserved.