Gerencie as Preferências do Usuário

Prev Next

Gerencie as preferências do usuário usando canais diferentes no Xtremepush

Aviso

As preferências são baseadas em perfil

Preferências estão associadas no nível do perfil. Quaisquer alterações feitas nas preferências do usuário são refletidas no perfil e em todos os dispositivos associados. Da mesma forma, atualizações de preferência feitas em um dispositivo específico são automaticamente sincronizadas com o perfil.

Gerencie Preferências usando Campanhas de E-mail e SMS

É possível adicionar um link ao centro de preferências para permitir que os usuários se inscrevam e cancelem as diferentes preferências dele. Para isso, navegue até Configurações > Canais > Configurações de E-mail e Canais > Configurações de SMS e ative a opção Permitir que o usuário gerencie preferências de assinatura .

Depois de fazer isso e depois de criar as diferentes preferências, o centro de preferências de e-mail e SMS do Xtremepush listará todas elas, permitindo que os usuários optem por participar ou não delas.

Email preference center showing different preferences to which users can subscribe to.

Centro de preferências de e-mail mostrando diferentes preferências às quais os usuários podem se inscrever.

Em campanhas de e-mail, os usuários podem acessar o centro de preferências de e-mail se você incluir o seguinte código como um hiperlink para o texto:

{{system.url.profile}}

Em campanhas por SMS, você precisará incluir o link de cancelamento na sua mensagem SMS. Esse link permitirá que os usuários modifiquem suas preferências para categorias específicas.

Atualize Preferências usando Importação de Arquivos e API

Agora é possível atualizar preferências por meio da importação de arquivos e via API.

Importação de arquivos

Para atualizar preferências via importação de arquivo, você precisará incluir uma coluna por preferência e canal no seu CSV e definir o valor de cada perfil como verdadeiro ou falso (1 ou 0). Ao importar Perfis de um CSV, você pode então mapear essas colunas no arquivo para as preferências existentes no projeto. Os campos podem ser vistos na parte inferior da coluna Map to input via: Automações de > de Dados > Importar (em Preferências).

Mapping of a preference (Financial News) for the email channel.

Mapeamento de uma preferência (Financial News) pelo canal de e-mail.

API

O método de API externa de importação de perfil de usuário pode ser usado para definir e atualizar preferências, fornecendo o Nome das preferências específicas que precisam ser atualizadas.

  • As preferências de consentimento são especificadas como um objeto JSON dentro do array de linhas.

  • Cada canal de comunicação (por exemplo, SMS, e-mail, custom_channel) é uma chave com preferências aninhadas.

  • Os nomes exatos das preferências devem ser obtidos do projeto para o qual essas importações/atualizações devem ser enviadas.

  • Use inteiros para valores de consentimento (por exemplo, 0 para opt-out, 1 para opt-in).

curl --request POST \
  --url https://external-api.xtremepush.com/api/external/import/profile \
  --header 'content-type: application/json' \
  --data '{
    "apptoken": "YOUR_APPTOKEN",
    "columns": [
        "user_id",
        "consent_preferences"
    ],
    "rows": [
        "myuserid",
        {
            "email": {
                "sport_news": 1,
                "casino_news": 1
            },
            "sms": {
                "sport_news": 0,
                "casino_news": 1
            }
        }
    ]
}

Gerencie Preferências usando canais Push (Android, iOS e web)

Você pode implementar sua própria interface de preferências no seu app ou site e usar nossos métodos SDK para atualizar a assinatura do perfil do usuário quando eles selecionarem as diferentes categorias.

Dica

Assinatura do dispositivo

Para que os dispositivos recebam qualquer campanha push, a assinatura padrão do push deve estar habilitada (o que é o caso padrão). Confira nosso guia dedicado para mais detalhes.

JSONObject prefs = new JSONObject();
prefs.put("news", 1);
prefs.put("marketing", 0);
mPushConnector.updatePushSubscriptionPreferences(this, prefs, this);
let preferences = [
  "news": true,
  "marketing": false
]
XPush.updatePushSubcriptionPreferences(with: preferences) { (json: [String: Any], error: Error?) in
  // handle response
}
[XPush updatePushSubscriptionPreferences: @{ 
              @"news": @YES, 
              @"marketing": @NO 
}
withCompletionHandler: ...];
xtremepush('user', 'update', {
    'push_subscription_preferences': {
      'news': 1,
      'marketing': 0
    }
  },
  function(data) {
    console.log('success: ' + JSON.stringify(data))
  },
  function(data) {
    console.log('error: ' + JSON.stringify(data))
  }
);

Gerencie Preferências usando Campanhas On-Site

Também é possível assinar usuários a preferências específicas de campanhas locais, ao clicarem em um botão específico.

Por exemplo, você poderia criar uma campanha para incentivar os usuários a se inscreverem na newsletter dos seus filmes.

1026

Campanha no local para que os usuários se inscrevam em um boletim informativo por e-mail de 'filmes'.

Para isso, navegue até Campanhas > Criar uma campanha > mensagem de estágio único > no app/local > selecione uma campanha no estilo pop-up. Preencha os detalhes necessários nas abas Configuração, Evento, Segmento e Programação . Na aba Conteúdo , inclua dois botões. No seu botão de assinatura, defina o campo Assinar para a categoria que você criou anteriormente na página do Gestor de Consentimento .

776

Como configurar a campanha na plataforma Xtremepush.

Quando os usuários clicam nesse botão, eles automaticamente se inscreverão nessa categoria e canal.

Gerencie Preferências usando campanhas dentro do aplicativo

De forma semelhante à descrita acima, os usuários podem optar por categorias push de campanhas dentro do app. Isso requer o uso da funcionalidade de deeplink .

Para criar a campanha no app, navegue até Campanhas > Estágio único > Crie uma campanha > mensagem no aplicativo/local > selecione um tipo de campanha em tela cheia ou modal. Inclua dois botões e, no botão desejado, a partir da Ação , selecione a opção Ir para o deeplink .

Você pode registrar um handler para isso no Android e iOS para permitir que você tome ações do lado do cliente com base em deeplinks. Os payloads do deeplink devem ter informações suficientes para permitir que seu app decida sobre preferências de configuração. O formato de deeplink pode ser subpref://update?news=1 ou subpref://update?news=1&marketing=1.

Veja o exemplo abaixo:

1544

Para revisar como configurar os handlers no Android e iOS, revise as seguintes seções dos nossos guias dedicados ao Deeplink:

Além disso, aqui está um exemplo baseado na análise do deeplink com o formato mostrado anteriormente; Essa seria uma forma flexível de definir as preferências de assinatura a partir das mensagens dentro do app.

@Override
    public void deeplinkReceived(String link, WeakReference<Context> uiReference) {
        try {
            //Turn string param into URI and break into relevant components
            Uri uri = Uri.parse(link);
            String host = uri.getHost();
            String protocol = uri.getScheme();
            Set<String> preferences = uri.getQueryParameterNames();
            //Verify the protocol and host
            if (protocol.equalsIgnoreCase("pushsubpref") && host.equalsIgnoreCase("update")) {
                //create JSON objects.
                    //jo is the param we will be passing to the updateUser function
                    //myPushPreferences is some nested JSON in jo that represents the push params to update
                JSONObject jo = new JSONObject();
                JSONObject myPushPreferences = new JSONObject();
                //loop through URI params then add each key-value pair to our 'myPushPreferences' JSON
                for (String key : preferences) {
                    myPushPreferences.put(key, uri.getQueryParameter(key));
                }
                jo.put("push_subscription_preferences", myPushPreferences);
                // if necessary also set the subscription to 1
                jo.put("push_subscription", 1);
                //call updateUser function.
                //Params are a Context instance, the JSON object we described above, an XPCallbackHandler instance
                mPushConnector.updateUser(this, jo, new XPCallbackHandler() {
                    @Override
                    public void onSuccess(JSONObject response) {
                        Log.d("TAG", "Here in on success. response : "+response.toString());
                    }
                    @Override
                    public void onFailure(JSONObject response) {
                        Log.d("TAG", "Here in on failure. response : "+response.toString());
                    }
                });
            }
        } catch (Exception e){
        }
    }
XPush.registerDeeplinkHandler { x in
  guard x.hasPrefix("pushsubpref"), let query = URLComponents(string: x)?.queryItems else { return }
            
  var params: [String: String] = [:]
  for q in query {
    params[q.name] = q.value
  }
            
  XPush.updateUser(with: params) { jsonResponse, error in
    <#code#>
  }
}
[XPush registerDeeplinkHandler:^(NSString *x) {
     
  if !([x hasPrefix:@"pushsubpref"]) {
    return;
  }

   
  NSMutableDictionary* params = @[].mutableCopy;
  for (NSURLQueryItem* q in [NSURLComponents componentsWithString:x].queryItems) {
    params[q.name] = q.value;
  }
        
  id prefs = @{ @"push_subscription_preferences": params,
                @"push_subscription": @(1)
              };
        
  [XPush updateUserWith:prefs completionHandler:^(NSDictionary * _Nullable jsonResponse,
                                                  NSError * _Nullable error) {
    <#code#>
  }];
        
}];