Após integrar o SDK de push, limpe badges de notificação, envie tokens de canais de fabricantes, personalize canais de notificação e configure a prioridade dos canais de push.
Pré-requisitos
O método
MPPushMsgServiceAdapterdescrito neste tópico exige a versão baseline 10.1.68.32 ou posterior. Para atualizar, consulte o Guia de atualização do mPaaS.O método
AliPushRcvServiceda versão antiga ainda é utilizável. Clique aqui para baixar a documentação legada.
Limpar badge de notificação
Quando uma mensagem de push chega por um canal de fabricante, o dispositivo exibe um badge de notificação no ícone do aplicativo. O SDK de push oferece suporte à limpeza automática de badges apenas para canais Huawei.
-
Para limpar automaticamente o badge quando o usuário tocar na notificação:
// Enable automatic badge clearing on notification tap boolean autoClear = true; MPPush.setBadgeAutoClearEnabled(context, autoClear); // Set the launcher Activity class name — required for badge clearing to work String activityName = "com.mpaas.demo.push.LauncherActivity"; MPPush.setBadgeActivityClassName(context, activityName); -
Para limpar manualmente o badge (por exemplo, quando o usuário abrir o aplicativo diretamente sem tocar em uma notificação), chame o seguinte código na classe
Application:MPPush.clearBadges(context);
Enviar token do canal do fabricante
Após a inicialização, o SDK de push obtém o token do canal do fabricante e o vincula e envia automaticamente junto com o token do canal criado pelo usuário.
Para monitorar eventos de emissão e envio de tokens, sobrescreva os métodos onChannelTokenReceive e onChannelTokenReport em MPPushMsgServiceAdapter:
public class MyPushMsgService extends MPPushMsgServiceAdapter {
/**
* Callback of the vendor channel token received.
*
* @param channelToken The vendor channel token.
* @param channel The vendor channel type.
*/
@Override
protected void onChannelTokenReceive(String channelToken, PushOsType channel) {
Log.d("Received vendor channel token: " + channelToken);
Log.d("Vendor: " + channel.getName());
}
/**
* Called when the vendor channel token reporting completes.
*
* @param result The report result.
*/
@Override
protected void onChannelTokenReport(ResultBean result) {
Log.d("Report vendor token " + (result.success ? "Success" : ("Error:" + result.code)));
}
/**
* Controls whether the SDK reports the vendor token automatically.
* Override and return false to report manually.
*/
@Override
protected boolean shouldReportChannelToken() {
return super.shouldReportChannelToken();
}
}
Para enviar o token manualmente, sobrescreva shouldReportChannelToken para retornar false e chame o código abaixo após receber ambos os tokens:
MPPush.report(context, token, channel.value(), channelToken);
Canais de notificação personalizados (NotificationChannel)
Para definir um nome e uma descrição personalizados para o NotificationChannel padrão do canal integrado, adicione as seguintes entradas ao arquivo AndroidManifest.xml:
<meta-data
android:name="mpaas.notification.channel.default.name"
android:value="Name" />
<meta-data
android:name="mpaas.notification.channel.default.description"
android:value="Description" />
Ajustar prioridade do canal de push
A versão baseline 10.2.3.43 e posteriores permitem substituir a ordem de prioridade padrão dos canais de fabricantes em famílias específicas de dispositivos. Crie um arquivo mpaas_push_config.properties no diretório assets do projeto e adicione as configurações relevantes abaixo.
Preferir Honor ao HMS em dispositivos Huawei/Honor (opcional)
Por padrão, o SDK utiliza o canal HMS (Huawei Mobile Services) em dispositivos Huawei e Honor. Para usar o canal Honor Push, adicione:
// Use the Honor channel instead of HMS on Huawei/Honor devices
isHonorBeforeHms=true
Preferir canais de fabricantes ao FCM em dispositivos compatíveis com FCM (opcional)
Em dispositivos compatíveis com Firebase Cloud Messaging (FCM), o SDK usa o FCM por padrão. Para utilizar o canal nativo do fabricante do dispositivo, adicione:
// Use the device vendor's channel instead of FCM on FCM-capable devices
isFcmEnd=true