Zum Inhalt springen

Migrationsleitfaden

Migration von Android SDK 5 auf 6

Anchor link to
  1. Migrieren Sie Ihr Projekt zu AndroidX gemäß der offiziellen Dokumentation.
  2. Fügen Sie ein neues Modul in der build.gradle-Datei der App hinzu, wenn Sie Firebase Cloud Messaging verwenden.
build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:+'

Für diejenigen, die Amazon verwenden und Firebase nicht nutzen, sind keine Änderungen erforderlich.

Migration von früheren Versionen des Android SDK

Anchor link to

Die meisten Pushwoosh-Klassen und -Methoden sind seit der Version 5.0 veraltet und einige von ihnen wurden entfernt. Die Klassen PushManager, BasePushMessageReceiver, BaseRegistrationReceiver, SendPushTagsCallback, PushFragment und PushEventListener sind weiterhin als Teil der com.pushwoosh:pushwoosh-deprecated-Bibliothek verfügbar, es wird jedoch empfohlen, so schnell wie möglich auf die neue API zu migrieren.

PushManager

Anchor link to

PushManager bestand aus verschiedenen Methoden für unterschiedliche Funktionen. Diese Methoden sind nun auf verschiedene Klassen und Bibliotheken aufgeteilt:
com.pushwoosh:pushwoosh: Pushwoosh, PushwooshNotificationSettings, PushwooshInApp.
com.pushwoosh:pushwoosh-badge: PushwooshBadge.
com.pushwoosh:pushwoosh-location: PushwooshLocation.
com.pushwoosh:pushwoosh-beacon: PushwooshBeacon.

BaseRegistrationReceiver

Anchor link to

BaseRegistrationReceiver wurde verwendet, um Push-Registrierungs- und Abmeldeereignisse zu behandeln. Dieser Receiver wird nun durch einen einfachen Callback-Mechanismus ersetzt:

Pushwoosh.getInstance().registerForPushNotifications(result -> {
if (result.isSuccess()) {
String token = result.getData();
// erfolgreiche Registrierung behandeln
}
else {
PushwooshException exception = result.getException();
// Registrierungsfehler behandeln
}
});

BasePushMessageReceiver

Anchor link to

BasePushMessageReceiver wurde verwendet, um das Benachrichtigungsverhalten von iOS beim Empfang einer Push-Benachrichtigung im Vordergrund zu imitieren. Dies wurde erreicht, indem die eingehende Benachrichtigung abgebrochen und der onMessageReceive-Callback aufgerufen wurde. Es war umständlich und erforderte eine manuelle Registrierung, wenn die Anwendung aktiv wurde, und eine Abmeldung, wenn die Anwendung in den Hintergrund ging.
Dieser Receiver wurde durch NotificationServiceExtension ersetzt:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_service_extension"
android:value="com.your.package.name.YourNotificationServiceExtension"/>
YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
public boolean onMessageReceived(final PushMessage message) {
if (isAppOnForeground()) {
Handler mainHandler = new Handler(getApplicationContext().getMainLooper());
mainHandler.post(() -> {
handlePush(message);
});
// dies zeigt an, dass die Benachrichtigung nicht angezeigt werden soll
return true;
}
return false;
}
@Override
protected void startActivityForPushMessage(PushMessage message) {
super.startActivityForPushMessage(message);
handlePush(message);
}
@MainThread
private void handlePush(PushMessage message) {
// TODO: Push-Nachricht behandeln
}
}

Diese Erweiterung wird auch verwendet, um das Eintreffen und Akzeptieren von Benachrichtigungen zu behandeln und ersetzt somit den gesamten umständlichen Code, der bei der manuellen Activity-Integration verwendet wurde.

PushFragment

Anchor link to

PushFragment war eine leichtgewichtige Alternative für die komplexe Integration, die den Activity-Lebenszyklus involviert. Andererseits erforderte es die Vererbung von FragmentActivity und nutzte implizit den komplexeren Fragment-Lebenszyklus.
PushFragment und PushEventListener werden nun durch Pushwoosh#registerForPushNotifications(Callback) und NotificationServiceExtension ersetzt.

Benutzerdefinierter Push Broadcast Receiver (PW_NOTIFICATION_RECEIVER)

Anchor link to

PW_NOTIFICATION_RECEIVER wurde verwendet, um das Verhalten anzupassen, wenn ein Benutzer auf eine Benachrichtigung klickt. Dies ermöglichte es, Benachrichtigungen außerhalb des Activity-Kontexts zu behandeln und je nach Benachrichtigungsinhalt verschiedene Activities zu öffnen. Diese Integration verwendete die interne Pushwoosh SDK API, die nicht mehr existiert.
Dieser Receiver wird nun vollständig durch NotificationServiceExtension ersetzt:

YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
protected void startActivityForPushMessage(PushMessage message) {
// super.startActivityForPushMessage() startet die Standard-Launcher-Activity
// oder eine mit der Aktion ${applicationId}.MESSAGE markierte Activity.
// Rufen Sie es einfach nicht auf, um dieses Verhalten zu überschreiben.
// super.startActivityForPushMessage(message);
// starten Sie stattdessen Ihre Activity:
Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Optional) Benachrichtigungsdaten an die Activity übergeben
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

Notification Factory

Anchor link to

Es gab auch einige Breaking Changes, die die Notification Factory betrafen:

1. AbsNotificationFactory wurde durch NotificationFactory ersetzt
2. Die Methoden AbsNotificationFactory#onPushReceived(PushData) und AbsNotificationFactory#onPushHandle(Activity) wurden durch die Klasse NotificationServiceExtension (onMessageReceived, startActivityForPushMessage) ersetzt.
3. DefaultNotificationFactory wurde durch PushwooshNotificationFactory ersetzt.
4. PushData wurde durch PushMessage ersetzt.

In-App-Nachrichten

Anchor link to

1. InAppFacade wurde durch PushwooshInApp ersetzt.
2. Das pushwoosh-Objekt wurde für die native JavaScript-Schnittstelle mit der folgenden API eingeführt:
getHwid(): string - gibt die Pushwoosh-HWID für das aktuelle Gerät zurück.
getVersion(): string - gibt die aktuelle Version des Pushwoosh SDK zurück.
postEvent(event: string, attributes?: object, successCallback?: function, errorCallback?: function) - sendet eine postEvent-Anfrage.
sendTags(tags: object) - sendet Tags, die mit dem aktuellen Gerät verknüpft sind.
getTags(successCallback: function, errorCallback?: function) - gibt Tags zurück, die mit dem aktuellen Gerät verknüpft sind.
closeInApp() - schließt die In-App-HTML-Seite.

Teilen Sie uns Ihr Feedback mit

Anchor link to

Ihr Feedback hilft uns, eine bessere Erfahrung zu schaffen. Daher würden wir uns freuen, von Ihnen zu hören, wenn Sie während des SDK-Integrationsprozesses auf Probleme stoßen. Sollten Sie Schwierigkeiten haben, zögern Sie bitte nicht, uns Ihre Gedanken über dieses Formular mitzuteilen.