2017-11-27 6 views
0

Ich versuche, eine Remote-Wecker-Anwendung für Android zu programmieren, weil meine Freundin manchmal ihren Zug verfehlt oder zu früh ist (ich möchte nicht aufwachen, sondern will nur, dass sie meine Weckzeit einstellt).Wie kann ich meine Android-App dazu bringen, Code auszuführen, wenn eine Benachrichtigung im Hintergrund empfangen wird?

Ich habe herausgefunden, wie man den Wecker mit Java in nur wenigen Minuten einstellt, aber diese Funktion muss remote ausgeführt werden. Wie geht das?

Im Moment verwende ich Googles Firebase Cloud Messaging service, um Benachrichtigungen einschließlich der Zeit für den Wecker als Parameter zu senden. Allerdings, wenn ich sie erhalte und die App ist nicht geöffnet, es führt keinen Code, aber wartet, bis der Benutzer auf die Benachrichtigung tippt. Aber was ich will, ist die App set the alarm clock automatically when a notification is received.

Ich weiß, das ist wahrscheinlich eine Reihe von Sicherheitsrichtlinien verletzen, aber dies ist nicht eine Anwendung für die Plays, aber für mich nur.

Meine Idee ist es, eine Art von Service zu bauen, der die ganze Zeit im Hintergrund wartet auf Benachrichtigungen. Glaubst du, dass so etwas möglich ist?

Danke für Ihre Hilfe :-)

Antwort

0

Versuchen Benachrichtigung Nutzlast an die Service-Klasse übergeben und dort können Sie Alarm-Manager im Hintergrund.

+0

Ich habe im Moment keinen Service. Ich habe nur eine Hauptaktivität und ich habe keinen Einfluss auf die Benachrichtigungsnutzlast. – Felix

+0

Was Sie erreichen möchten, ist eine stille Benachrichtigung. was nicht einmal erscheint, nur einen Alarm einstellen, sobald es das Gerät erreicht. Um das zu handhaben, erhalten Sie die Benachrichtigung vom Broadcast-Empfänger und senden diese an die Service-Klasse. da kannst du damit umgehen, was du machen willst. Ohne App zu öffnen. –

+0

Okay. Aber wie kann ich die Benachrichtigung vom Broadcast-Empfänger erkennen lassen? – Felix

0

Wir können keine Benachrichtigungsinformationen abrufen, wenn die App beendet wurde oder im Hintergrund, aber wenn die Benachrichtigung eintrifft, wird onCreate von FirebaseMessagingService ausgelöst, sodass wir versuchen könnten, Benachrichtigungsinformationen von Ihrem Backend-Server in onCreate zu erhalten.

public class MyFirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService { 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.d(TAG, "in onCreate, try to get informations from backend server, ex..send http request here"); 
} 
+0

Danke, das scheint hilfreich, ich werde es versuchen. – Felix

+0

Bitte upvote, wenn es Ihnen hilft, danke. –

+0

Ich möchte die Aktivität nicht starten, aber brauche Zugriff auf die Benachrichtigung (auch wenn das Gerät gesperrt ist) – Felix

Verwandte Themen