Geräteübergreifende Anwendung zum Empfangen von Push-Benachrichtigungen
Nach oben zu Mobile-Tutorial: Verwenden von Remote-Mitteilungen (iOS und Android)
Inhaltsverzeichnis
In diesem Tutorial wird eine Basisanwendung zum Empfangen von Push-Benachrichtigungen mit generischen Android- bzw. iOS-Elementen erstellt und der für die jeweilige Plattform charakteristische Code hinzugefügt.
- Hinweis: Da unsere Implementierung auf dem REST BAAS-Framework basiert, können Sie in RAD Studio in Ihren iOS- oder Android-Apps einen der folgenden Dienst-Provider verwenden:
- Kinvey
- Parse
- EMS
Bevor Sie die Anwendung zum Empfangen von Push-Benachrichtigungen erstellen, müssen Sie diese beiden erforderlichen Schritte ausführen:
- Einrichten des Messaging-Dienstes
- Wählen Sie den Provider aus:
Entwerfen und Einrichten der Benutzeroberfläche
- Wählen Sie zum Erstellen einer geräteübergreifenden Anwendung einen der beiden folgenden Befehle aus:
- Datei > Neu > Geräteübergreifende Anwendung - Delphi > Leere Anwendung
- Datei > Neu > Geräteübergreifende Anwendung - C++Builder > Leere Anwendung
- Legen Sie eine TCheckBox-Komponente auf dem Formular ab.
- Legen Sie im Objektinspektor die folgenden Eigenschaften für die CheckBox-Komponente fest:
- Fügen Sie dem Formular eine TMemo-Komponente hinzu, und setzen Sie die Eigenschaft Align auf Client.
- Legen Sie ein TPushEvents-Objekt auf dem Formular ab.
- Setzen Sie AutoActivate auf False.
- Fügen Sie im LiveBindings-Designer eine Verknüpfung von Active in PushEvents zu IsChecked in CheckBox ein. Die Eigenschaft Active von PushEvents wird auf True gesetzt, wenn die CheckBox-Komponente aktiviert wird.
- Fügen Sie je nach gewünschtem Dienst-Provider Folgendes hinzu:
- Für Parse: eine TParseProvider-Komponente.
- Für Kinvey: eine TKinveyProvider-Komponente.
- Für EMS: eine TEMSProvider-Komponente.
- Verwenden von TKinveyProvider (iOS oder Android)
Legen Sie im Objektinspektor die folgenden Eigenschaften für den KinveyProvider fest:
- Erweitern Sie den Knoten Android Push, und kopieren Sie die Projektnummer aus Registrieren bei Google nach GCMAppID.
- Setzen Sie AppKey, AppSecret und MasterSecret auf die Schlüsselwerte (API Keys) aus Einrichten des Projekts bei Kinvey.
- Setzen Sie UserName und Password auf die unter Hinzufügen eines Benutzers bei Kinvey festgelegten Werte.
- Verwenden von TParseProvider (iOS oder Android)
Legen Sie im Objektinspektor die folgenden Eigenschaften für den ParseProvider fest:
- Setzen Sie ApplicationID, MasterKey und RestApiKey auf die API-Schlüssel (API Keys) aus Erstellen eines Projekts bei Parse.
- Verwenden von TEMSProvider (iOS oder Android)
Legen Sie im Objektinspektor die folgenden Eigenschaften für den EMSProvider fest:
- Erweitern Sie den Knoten Android Push, und kopieren Sie die Projektnummer aus Registrieren bei Google nach GCMAppID.
- Setzen Sie ApplicationId, AppSecret und MasterSecret auf die Werte der API-Keys aus Einrichten des EMS-Servers.
Erstellen der Ereignisbehandlungsroutinen
-
Wählen Sie auf dem Formular PushEvents1 aus, und wechseln Sie zum Objektinspektor:
- Überprüfen Sie, ob die Eigenschaft Provider je nach verwendetem Provider auf KinveyProvider1, auf ParseProvider1 oder auf EMSProvider1 gesetzt ist.
- Erstellen Sie auf der Registerkarte Ereignisse eine Ereignisbehandlungsroutine für jedes Ereignis, indem Sie auf das Wertefeld doppelklicken.
- Wechseln Sie zur Registerkarte Code, indem Sie F12 drücken.
- Definieren Sie die Ereignisbehandlungsroutinen wie folgt:
- Delphi:
implementation {$R *.fmx} procedure TForm1.PushEvents1DeviceRegistered(Sender: TObject); begin Memo1.Lines.Add('Device Registered'); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1DeviceTokenReceived(Sender: TObject); begin Memo1.Lines.Add('Device Token Received'); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1DeviceTokenRequestFailed(Sender: TObject; const AErrorMessage: string); begin Memo1.Lines.Add('Device Token Request Failed'); Memo1.Lines.Add(AErrorMessage); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1PushReceived(Sender: TObject; const AData: TPushData); begin Memo1.Lines.Add('Device push received'); Memo1.Lines.Add(AData.Message); Memo1.Lines.Add(''); end; end.
- C++:
//-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceRegistered(TObject *Sender) { Memo1->Lines->Add("Device Registered"); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceTokenReceived(TObject *Sender) { Memo1->Lines->Add("Device Token Received"); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceTokenRequestFailed(TObject *Sender, const UnicodeString AErrorMessage) { Memo1->Lines->Add("Device Token Request Failed"); Memo1->Lines->Add(AErrorMessage); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1PushReceived(TObject *Sender, TPushData * const AData) { Memo1->Lines->Add("Push Received"); Memo1->Lines->Add(AData->Message); Memo1->Lines->Add(""); } //--------------------------------------------------------------------------
Android-Einstellungen
- Hinweis: Unter GCM Overview (EN) können Sie feststellen, ob Ihr Android-Gerät GCM unterstützt.
Projekteinstellungen
So aktivieren Sie Ihre Anwendung für den Empfang von Remote-Benachrichtigungen:
- Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf Ihr Projekt.
- Wählen Sie Projekt > Optionen > Berechtigungsliste.
- Setzen Sie den Wert von Push-Benachrichtigungen empfangen auf
True
.
Hinweis: Falls eine Benachrichtigung auch empfangen werden soll, wenn die Anwendung beim Eingang der Benachrichtigung nicht ausgeführt wird, müssen Sie eine Dienstklasse registrieren. Die Java-Dienstklasse erstellt einen Eintrag in der Mitteilungszentrale des Android-Geräts. Wenn Sie keine Einträge in der Mitteilungszentrale benötigen oder möchten, können Sie diesen Schritt überspringen.
Sie müssen in die Datei AndroidManifest.xml für das Projekt einen zusätzlichen Eintrag aufnehmen, indem Sie die Datei "AndroidManifest.template.xml" anpassen. Suchen Sie in der Datei AndroidManifest.template.xml für Ihr Projekt nach dem folgenden Tag:
<%receivers%>
Fügen Sie darunter den folgenden Code ein:
<service android:name="com.embarcadero.gcm.notifications.GCMIntentService" />
iOS-Einstellungen
Projekteinstellungen
- Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf Ihr Projekt.
- Wählen Sie Projekt > Optionen > Versionsinformationen, und legen Sie den CFBundleIdentifier-Schlüssel fest. Dieser Schlüssel muss identisch mit dem Bezeichner Ihrer App-ID sein. Dabei handelt es sich um die Bundle ID aus Erstellen einer iOS-App-ID auf Apple Developer Program.
Ausführen der Anwendung auf einem mobilen Gerät
Ihre Anwendung kann jetzt auf einem Simulator oder einem angeschlossenen mobilen Gerät ausgeführt werden.
So führen Sie die Anwendung aus:
- Wählen Sie in der Projektverwaltung die Zielplattform aus.
- Wählen Sie einen der folgenden Befehle aus:
- Start > Start
- Start > Ohne Debugger ausführen
- Klicken Sie auf das Kontrollkästchen Aktiv.
- Wechseln Sie zu Parse, Kinvey oder Senden von EMS-Push-Meldungen, und senden Sie eine neue Push-Benachrichtigung:
- Hinweis: Sie können mit Ihrer eigenen EMS-Anwendung Meldungen über EMS-Push-Benachrichtigungen senden.
Parse Kinvey EMS - Wechseln Sie zu Ihrem mobilen Gerät:
iOS Android iOS-EMS
- Verlagern Sie Ihre App in den Hintergrund, und senden Sie eine weitere Push-Benachrichtigung von Parse oder Kinvey. Wechseln Sie zu Mitteilungen:
iOS Android
Siehe auch
- Mobile-Tutorial: Verwenden von Mitteilungen (iOS und Android)
- Mobile-Tutorial: Verwenden von BaaS für Backend-Speicher (iOS und Android)
- Enterprise Mobility Services (EMS)
- EMS-Push-Benachrichtigungen
- Berechtigungsliste