Saltar al contenido

Guía de migración

Migración del SDK de Android 5 al 6

Anchor link to
  1. Migre su proyecto a AndroidX de acuerdo con la documentación oficial.
  2. Añada un nuevo módulo en el archivo build.gradle de la aplicación si está utilizando Firebase Cloud Messaging.
build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:+'

Para aquellos que usan Amazon y no usan Firebase, no se necesitan cambios.

Migración desde versiones anteriores del SDK de Android

Anchor link to

La mayoría de las clases y métodos de Pushwoosh quedaron obsoletos desde la versión 5.0 y algunos de ellos se eliminaron. Las clases PushManager, BasePushMessageReceiver, BaseRegistrationReceiver, SendPushTagsCallback, PushFragment y PushEventListener todavía están disponibles como parte de la biblioteca com.pushwoosh:pushwoosh-deprecated, pero se recomienda migrar a la nueva API lo antes posible.

PushManager

Anchor link to

PushManager consistía en varios métodos para diferentes características. Estos métodos ahora están divididos entre diferentes clases y bibliotecas:
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 se utilizaba para gestionar los eventos de registro y anulación de registro de push. Este receptor ahora se reemplaza por un mecanismo de devolución de llamada simple:

Pushwoosh.getInstance().registerForPushNotifications(result -> {
if (result.isSuccess()) {
String token = result.getData();
// handle successful registration
}
else {
PushwooshException exception = result.getException();
// handle registration error
}
});

BasePushMessageReceiver

Anchor link to

BasePushMessageReceiver se utilizaba para imitar el comportamiento de las notificaciones de iOS al recibir una notificación push en primer plano. Se lograba cancelando la notificación entrante e invocando la devolución de llamada onMessageReceive. Era engorroso y requería un registro manual cuando la aplicación se activaba y una anulación de registro cuando la aplicación pasaba a segundo plano.
Este receptor fue reemplazado por NotificationServiceExtension:

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);
});
// this indicates that notification should not be displayed
return true;
}
return false;
}
@Override
protected void startActivityForPushMessage(PushMessage message) {
super.startActivityForPushMessage(message);
handlePush(message);
}
@MainThread
private void handlePush(PushMessage message) {
// TODO: handle push message
}
}

Esta extensión también se utiliza para gestionar los eventos de llegada y aceptación de notificaciones, reemplazando así todo el código engorroso que se utilizaba en la integración manual de Activity.

PushFragment

Anchor link to

PushFragment era una alternativa ligera para la compleja integración que involucra el ciclo de vida de Activity. Pero, por otro lado, requería la herencia de FragmentActivity e implícitamente utilizaba el ciclo de vida más complejo de Fragment.
PushFragment y PushEventListener ahora son reemplazados por Pushwoosh#registerForPushNotifications(Callback) y NotificationServiceExtension.

Receptor de difusión de push personalizado (PW_NOTIFICATION_RECEIVER)

Anchor link to

PW_NOTIFICATION_RECEIVER se utilizaba para personalizar el comportamiento cuando un usuario hace clic en una notificación. Esto permitía gestionar las notificaciones fuera del contexto de Activity y abrir diferentes Activities dependiendo del contenido de la notificación. Esta integración utilizaba la API interna del SDK de Pushwoosh que ya no existe.
Este receptor ahora está completamente reemplazado por NotificationServiceExtension:

YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
protected void startActivityForPushMessage(PushMessage message) {
// super.startActivityForPushMessage() starts default launcher activity
// or activity marked with ${applicationId}.MESSAGE action.
// Simply do not call it to override this behaviour.
// super.startActivityForPushMessage(message);
// start your activity instead:
Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Optional) pass notification data to Activity
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

Fábrica de notificaciones

Anchor link to

También hubo algunos cambios importantes que involucran a la fábrica de notificaciones:

1. AbsNotificationFactory fue reemplazado por NotificationFactory
2. Los métodos AbsNotificationFactory#onPushReceived(PushData) y AbsNotificationFactory#onPushHandle(Activity) fueron reemplazados por la clase NotificationServiceExtension (onMessageReceived, startActivityForPushMessage).
3. DefaultNotificationFactory fue reemplazado por PushwooshNotificationFactory.
4. PushData fue reemplazado por PushMessage.

Mensajes In-App

Anchor link to

1. InAppFacade fue reemplazado por PushwooshInApp.
2. Se introdujo el objeto pushwoosh para la interfaz nativa de JavaScript con la siguiente API:
getHwid(): string - devuelve el hwid de pushwoosh para el dispositivo actual.
getVersion(): string - devuelve la versión actual del SDK de pushwoosh.
postEvent(event: string, attributes?: object, successCallback?: function, errorCallback?: function) - envía la solicitud postEvent.
sendTags(tags: object) - envía etiquetas asociadas con el dispositivo actual.
getTags(successCallback: function, errorCallback?: function) - devuelve las etiquetas asociadas con el dispositivo actual.
closeInApp() - cierra la página html In-App.

Comparta sus comentarios con nosotros

Anchor link to

Sus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de usted si tiene algún problema durante el proceso de integración del SDK. Si encuentra alguna dificultad, no dude en compartir sus opiniones con nosotros a través de este formulario.