Pular para o conteúdo

Guia de migração

Migração do SDK Android 5 para 6

Anchor link to
  1. Migre seu projeto para o AndroidX de acordo com a documentação oficial.
  2. Adicione um novo módulo no arquivo build.gradle do aplicativo se você estiver usando o Firebase Cloud Messaging.
build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:+'

Para aqueles que usam Amazon e não usam Firebase, nenhuma alteração é necessária.

Migração de versões anteriores do SDK Android

Anchor link to

A maioria das classes e métodos do Pushwoosh tornaram-se obsoletos desde a versão 5.0 e alguns deles foram extintos. As classes PushManager, BasePushMessageReceiver, BaseRegistrationReceiver, SendPushTagsCallback, PushFragment e PushEventListener ainda estão disponíveis como parte da biblioteca com.pushwoosh:pushwoosh-deprecated, mas é recomendado migrar para a nova API o mais rápido possível.

PushManager

Anchor link to

O PushManager consistia em vários métodos para diferentes funcionalidades. Esses métodos agora estão divididos entre diferentes classes e 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

O BaseRegistrationReceiver era usado para lidar com eventos de registro e cancelamento de registro de push. Este receptor agora é substituído por um mecanismo de callback simples:

Pushwoosh.getInstance().registerForPushNotifications(result -> {
if (result.isSuccess()) {
String token = result.getData();
// lida com o registro bem-sucedido
}
else {
PushwooshException exception = result.getException();
// lida com o erro de registro
}
});

BasePushMessageReceiver

Anchor link to

O BasePushMessageReceiver era usado para imitar o comportamento de notificação do iOS ao receber uma notificação push em primeiro plano. Isso era alcançado cancelando a notificação recebida e invocando o callback onMessageReceive. Era um processo desajeitado e exigia registro manual quando o aplicativo se tornava ativo e cancelamento de registro quando o aplicativo ia para segundo plano.
Este receptor foi substituído 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);
});
// isso indica que a notificação não deve ser exibida
return true;
}
return false;
}
@Override
protected void startActivityForPushMessage(PushMessage message) {
super.startActivityForPushMessage(message);
handlePush(message);
}
@MainThread
private void handlePush(PushMessage message) {
// TODO: lidar com a mensagem push
}
}

Esta extensão também é usada para lidar com eventos de chegada e aceitação de notificações, substituindo assim todo o código desajeitado que era usado na integração manual de Activity.

PushFragment

Anchor link to

O PushFragment era uma alternativa leve para a integração complexa envolvendo o ciclo de vida da Activity. Mas, por outro lado, exigia a herança de FragmentActivity e usava implicitamente o ciclo de vida mais complexo do Fragment.
PushFragment e PushEventListener agora são substituídos por Pushwoosh#registerForPushNotifications(Callback) e NotificationServiceExtension.

Receptor de Broadcast de Push Personalizado (PW_NOTIFICATION_RECEIVER)

Anchor link to

O PW_NOTIFICATION_RECEIVER era usado para personalizar o comportamento quando o usuário clica em uma notificação. Isso permitia lidar com notificações fora do contexto da Activity e abrir diferentes Activities dependendo do conteúdo da notificação. Essa integração usava a API interna do SDK do Pushwoosh, que não existe mais.
Este receptor agora é completamente substituído por NotificationServiceExtension:

YourNotificationServiceExtension.java
public class YourNotificationServiceExtension extends NotificationServiceExtension {
@Override
protected void startActivityForPushMessage(PushMessage message) {
// super.startActivityForPushMessage() inicia a activity de inicialização padrão
// ou a activity marcada com a ação ${applicationId}.MESSAGE.
// Simplesmente não o chame para substituir este comportamento.
// super.startActivityForPushMessage(message);
// inicie sua activity em vez disso:
Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Opcional) passe os dados da notificação para a Activity
launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent);
}
}

Fábrica de Notificações

Anchor link to

Também houve algumas alterações importantes envolvendo a fábrica de notificações:

1. AbsNotificationFactory foi substituído por NotificationFactory
2. Os métodos AbsNotificationFactory#onPushReceived(PushData) e AbsNotificationFactory#onPushHandle(Activity) foram substituídos pela classe NotificationServiceExtension (onMessageReceived, startActivityForPushMessage).
3. DefaultNotificationFactory foi substituído por PushwooshNotificationFactory.
4. PushData foi substituído por PushMessage.

Mensagens In-App

Anchor link to

1. InAppFacade foi substituído por PushwooshInApp.
2. O objeto pushwoosh foi introduzido para a interface nativa JavaScript com a seguinte API:
getHwid(): string - retorna o hwid do Pushwoosh para o dispositivo atual.
getVersion(): string - retorna a versão atual do SDK do Pushwoosh.
postEvent(event: string, attributes?: object, successCallback?: function, errorCallback?: function) - envia a solicitação postEvent.
sendTags(tags: object) - envia tags associadas ao dispositivo atual.
getTags(successCallback: function, errorCallback?: function) - retorna as tags associadas ao dispositivo atual.
closeInApp() - fecha a página HTML In-App.

Compartilhe seu feedback conosco

Anchor link to

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco através deste formulário.