Migrationsleitfaden
Migration von Android SDK 5 auf 6
Anchor link to- Migrieren Sie Ihr Projekt zu AndroidX gemäß der offiziellen Dokumentation.
- Fügen Sie ein neues Modul in der build.gradle-Datei der App hinzu, wenn Sie Firebase Cloud Messaging verwenden.
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 toDie 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 toPushManager 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 toBaseRegistrationReceiver 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 toBasePushMessageReceiver 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:
<meta-data android:name="com.pushwoosh.notification_service_extension" android:value="com.your.package.name.YourNotificationServiceExtension"/>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 toPushFragment 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 toPW_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:
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 toEs 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 to1. 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 toIhr 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.