1.0.5 • Published 3 years ago

re-push v1.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

RE-Push

Die Push-Nachrichten Zentrale

Du betreibst deine eigenen Infrastrukturen, Anwendungen, Apps, Server oder sonstige Dienstleitungen und möchtest bei bestimmten Ereignissen eine Push-Nachricht auf dein Handy erhalten? In der Regel wird hierzu eine eigene App benötigt, um an diese die Push-Nachricht zu versenden. RE-Push ist eine App die es dir ermöglicht sehr einfach und unkompliziert genau diese Push-Nachrichten zu erhalten. Es können mehrere Services angelegt werden. An einzelne Services kann dann eine Push-Nachricht verschickt werden. Du kannst andere Personen dazu einladen deinen Service ebensfalls beizutreten. Somit können auch gleich ganze Gruppen über Neuigkeiten informiert werden. Die Push Nachrichten können hierbei ganz einfach über eine REST-API oder über diverse bereitgestellte Bibliotheken versendet werden. Es sollte somit sehr einfach sein, Push Nachrichten in eine vorhandene Server- oder Client-Anwendung zu integrieren.

Homepage: https://re-push.io/app

Features

  • Zentraler Push-Empfang in der RE-Push App
  • Es können mehrere Push-Services erstellt werden
  • Öffentliche-Services möglich
  • Andere Nutzer können Services beitreten
  • REST-Api Support
  • Vordefinierte Bibliotheken zum Einbinden der RE-Push-API

Puch-Nachrichten Versand via REST-API

Die Push-Nachrichten können über eine REST-API versendet werden. Die REST-API ist öffentlich zugänglich. Zur einfachen Anbindung werden folgende Bibliotheken bereitgestellt

Bibliotheken

Einschränkungen

Um den Service für alle bereitzustellen, ist es notwendig, ein paar wenige Einschränkungen vorzunehmen. Im Einzelfall können die Einschränkungen durch Kontaktaufnahme pro Account angepasst werden.

Konto-ArtAnzahl eigene ServicesAnzahl abonnierte ServicesAnzahl Zugriffstoken
Anonym111
Registriert25unbegrenzt
Verifiziert via E-Mail (In Arbeit)510unbegrenzt

Schnelleinstieg mittels NPX (Node JS wird in der Regel benötigt)

  1. Lade die App im Google PlayStore oder im Apple AppStore herunter
  2. Erstelle dir einen RE-Push account:
npx re-push register
  1. Erstelle einen neuen Service:
npx re-push service add
  1. Öffne die RE-Push App und logge dich mit den gewählten Zugangsdaten ein.
  2. Aktiviere Push-Bnachtigungen für in den Einstellungen deines eben erzeugten Service
  3. Sende deine erste Push-Nachricht:
npx re-push send

Push-Benachrichtigungen ohne Nutzereingabe

Es ist auch möglich die oben ausgeführten Befehle ohne Benutzereingaben durchzuführen. Das kann helfen, um am Ende eines Prozesses vordefinierte Nachrichten zu versenden. Hierzu benötigtst du zunächst einmal die Service-ID an die du eine Push-Nachricht versenden möchtest: npx push service id. Wähle den Service aus, an den du Push-Nachrichten versenden möchtest und notiere dir die angezeigte Service-ID. Jetzt ist es möglich ganz einfach eine Push-Nachricht via Kommandozeile zu versenden:

npx re-push send --service="[SERVICE-ID]" --title="[TITEL]" --message="[NACHRICHT]"

Solltest du auf dem Rechner noch nicht eingeloggt sein, kannst du auch deine Zugangsdaten mitgeben:

npx re-push send --username="[NUTZERNAME]" --password="[PASSWORT]" --service="[SERVICE-ID]" --title="[TITEL]" --message="[NACHRICHT]"

Empfehlung: Nutzung mittels API-Token

Es empfiehlt sicht zum Versenden der Push-Nachrichten einen eigenen Zugriffstoken zu erzeugen. So musst du deine Zugangsdaten mit den vollen Berechtigungen nicht überall eintragen und du kannst für jeden Nutzungsfall andere Zugriffstokens nutzen. Die Tokens lassen sich schnell und einfach wieder sperren, so dass mit diesem Token keine Nachrichten mehr versendet werden können. Zugriffstokens sind, unter Umständen, nicht in der Lage neue Services anzulegen oder Einstellungen am Account via REST-API zu verändern. Das ist davon abhängig, welche Berechtigungen dem Zugriffstoken zugewiesen worden sind. Ein Zugriffstoken kann in der App oder via REST-API angelegt werden:

npx re-push token add --title="[TITEL]"

Beim Anlegen des Zugrisstoken, wird dir einmalig ein Passwort angezeigt, dass diesem Token zugewiesen wurde. Dieses Passwort wird generiert und kann nicht verändert werden. Das Passwort kann unter keinen Umständen erneut angezeigt werden und sollte daher sorgfältig abgelegt werden. Eine Ausnahme bildet das Erzeugen des Tokens mittels App. Die RE-Push App merkt sich das erzeugte Passwort und kann es später erneut in die Zwischenablage legen. Geht das Passwort verloren und der Token wurde nicht mittels App erzeugt, sollte der Zugriffstoken gelöscht und ein neuer Token erstellt werden.

Möchtest du dich beispielsweise in einer CI/CD Pipeline mit einem Token anmelden, um eine Nachricht an alle Interessenten zu versenden nutze folgenden Befehl:

npx re-push login token --username="[TOKEN-ID]" --password="[PASSWORT]"
npx re-push send --service="[SERVICE-ID]" --title="[TITEL]" --message="[NACHRICHT]"

Code Beispiele und Bibliotheken (Push Message)

Simple HTTP Call

POST /v1/send HTTP/1.1
Host: api.re-push.io
Content-Type: application/json
Content-Length: [CONTENT-LENGTH]

{
    "title": "[TITEL]",
    "message": "[MESSAGE]",
    "serviceIdent": "[SERVICE-ID]",
    "token" : "[TOKEN-ID]",
    "password" : "[PASSWORT]"
  }

cURL

curl --location --request POST 'https://api.re-push.io/v1/send' \
--header 'Content-Type: application/json' \
--data-raw '{
    "title": "[TITEL]",
    "message": "[MESSAGE]",
    "serviceIdent": "[SERVICE-ID]",
    "token" : "[TOKEN-ID]",
    "password" : "[PASSWORT]"
  }'

WGET

wget -q \
  --method POST \
  --timeout=0 \
  --header 'Content-Type: application/json' \
  --body-data '{
    "title": "[TITEL]",
    "message": "[MESSAGE]",
    "serviceIdent": "[SERVICE-ID]",
    "token" : "[TOKEN-ID]",
    "password" : "[PASSWORT]"

NPX

Übersicht über die verfügbaren Befehle

BefehlMögliche Parameter
login--username, --password
login user--username, --password
login token--username, --password
logoutkeine
register--username, --Password
service add--title, --description
service idkeine
send--service, --title, --message, --username, --password
token add--title

NodeJS

var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.re-push.io/v1/send',
  'headers': {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
     "title": "[TITEL]",
     "message": "[MESSAGE]",
     "serviceIdent": "[SERVICE-ID]",
     "token": "[TOKEN-ID]",
     "password": "[PASSWORT]"
  })
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Javascript

Beschreibung folgt

Fetch

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "title": "[TITEL]",
  "message": "[MESSAGE]",
  "serviceIdent": "[SERVICE-ID]",
  "token": "[TOKEN-ID]",
  "password": "[PASSWORT]"
});

fetch("https://api.re-push.io/v1/send", {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
})
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

XHR Request

var raw = JSON.stringify({
  "title": "[TITEL]",
  "message": "[MESSAGE]",
  "serviceIdent": "[SERVICE-ID]",
  "token": "[TOKEN-ID]",
  "password": "[PASSWORT]"
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.re-push.io/v1/send");
xhr.setRequestHeader("Content-Type", "application/json");

xhr.send(raw);

React, React-Native

Beschreibung folgt

Vanilla JS

Beschreibung folgt

C-Sharp

Zur Unterstützung steht folgendes nuget Paket bereit: RE-Push Das Paket muss nicht zwingend genutzt werden.

Pure C

Folgender C-Sharp Code kann genutzt werden, um Push-Benachrichtigungen ohne fremde Bibliotheken zu versenden:

  public static string BaseUri { get; set; } = "https://api.re-push.io/v1";
  
  public static async Task Send(string title, string message, Guid serviceIdent, Guid token, string password)
      => await Post($"{BaseUri}/send", JsonSerializer.Serialize(new { title, message, serviceIdent, token, password }));

  private static async Task<string> Post(string basePath, string messageContent, string accessToken = null)
  {
      var client = new HttpClient();
      if (accessToken != null) client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

      var result = await client.PostAsync(basePath, new StringContent(messageContent, Encoding.UTF8, "application/json"));
      return await result.Content.ReadAsStringAsync();
  }

Asp.NET

Folgenden Abschnitt in die appsettings.json aufnehmen:

{
   ...,
   "RePush" : {
    "Enabled" : true,
    "Token" : "[TOKEN-ID]",
    "Password" : "[PASSWORT]",
    "Service" : "[SERVICE-ID]"
  },  
}

Konfigurations-Klasse innerhalb der Startup.cs registrieren:

public void ConfigureServices(IServiceCollection services) {
   ...
   services.Configure<RePushSettings>(Configuration.GetSection("RePush"));
   ...
}

Abholen der Konfigurations-Klasse via "Dependendy Injection":

// constructor
public CLASS(IOptions<RePushSettings> pushSettings) {
   _pushSettings = pushSettings.Value;
}

Absenden einer Push-Benachrichtigung an alle Abonnementen:

if (_pushSettings != null && _pushSettings.Enabled)
{
    await RePush.Send("Mitteilung", "Ein wichtiges Ereignis auf auf dem Server hat statt gefunden.", _pushSettings);
}

Powershell

Invoke-WebRequest -Uri https://api.re-push.io/v1/send -Method POST -Body @{
 "title"="[TITEL]";
 "message"="[MESSAGE]";
 "serviceIdent"="[SERVICE-ID]";
 "token"="[TOKEN-ID]";
 "password"="[PASSWORT]";
}

Fragen und Antworten

Die App ist auf deutsch. Werden andere Sprachen unterstützt?

Derzeit ist die App nur auf deutsch verfügbar. Es ist geplant auch andere Sprachen zu unterstützen.

Ich habe mich zunächst für eine anonymes Konto entschieden. Wie kann ich es in ein registriertes Konto umwandeln?

Die RE-Push App kann ohne Registrierung mit einem Klick genutzt werden. Das vereinfacht das Testen und ermöglicht es sehr schnell zu prüfen, ob die App das richtige für das aktuelle Vorhaben ist. Ein anonymes Konto kann später schnell und einfach über den Menüpunkt "Einstellungen" in ein Konto mit Registrierung geändert werden (In Arbeit).