Guía de migración
Migración del SDK de Android 5 al 6
Anchor link to- Migre su proyecto a AndroidX de acuerdo con la documentación oficial.
- Añada un nuevo módulo en el archivo build.gradle de la aplicación si está utilizando Firebase Cloud Messaging.
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 toLa 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 toPushManager 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 toBaseRegistrationReceiver 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 toBasePushMessageReceiver 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:
<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); });
// 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 toPushFragment 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 toPW_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:
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 toTambié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 to1. 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 toSus 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.