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.
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
- RAD Server (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 RAD Server (EMS): ein TEMSProvider.
- 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 in Kinvey.
- Setzen Sie UserName und Password auf die unter Hinzufügen eines Benutzers in 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.
Hinweis: Beim Entwickeln von Android-Apps und der Verwendung von Parse müssen Sie die GCM AppID nicht hinzufügen. - 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 Schlüsselwerte (API Keys) aus Einrichten der RAD Server Engine.
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
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
.
Sie müssen für das Projekt einen zusätzlichen Eintrag in die Datei AndroidManifest.xml 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" />
Bitte berücksichtigen Sie die folgenden Updates in Ihrem Code:
- Bevor Sie die Projekteinstellungen für Ihr Projekt anwenden, müssen Sie das GCM in einem Hintergrund-Thread registrieren.
- Sie können die Eigenschaft
"TPushEvents.Active"
im Haupt-Thread zuweisen, ohne dass eine Instanz der Java-Exception"IOException"
ausgelöst wird. - Sie können die Eigenschaft
"TPushServiceConnection.Active"
im Haupt-Thread zuweisen, ohne dass eine Instanz der Java-Exception"IOException"
ausgelöst wird.
- Sie können die Eigenschaft
- Der Statuswechsel zu
"Starting"
wird jetzt unterstützt.- Die Plattformen
"Android"
und"iOS"
verhalten sich in Bezug auf den Lebenszyklus desPush-Dienstes
ähnlich. - Jetzt können Sie testen, ob der
"Push-Dienst"
in den Status"Starting"
übergegangen ist, wenn ein Verbindungswechsel stattfindet, ähnlich wie mit dem folgenden Code-Ansatz:
- Die Plattformen
procedure TForm1.OnServiceConnectionChange(Sender: TObject; PushChanges: TPushService.TChanges);
begin
if TPushService.TChange.Status in PushChanges then
begin
if FPushService.Status = TPushService.TStatus.Starting then
begin
Memo1.Lines.Add('GCM registration is going to start.');
end;
end;
end;
Ereignisbehandlungsroutinen
werden jetzt im Haupt-Thread aufgerufen.- Die Ereignisbehandlungsroutinen
"TPushEvents.OnDeviceRegistered"
,"TPushEvents.OnDeviceTokenReceived"
,"TPushEvents.OnDeviceTokenRequestFailed"
und"TPushEvents.OnPushReceived"
müssen bei der Interaktion mit den visuellen Steuerelementen"TThread.Synchronize"
nicht mehr verwenden. - Die Ereignisbehandlungsroutinen
"TPushServiceConnection.OnChange"
und"TPushServiceConnection.OnReceiveNotification"
müssen bei der Interaktion mit den visuellen Steuerelementen"TThread.Synchronize"
nicht mehr verwenden.
- Die Ereignisbehandlungsroutinen
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 im Projekte-Fenster 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 zu Senden von RAD Server-Push-Meldungen und senden Sie eine neue Push-Benachrichtigung:
Hinweis: Sie können mit Ihrer eigenen RAD Server-Anwendung Meldungen zu RAD Server-Push-Benachrichtigungen senden.Parse Kinvey RAD Server (EMS) - Wechseln Sie zu Ihrem mobilen Gerät:
iOS Android iOS RAD Server (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)
- RAD Server (EMS)
- Push-Benachrichtigungen in RAD Server
- Berechtigungsliste