Caixa de entrada do Android

Prev Next

Guia de integração para implementar uma caixa de entrada no seu app Android

O canal da caixa de entrada permite que você persista as notificações enviadas para um usuário em uma caixa de entrada dentro do app. Também permite enviar mensagens para usuários que não aderiram a notificações push, pois essas mensagens chegam à caixa de entrada como um feed quando o app é aberto. Você também não está limitado pelo formato de notificação push e pode usar um estilo mais rico nas mensagens da caixa de entrada.

1448

Exemplo da caixa de entrada integrada em um app Android.

Guias de integração para a funcionalidade da caixa de entrada em aplicativos Android abaixo.

Certifique-se de ter configurado a caixa de entrada na plataforma antes de começar, isso é um pré-requisito. Confira nosso guia rápido inicial na caixa de entrada para mais detalhes.

Configuração básica

Ativando a caixa de entrada no seu app Android

Na integração padrão descrita no guia de integração do Android , a caixa de entrada está desligada. Ele pode ser ativado usando o setInboxEnabled método. No seu app Android, onde você inicializa os objetos PushConnector, adicione o seguinte:

.setInboxEnabled(true)

Como mostrado abaixo:

mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
// ...
    .setInboxEnabled(true)
// ...
    .create(this);

Você também precisará adicionar um elemento de interface (um botão) para abrir a caixa de entrada. Quando tocado, esse botão abre a caixa de entrada. Você pode, por exemplo, querer adicionar um ícone de caixa de entrada ao menu da barra de ações ou em outro lugar da sua atividade:

361

Para adicionar o padrão ImageButton na barra de ações do app, substitua a onCreateOptionsMenu função na sua Atividade e chame a inflateInboxMenuItem função como visto aqui:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    PushConnector.mPushConnector.inflateInboxMenuItem(menu, this);
    return true;
}

Neste ponto, a caixa de entrada está totalmente integrada ao seu app e pode ser aberta clicando no ícone no menu da barra de ações. Além disso, crachás com uma contagem de novos itens na sua caixa de entrada serão exibidos automaticamente no botão da caixa de entrada, como visto aqui:

1080

Configure regras proguard para a caixa de entrada

Se você está usando as regras Proguard para construir a versão lançada do app, a funcionalidade da caixa de entrada precisa de um conjunto adicional de regras. Por favor, adicione o seguinte ao seu proguard-rules.pro arquivo:

# Required for inbox functionality
-keepclassmembers class * {
 @android.webkit.JavascriptInterface <methods>;
}

# Required for inbox functionality
-keepattributes JavascriptInterface
-keep public class ie.imobile.extremepush.ui.InboxActivity$InboxInterface
-keep public class * implements ie.imobile.extremepush.ui.InboxActivity$InboxInterface
-keepclassmembers class ie.imobile.extremepush.ui.InboxActivity$InboxInterface {
 <methods>;
}

A lista completa das regras Proguard necessárias para o Xtremepush SDK pode ser encontrada na página de Integração com Android .

Opções Avançadas de Configuração

Existem algumas opções avançadas de configuração, descritas aqui, que permitem executar as seguintes tarefas, se necessário, para o seu app:

  1. Mude o ícone do botão da caixa de entrada e/ou defina a cor do ícone

  2. Desative os crachás no botão da caixa de entrada

  3. Altere o fundo do distintivo e as cores do texto

  4. Coloque o botão da caixa de entrada em outro lugar que não seja o menu da barra de ações

  5. Use seu próprio botão para abrir a caixa de entrada

Cada uma dessas opções será agora descrita por sua vez:

Mude ícone ou cor da caixa de entrada

De forma semelhante a como o ícone de notificação pode ser configurado para seu app, a setInboxIcon função pode ser usada para mudar o ícone no botão da caixa de entrada. Também pode ser usado para mudar a cor do ícone.

mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
    .setInboxEnabled(true)
    .setInboxIcon("iconfilenamewithoutextension")
    .create(this)

Isso vai definir o ícone do botão da caixa de entrada com uma imagem da res/drawable pasta do app. Neste exemplo, a biblioteca tentará procurar um arquivo chamado iconfilenamewithoutextension.jpg or iconfilenamewithoutextension.png*etc, na res/drawable pasta. Se o arquivo não for encontrado, o ícone padrão do botão da caixa de entrada será usado em seu lugar.

A biblioteca também buscará uma entrada "cor" com o mesmo nome em um dos arquivos res/values XML para usar como filtro de cor sobre o ícone. Dessa forma, você pode definir a cor do ícone. Se nenhuma cor correspondente for encontrada em res/values, então nenhum filtro é aplicado ao ícone. A entrada res/values pode ser a seguinte:

<!-- color int as #AARRGGBB (alpha, red, green, blue) -->
<color name="iconfilenamewithoutextension">#ff2266ff</color>

Aqui, o ícone foi alterado e um filtro de cor foi aplicado a ele:

1080

Desative os crachás no botão da caixa de entrada

Você pode querer desativar os crachás no botão da caixa de entrada dentro do seu app. Para isso, por favor, use a setInboxBadgeEnabled função que pode ser vista aqui:

mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
    .setInboxEnabled(true)
    .setInboxBadgeEnabled(false)
    .create(this)

Altere o fundo do distintivo e as cores do texto

As cores padrão para o emblema do botão da caixa de entrada consistem em fundo vermelho e texto branco. Se você quiser alterar esses valores, pode usar a setInboxBadgeColors função, passando uma cor de fundo e uma cor de texto respectivamente como parâmetros. O exemplo abaixo mostra o código necessário para definir azul como cor de fundo e amarelo como cor do texto:

mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
    .setInboxEnabled(true)
    .setInboxBadgeColors("#ff0000ff", "#ffffff00")
    .create(this)

1080

Coloque o botão da caixa de entrada em outro lugar que não seja o menu da barra de ações

Os passos acima descreveram como o botão da caixa de entrada pode ser adicionado ao menu da barra de ações do app.

O mesmo botão também pode ser adicionado em outro lugar do app, em vez de (ou em conjunto com) o botão do menu da barra de ações. Para colocar nosso botão na caixa de entrada em outro lugar do seu app que não seja o menu da barra de ações, há três etapas envolvidas:

Primeiro, adicione uma referência ao botão da caixa de entrada na localização desejada nos arquivos XML do layout. Isso requer uma única linha:

<include layout="@layout/xp_inbox_button" />

Em segundo lugar, para quaisquer Atividades que utilizem os layouts XML acima, será necessário adicionar um onClickListener botão à caixa de entrada. Isso pode ser realizado implementando View.OnClickListener na Atividade e depois adicionando o seguinte à onCreate função da Atividade:

ImageButton inboxButton = (ImageButton) findViewById(R.id.xp_inbox_button);
inboxButton.setOnClickListener(this);

Finalmente, na onClick função de retorno, abra a caixa de entrada usando a openInbox função, passando uma referência para a atividade:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.xp_inbox_button:
            mPushConnector.openInbox(this);
            break;
    }
}

Use seu próprio botão para abrir a caixa de entrada

Se você quiser usar seu próprio botão para abrir a caixa de entrada, isso pode ser feito usando a openInbox função. Isso pode ser visto logo acima, onde o código a seguir é usado na onClick função da classe Activity.

mPushConnector.openInbox(this);

Se você deseja lidar com os números dos distintivos também, criamos uma InboxBadgeUpdateListener interface que pode ser implementada pela sua subclasse Application da seguinte forma:

public class MyApplication extends Application implements InboxBadgeUpdateListener {

Quando isso for feito, sua Solicitação receberá uma chamada de retorno sempre que o número do crachá da caixa de entrada for atualizado. Aqui está a função que será chamada na atualização do número do distintivo:

@Override
public void inboxBadgeUpdated(int badge, WeakReference<Context> uiReference) {
    //Handle badge number here
}

Uma referência a essa implementação InboxBadgeUpdateListener do também precisa ser repassada para nosso SDK ao inicializar o objeto PushConnector no seu app. Isso pode ser alcançado usando a setInboxBadgeUpdateListener função:

mPushConnector = new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
    .setInboxEnabled(true)
    .setInboxBadgeUpdateListener(this)
    .create(this)