Em aplicativos integrados a um canal de push de terceiros e executados em dispositivos desse fabricante, o servidor envia mensagens pelo canal de terceiros por padrão. Nos demais casos, as mensagens são enviadas pelo canal próprio.
-
Ao receber uma mensagem pelo canal próprio, o SDK de push gera automaticamente uma notificação. Quando o usuário clique em na notificação, uma página da web é aberta automaticamente.
ImportanteO SDK de push utiliza IDs de notificação que começam em 10000. Certifique-se de que os outros IDs de notificação utilizados não entrem em conflito com esse intervalo.
Para redirecionar a uma página dentro do aplicativo, consulte Redirecionar para uma página no aplicativo.
Para processar as mensagens recebidas, consulte Personalizar o tratamento de mensagens.
-
Quando um canal de terceiros recebe uma mensagem, o sistema operacional móvel gera a notificação automaticamente. Nem o SDK de push nem os desenvolvedores têm controle sobre esse processo. O SDK de push só recebe a mensagem após o clique do usuário na notificação, momento em que uma página da web é aberta automaticamente.
Para redirecionar a uma página interna do aplicativo, consulte Redirecionar para uma página no aplicativo.
Para gerenciar o redirecionamento após o clique na notificação, consulte Personalizar o tratamento de mensagens.
Pré-requisitos
Os métodos da classe
MPPushMsgServiceAdapterdescritos neste tópico aplicam-se apenas à baseline 10.1.68.32 ou superior. Caso utilize uma versão anterior à 10.1.68.32, atualize sua baseline. Para mais informações, consulte o guia de atualização do mPaaS.O método
AliPushRcvServicedas versões anteriores ainda pode ser utilizado. Para acessar a documentação dessas versões, clique em aqui para baixe.
Redirecionar para uma página no aplicativo
Para redirecionar o usuário a uma página específica do aplicativo, insira um deep link personalizado, como mpaas://navigate, no endereço de redirecionamento da mensagem de push. Configure também uma Activity de roteamento no aplicativo para receber o deep link e encaminhá-lo às demais páginas.
Adicione o intent-filter correspondente à Activity de roteamento no arquivo AndroidManifest.xml. Exemplo:
<activity android:name=".push.LauncherActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="mpaas" />
</intent-filter>
</activity>
Recupere a URI e a mensagem na Activity de roteamento:
Uri uri = intent.getData();
MPPushMsg msg = intent.getParcelableExtra("mp_push_msg");
Personalizar o tratamento de mensagens
Para processar mensagens, sobrescreva os métodos onMessageReceive e onChannelMessageClick da classe MPPushMsgServiceAdapter:
public class MyPushMsgService extends MPPushMsgServiceAdapter {
/**
* Callback for messages received from the self-built channel.
*
* @param msg The received message.
* @return A boolean that indicates whether the message was processed.
* - true: The SDK does not process the message. You must handle the message, including sending a notification and handling the subsequent click.
* - false: The SDK automatically sends a notification and handles the click action.
*/
@Override
protected boolean onMessageReceive(MPPushMsg msg) {
Log.d("Message received from self-built channel: " + msg.toString());
// Process the message, for example, send a custom notification.
return true;
}
/**
* Callback for clicks on notifications from a third-party channel.
*
* @param msg The received message.
* @return A boolean that indicates whether the click was processed.
* - true: The SDK does not handle the click. You must handle the redirect action.
* - false: The SDK automatically handles the redirect action.
*/
@Override
protected boolean onChannelMessageClick(MPPushMsg msg) {
Log.d("Message from third-party channel was clicked: " + msg.toString());
// Handle the logic after the click.
return true;
}
}
O objeto MPPushMsg encapsula todos os parâmetros da mensagem:
String id = msg.getId(); // Message ID
boolean isSilent = msg.isSilent(); // Indicates if it is a silent message
String title = msg.getTitle(); // Message title
String content = msg.getContent(); // Message content
String action = msg.getAction(); // Redirect type. 0: URL. 1: Custom DeepLink.
String url = msg.getUrl(); // Redirect address, which can be a URL or a DeepLink.
int pushStyle = msg.getPushStyle(); // Message type. 0: Normal message. 1: Large text message. 2: Rich media message.
String iconUrl = msg.getIconUrl(); // Small icon for a rich media message.
String imageUrl = msg.getImageUrl(); // Image for a rich media message.
String customId = msg.getCustomId(); // Custom message ID.
String params = msg.getParams(); // Extended parameters.
Após processar uma mensagem, reporte os dados de instrumentação correspondentes. Sem isso, a análise de uso de push no console não coletará os dados corretamente:
MPPush.reportPushOpen(msg); // Reports that the message was opened.
MPPush.reportPushIgnored(msg); // Reports that the message was ignored.
Para mensagens do canal próprio:
Não é necessário reportar mensagens silenciosas.
No caso de mensagens não silenciosas, reporte quando forem abertas ou ignoradas. Utilize os métodos
setContentIntentesetDeleteIntentda classeNotification.Builderou outros mecanismos válidos para detectar essas ações do usuário.
Não é necessário reportar mensagens provenientes de canais de terceiros.