myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Cross Platform Entwicklung - Mobile und IoT » Notifications direkt durch die App erzeugen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Notifications direkt durch die App erzeugen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
boenz666 boenz666 ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.05.2018
Beiträge: 12
Entwicklungsumgebung: Visual Studio


boenz666 ist offline

Notifications direkt durch die App erzeugen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich programmiere aktuell ein bischen zum Testen einen Backgroundworker.
Dieser arbeitet im Hintergrund und wird zukünftig für mich Informationen aus einer Website (API) sammeln. Wenn sich dort etwas geändert hat (Angebot, Preis, etc.) dann soll er mich darüber informieren.

Aktuell bilde ich das über eine Information per Mail ab.
Mein eigentliches Ziel ist jedoch, dass über Pushnachrichten abzubilden. So kann ich über einen einfachen Klick auf die Pushnachricht direkt in die Applikation auf eine relvante Activity gelangen und mir die veränderten Daten dort anzeigen lassen.

In den Tutorials zu den Pushnotifications lese ich jedoch immer nur etwas von Serverseite und Empfängerseite. Ich verstehe, dass so z.B. auch Whatsapp funktioniert. Der Server stellt fest, dass der Benutzer eine neue Nachricht hat und pingt dann quasi die Applikation an, wo eine Pushnachricht erscheint.

Ich möchte nun ja aber, dass meine App quasi selber der Sender ist und der Empfänger quasi der Benutzer. Wenn die App im Hintergrund läuft erfahre ich ja sonst nie, dass Änderungen eingetreten sind. Die aktuelle Umsetzung per Mail finde ich unschön, da ich dann die Applikation selber starten muss und dann auf die jeweilige Activity.

Kann man Pushnachrichten so nicht verwenden, wie ich mir das vorstelle?
Wenn das nämlich nicht geht, kann ich den Backgroundworker vergessen und muss mir dann etwas programmieren, was auf einem Server arbeitet und mich so anpingen kann.

Meine Umgebung:
Windows 10 Home 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202)

Meine Entwicklungsumgebung:
Microsoft Visual Studio Professional 2019
Version 16.5.4
Neuer Beitrag 20.04.2020 23:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zunächst die Bitte in Zukunft einen Titel zu wählen, mit dem ein potentieller Helfer direkt erkennen kann, worum es geht.
Ich habs korrigiert Daumen hoch


Push Nachrichten werden immer vom Server erzeugt.
Grund dafür ist, dass prinzipiell nicht die App sondern das Mobiltelefon, also bei Dir Android der eigentliche Empfänger ist.
Android routet dann das ganze im Namen der App in das Notification Center (bei iOS das gleiche).

Der Grund ist: die Notification muss schließlich auftauchen, auch wenn die App gar nicht läuft.

Was Du willst sind keine Push Notifications sonder Local Notifications, also ohne Server.
 Local notifications in Xamarin.Forms
Local Notifications haben aufgrund ihrer Funktionsweise dann durchaus eingeschränkte Fähigkeiten.

Ich finde es aber sehr kurios, dass Du einen Worker (und das drum herum) in der App zum Crawlen der Informationen hast.
Sowas ist ja eigentlich aufgabe einer server-basierten Applikation. Auf dem Handy saugt sowas ja binnen kürzester Zeit den Akku leer.
Neuer Beitrag 20.04.2020 23:56 Beiträge des Benutzers | zu Buddylist hinzufügen
boenz666 boenz666 ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.05.2018
Beiträge: 12
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von boenz666

boenz666 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, wird gemacht mit dem Threadtitel in Zukunft.
Aha, so etwas dachte ich mir schon irgendwie, habe dann tatsächlich völlig falsch angesetzt.

Jetzt muss ich aber dann doch mal fragen, wie sich so etwas realisieren lässt?
Also ich habe mir gestern auch einige Tutorials mit Kommunikation zwischen Client und Server und so etwas angeguckt, aber ich verstehe leider ein Paar Dinge nicht, weshalb ich mich gescheut habe, dass auf diesen Weg umzusetzen, wo ich aber leider wohl nicht drum rum komme.

Auf Handyebene ist dann alles klar. Hier programmiere ich den Empfang von Pushnachrichten.
Aber ich verstehe das mit dem Server noch nicht ganz, wie das dann umgebungstechnisch zu realisieren ist. Also ich habe zu hause ein NAS, das würde sich als Server ja anbieten, da rund um die Uhr erreichbar und auch für so etwas ausgelegt glaube ich (Synology DS918+).

Ich finde aber nur Tutorials, wie man da losprogrammiert, nicht aber, wei man das bereitstellt.
- Also was für ein Projekttyp muss das sein? Ich schätze mal keine Wpf/Windows Forms Anwendung, sondern so etwas wie eine Consolenanwendung?
Oder geht da alles tatsächlich?
- Wie stelle ich so etwas auf meinem Server bereit? Also was für ein Dateityp muss das sein?
Neuer Beitrag 21.04.2020 00:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ob Du völlig falsch angesetzt hast, das kann ich nicht sagen; hört sich für mich einfach ungewöhnlich an.
Aber wie das meistens läuft:
- Eine zentrale Plattform (nennen wir es mal Server App) würde das Crawling übernehmen
- Dadurch wird natürlich dann auch kein Akku oder Bandbreite/Volumen gezogen
- Sobald die Server App etwas findet wirft sie "Events", ähnlich wie Events in WinForms zB
- EventHandler reagieren dann darauf und verschicken dann zB eine Mail, eine SMS oder eine Notification
- Die Server App bietet eine Schnittstellen, mit der dann Apps aktiv kommunizieren können: eine Notification beinhaltet also zB die Information, dass es etwas "neues" gibt - aber keine Inhalte. Die Inhalte holt sich die Mobile App dann über einen GET Request, zB über  REST oder  gRPC von der Server App
Je nach Ausbaustufe reicht eine minimalste Server Applikation; kann man aber natürlich auch im Endeffekt unendlich weit skalieren.

Aber gleich vorweg: das sind nun sehr viele neue Technologien für Dich.
Alles nicht sonderlich komplex, aber eben "viel".

Sofern Du .NET dafür verwenden willst, so kannst Du alles prinzipiell über Konsolenanwendung machen; eine UI Technologie wie WinForms oder WPF geht natürlich nicht.
Im Falle von .NET ist das so, dass ASP.NET Core selbst eine Konsolenapplikation ist, mit der Du sowas sehr einfach abbilden kannst.

- Deinen API Teil machst Du zB mit  ASP.NET Core MVC
- Die Background Aufgaben ebenfalls über ASP.NET Core mit Hilfe von  Hosted Services

Der Background Task kann also das Crawlen übernehmen und Notifications anstoßen; macht am Ende vom Tag exakt das, was wie Worker in Android machen - nur eben in der ASP.NET Core Pipeline.

ASP.NET Core auf der Synology:

Eine NAS ist nicht unbedingt eine Plattform für sowas.
Bei Deiner NAS hast Du nun etwas Glück, dass Du damit grundlegend sowas programmieren kannst, weil Du eine entsprechende CPU und Plattform hast, mit der Du Docker Container betreiben kannst.

Das heisst, dass Du prinzipiell eine Server App programmierst, die in einem Docker Container läuft:

- ASP.NET Core selbst bekommst Du über das entsprechende Publishing in den Docker Container.
- Aus dem Container machst Du ein Image.
- Das Image schiebst Du in eine Registry (ähnliche Funktionweise wie NuGet)
- Die Registry hinterlegst Du im  Docker Manager auf der Synology
- Das Image kannst dann laden und lokal einen Container starten
 Docker images for ASP.NET Core

Die App auf der Synology kann natürlich sehr einfach nach Außen kommunizieren, um Zb Notifications zu verschicken.
Du musst natürlich dann aber in Deinem Netzwerk sicherstellen, dass man von außen auch die Applikaton im Docker Container auf der NAS erreicht.

Ich nehme die Synology sehr gerne für Proof of Concepts bei Kunden, da sie vergleichsweise günstig ist und sehr viel Leistung bietet (deutlich mehr als ein Raspberry aber auch nicht so extrem teuer wie ein Embedded Industrie PC; meistens die DS 718+).
Neuer Beitrag 21.04.2020 01:01 Beiträge des Benutzers | zu Buddylist hinzufügen
boenz666 boenz666 ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.05.2018
Beiträge: 12
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von boenz666

boenz666 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wow, danke da hast du dir echt viel Mühe gegebn.
Ich habe die App nach deinen Tips auf dem Handy erstmal fertiggestellt.
Die tut schon mal so ihren Dienst absolut zufriedenstellend.
Damit das in Zukunft nicht quick & dirty ist und Akku und Datenvolumen schont, werde ich mir das mit dem Server als nächstes Projekt vornehmen.

Du hast mir sehr geholfen, da ich zuvor mit googlen nichts gefunden habe, was mir hiflt, da ich nicht wusste so richtig wonach ich suchen soll.


Ich freue mich schon damit zeitnah loslegen zu können und mein Projekt richtig rund zu machen.

Vielen Dank noch einmal
Neuer Beitrag 21.04.2020 23:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 03.07.2020 15:52