1

Ich muss den Benutzer benachrichtigen, wenn eine bestimmte Bedingung erfüllt ist, aber diese Bedingung möglicherweise oder nicht in Monaten zusammentreffen. Ich muss die Zustandsprüfung im Hintergrund ausführen (selbst wenn die App beendet wird), damit ich erkennen kann, ob die Bedingung erfüllt ist (selbst wenn dies nach 3 Monaten geschieht). Wenn die Bedingung erfüllt ist, muss ich die Benachrichtigung nur an einen einzelnen Benutzer (nicht an alle Benutzer) senden.Fortfahren Code im Hintergrund zum Senden von Benachrichtigungen an einen einzelnen Benutzer

Ich bin nicht sicher, was der beste Weg ist, es zu tun. Lokale Benachrichtigung oder Push-Benachrichtigung? Ich kann keine lokale Benachrichtigung im Voraus planen, weil ich nicht weiß, wann sie die Bedingung erfüllen wird. Ich denke, dass eine Push-Benachrichtigung nicht erforderlich ist, da ich nur eine Benachrichtigung an nur einen Benutzer in mehreren Tagen/Monaten sende.

Ich muss auch ständig diesen Check im Hintergrund ausführen. Ich weiß, dass es unbegrenzt im Hintergrund ausgeführt werden kann, indem man die Standortaktualisierung verwendet (signifikante Überwachung oder Hintergrundnavigation). Aber mein Code zum Überprüfen von Bedingungen erfordert keine Standortaktualisierungen. Soweit ich weiß, erlaubt Apple nur Standort-Updates oder netzwerkbezogene Aufgaben im Hintergrund (für einige Minuten). Deshalb denke ich darüber nach, meinen Code in den Update-Code für den Hintergrund-Standort zu setzen.

Meiner Meinung nach sollte ich die lokale Benachrichtigung verwenden und meinen Code in den Updatecode für den Hintergrundstandort setzen, damit ich ständig überprüfen kann, ob bestimmte Bedingungen erfüllt sind. Bei dieser Hintergrundprüfung wird die lokale Benachrichtigung geplant und dem Benutzer angezeigt, der dieses Gerät verwendet. Ich denke nicht, dass es möglich ist, eine Push-Benachrichtigung durch Code zu planen, der im Hintergrund läuft.

Zusammengefasst habe ich folgende drei Fragen

  1. Soll ich meinen Code in Update Hintergrund Lage? Wenn nicht, was ist der richtige Ansatz, um meinen Code unendlich ohne Hintergrund-Update im Hintergrund laufen zu lassen?

  2. Wird Apple die Anwendung ablehnen, wenn ich meinen Code in die Hintergrundortaktualisierung einfüge, während der Standortaktualisierungscode den aktuellen Standort nicht tatsächlich sendet/empfängt?

  3. Welche Art von Benachrichtigung sollte ich in dieser Situation verwenden, in der ich nach Monaten eine Benachrichtigung an einen einzelnen Benutzer sende? Würden Sie die lokale Benachrichtigung verwenden? oder Push-Benachrichtigung.

Bitte antworten Sie. Jede Hilfe wird wirklich geschätzt.

Vielen Dank im Voraus.

Antwort

0

Dies ist leider ein kniffliges Problem.

  1. Mit Apple können Sie keine lang laufenden Vorgänge im Hintergrund erstellen. Wie Sie bereits erwähnt haben, können Sie Code im Hintergrund mit Standortaktualisierungen oder Audio hinzufügen, aber keine davon ist eine sehr gute Lösung, da (1) Apple Sie wahrscheinlich vom App Store abweist und (2) der Benutzer die App wahrscheinlich schließt Sie bemerken ein großes Standbanner oben auf dem Telefon (oder ein seltsames Hintergrund-Audiosignal), und wenn Sie die App schließen, wird Ihr Vorgang beendet. Für wirklich lange laufende Aufgaben ist es wahrscheinlich am besten, einen Server einzurichten und einen Cron-Job oder einen gleichwertigen lang andauernden Vorgang auszuführen. Nur so können Sie wissen, dass die Aufgabe weiterhin ausgeführt wird.

  2. Entschuldigung, ich habe nur eine nach der anderen beantwortet, aber wie oben erwähnt, ja, werden sie wahrscheinlich Ihren Code dafür ablehnen. Als Faustregel gilt: Wenn Sie glauben, dass der von Apple erstellte Code nicht für das gedacht ist, für das Sie ihn verwenden, wird Apple Ihre App wahrscheinlich ablehnen.

  3. Es klingt wie Sie sollten eine Remote-Benachrichtigung verwenden. Wenn Sie eine Remote-Benachrichtigung verwenden, möchten Sie wahrscheinlich sowieso eine Art Backend. Sie könnten eine lokale Benachrichtigung verwenden, um einen Benutzer nach ein paar Monaten zu benachrichtigen, aber Sie müssen die genaue Zeit wissen, um es nach vorne zu senden, was nicht so klingt, als würden Sie es tun.

Zusammenfassend: Versuchen Sie, ein einfaches BE zu bauen. Verwenden Sie vielleicht Firebase-Funktionen oder etwas Ähnliches, und bauen Sie auch ein APNS-System zum Senden von Pushs auf. Teilen Sie dem Server in der App mit, dass er mit der Verarbeitung der Informationen beginnt, und senden Sie den Push zurück, wenn er fertig ist. Die Situation klingt nach einem perfekten Anwendungsfall für serverseitige Logik.

Hoffe, dass hilft!

+0

Danke für die Antwort. Ja, ich habe anstelle von Firbase das mobile Server-Server-Modul von Parse Server. Wie mache ich dasselbe für Parse Server? Sollte ich eine Cloud-Code-Funktion erstellen, die die Bedingung auf der Serverseite prüft und eine Push-Benachrichtigung sendet, wenn eine Bedingung erfüllt ist? –

+0

Ja, das stimmt genau. Parse Server ist eine perfekte Option dafür. Erstellen Sie Cloud-Code und verwenden Sie den Push-Dienst von Parse. – tbogosia

+0

Gotcha. Vielen Dank für die schnelle Antwort und die Lösung meines Problems. –

Verwandte Themen