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.
.png?sv=2026-02-06&spr=https&st=2026-10-03T08%3A12%3A23Z&se=2026-10-03T08%3A29%3A23Z&sr=c&sp=r&sig=s8W8TWa5N6DVfpSZx5t%2BjestR46dmswrj8Tw6Xauek0%3D)
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).

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,
0para opt-out,1para 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.
.png?sv=2026-02-06&spr=https&st=2026-10-03T08%3A12%3A23Z&se=2026-10-03T08%3A29%3A23Z&sr=c&sp=r&sig=s8W8TWa5N6DVfpSZx5t%2BjestR46dmswrj8Tw6Xauek0%3D)
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 .
.png?sv=2026-02-06&spr=https&st=2026-10-03T08%3A12%3A23Z&se=2026-10-03T08%3A29%3A23Z&sr=c&sp=r&sig=s8W8TWa5N6DVfpSZx5t%2BjestR46dmswrj8Tw6Xauek0%3D)
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:
.png?sv=2026-02-06&spr=https&st=2026-10-03T08%3A12%3A23Z&se=2026-10-03T08%3A29%3A23Z&sr=c&sp=r&sig=s8W8TWa5N6DVfpSZx5t%2BjestR46dmswrj8Tw6Xauek0%3D)
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#>
}];
}];