---
title: "Xamarin"
slug: "xamarin"
updated: 2026-06-12T10:30:57Z
published: 2026-06-12T10:30:57Z
canonical: "docs.xtremepush.com/xamarin"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Xamarin
Adicionar Xtremepush tanto aos apps iOS quanto Android construídos com Xamarin
O Xtremepush suporta notificações push para dispositivos iOS via o Push Notification Service (APNs) da Apple e notificações push para dispositivos Android via o serviço FCM (Firebase Cloud Messaging for Android) do Google. Esta página contém instruções específicas da Xamarin, mas você precisará conectar seu app iOS e Android à plataforma separadamente.
## Antes de integrar
Para completar essa integração, você precisará ter sua chave do aplicativo Xtremepush, certificados APNS para iOS e número do projeto Google e chave API FCM para Android. Esses são usados para conectar seu app à plataforma e aos serviços push da Apple e Google. Revise nossos guias sobre como se conectar à plataforma abaixo:
- [Configuração do FCM para Android](/documentation/docs/pt-br/android-push-notifications)
- [Configurando Certificados APNs para iOS](/documentation/docs/pt-br/ios-push-notifications)
> [!TIP]
> Formas de Xamarin
>
> Esta página oferece um guia completo de integração com Xamarin para Android e iOS. Se você estiver usando *o Xamarin.Forms*, deve completar a integração para cada plataforma conforme descrito no guia [do Xamarin.Forms](/documentation/docs/pt-br/xamarin-forms) e, em seguida, também deve seguir os passos descritos aqui.
## Android
- Para salvar o `google-services.json` arquivo associado ao seu projeto, siga os passos em *Obter valores de configuração* no guia [de notificações push do Android](/documentation/docs/pt-br/android-push-notifications#get-configuration-values) .
- Baixe o arquivo DLL Xtremepush Xamarin bindings dos [lançamentos do Xamarin SDK](/documentation/docs/pt-br/xamarin-sdk-releases).
- No seu IDE (Visual Studio ou Xamarin Studio), adicione uma referência no seu projeto de app ao arquivo DLL:
- **Editar Referências > .Net Assembly > Navegar... > Selecione a DLL**
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
- No seu IDE, adicione dois pacotes adicionais ao projeto para satisfazer as dependências subjacentes do nosso SDK:
- *Google Play Services* - Localização (último pacote NuGet estável atualmente 120.0.0.1)
- *GoogleGson* - (último pacote NuGet estável atualmente 2.10.1.2)
- *Xamarin.Firebase.Messaging* (último pacote NuGet estável atualmente 123.1.1.1)
- Edite o `AndroidManifest.xml` arquivo para adicionar os seguintes elementos dentro do `manifest` elemento.
```xml
```
- Se você estiver usando a funcionalidade de Localização ou Beacon, será necessário adicionar o seguinte ao elemento manifesto também.
```xml
```
- Edite o `AndroidManifest.xml` arquivo para adicionar os seguintes elementos dentro do `application` elemento.
```xml
```
- Edite o `AndroidManifest.xml` arquivo para garantir que haja um ícone definido dentro do `application` elemento. Isso é necessário para a geração correta de notificações.
```xml
```
- No arquivo raiz C# do seu projeto, puxe a biblioteca Xtremepush:
```csharp
using IE.Imobile.Extremepush;
using IE.Imobile.Extremepush.Api.Model;
```
- Você pode precisar de alguns dos seguintes pacotes no mesmo arquivo, se ainda não foram importados:
```csharp
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
```
- Adicione o que `google-services.json` você baixou ao seu projeto.
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
1. Copie `google-services.json` para a pasta do projeto.
2. Adicione `google-services.json` ao projeto do app.
3. Clique `google-services.json`com o botão direito.
4. Defina a **ação de build** para **GoogleServicesJson**.
- Substitua a função Application `onCreate` para inicializar o SDK Xtremepush. Defina a chave do SDK para a que é fornecida ao [adicionar o app à plataforma](/documentation/docs/pt-br/android-integration), e o Número do Projeto do Google com o que está nos passos anteriores para configurar [as notificações push do Android](/documentation/docs/pt-br/android-push-notifications). Este exemplo também mostra como você pode registrar um callback para eventos de resposta à mensagem e registrar um callback quando o selo da caixa de entrada for atualizado.
```csharp
[Application]
public class MainApp : Application, IMessageResponseListener, IInboxBadgeUpdateListener
{
public MainApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public void MessageResponseReceived(Message messagePayload,
IDictionary responsePayload,
Java.Lang.Ref.WeakReference activityHolder)
{
// Handle a message response
if (messagePayload != null)
{
Log.Debug("MessageResponseReceived", messagePayload.ToJson());
}
if (responsePayload != null)
{
foreach (KeyValuePair keypair in responsePayload)
Log.Debug("MessageResponseReceived", keypair.Key + " - " + keypair.Value);
}
}
public void InboxBadgeUpdated(int i, Java.Lang.Ref.WeakReference activityHolder)
{
//print out inbox badge
Log.Debug("Inbox Badge is : ", i + "");
}
public override void OnCreate()
{
base.OnCreate();
// If using Xamarin.Forms please install the Plugin.CurrentActivity package
// from NuGet and uncomment the line below
// CrossCurrentActivity.Current.Init(this);
String XPUSH_APP_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
String GOOGLE_PROJECT_NUMBER = "XXXXXXXXXXXX";
new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
.SetMessageResponseListener(this)
.SetInboxBadgeUpdateListener(this)
.Create(this);
}
}
```
- Se você quiser enviar tags ou eventos para o Xtremepush em outra parte do seu app, isso pode ser feito com as seguintes chamadas de função:
```csharp
PushConnector.MPushConnector.HitTag("TestTag");
PushConnector.MPushConnector.HitEvent("TestEvent");
```
## iOS
- Baixe o arquivo DLL Xtremepush Xamarin bindings dos [lançamentos do Xamarin SDK](/documentation/docs/pt-br/xamarin-sdk-releases).
- No seu IDE (Visual Studio ou Xamarin Studio), adicione uma referência no seu projeto de app ao arquivo DLL
- **Editar Referências > .Net Assembly > Navegar... > Selecione a DLL**
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
- Na visualização Source do `Info.plist` arquivo, defina os seguintes parâmetros:
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
- *XtremePushApplicationKey* – a chave de aplicação SDK fornecida ao [adicionar o app à plataforma](/documentation/docs/pt-br/ios-integration).
- *NSBluetoothPeripheralUsageDescription* – uma descrição de uso obrigatória que você precisa adicionar ao seu app, já que o SDK Xtremepush inclui CoreBluetooth (mesmo que não seja usado ativamente). Veja [a descrição adicional do CoreBluetooth](/documentation/docs/pt-br/ios-sdk-integration#add-description-for-corebluetooth) para mais informações.
- Se estiver usando a funcionalidade de localização/beacon no seu app, certifique-se de que tenha entradas para *NSLocationAlwaysUsageDescription*, *NSLocationAlwaysAndWhenInUseUsageDescription* e *NSLocationWhenInUseUsageDescription*.
- Edite o `AppDelegate.cs` arquivo e adicione as seguintes linhas dentro da `FinishedLaunching()` função:
```csharp
using XP;
// Setup xtremepush
XPush.RegisterForRemoteNotificationTypes(XPNotificationType.Alert | XPNotificationType.Badge | XPNotificationType.Sound);
XPush.SetSandboxModeEnabled(true); //Required if doing a debug/dev build of your app
XPush.SetLocationEnabled(true); // Required for location or beacon functionality
XPush.RegisterMessageResponseHandler((XPMessageResponse response) =>
{
///handle received message. For example:
Console.WriteLine("Response with identifier: " + response.Message.CampaignIdentifier);
Console.WriteLine("Response with type: " + response.Message.Type);
Console.WriteLine("Response with action URL: " + response.Action.Url);
////Check out XPMessage and XPAction declarations for more avaliable fields
});
NSNotificationCenter.DefaultCenter.AddObserver(Constants.XPushInboxBadgeChangeNotification, InboxBadgeUpdated);
XPush.ApplicationDidFinishLaunchingWithOptions((options != null) ? options : new NSDictionary());
```
- Adicione a seguinte função ao `AppDelegate.cs` arquivo se quiser lidar com eventos atualizados do selo da caixa de entrada:
```csharp
public void InboxBadgeUpdated(NSNotification nu){
Console.WriteLine("Inbox Badge Changed : " + XP.XPush.InboxBadge);
}
```
- Edite o `AppDelegate.cs` arquivo e adicione os seguintes callbacks ao Xtremepush SDK:
```csharp
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
XP.XPush.ApplicationDidRegisterForRemoteNotificationsWithDeviceToken(deviceToken);
}
public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error)
{
XP.XPush.ApplicationDidFailToRegisterForRemoteNotificationsWithError(error);
}
```
- Se você precisar associar um Apple ID ao seu IDE, faça isso agora nas preferências do IDE:
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
- Edite o `Entitlements.plist` arquivo para ativar notificações push.
.png?sv=2026-02-06&spr=https&st=2026-11-04T09%3A28%3A45Z&se=2026-11-04T10%3A28%3A45Z&sr=c&sp=r&sig=7LDwYnnjinBh3DWqOLwQMBuPpRdp8GQRoklxm7dDX04%3D)
- Se você não está usando *o Xamarin.Forms* e deseja enviar tags ou eventos para o Xtremepush em outro lugar do seu app, isso pode ser feito com as seguintes chamadas de função:
```csharp
XPush.XPush.HitTag("TestTag");
XPush.XPush.HitEvent("TestEvent");
```
- Se você quiser receber notificações quando seu app estiver em primeiro plano. Isso é possível no iOS 10 e superiores chamando o seguinte método dentro do FinishedLaunching():
```csharp
XP.XPush.RegisterForegroundNotificationOptions((XPMessage arg0) =>
{
///you can return different foreground options based on particular message.
///for example you might want to show notification in foreground only for messages from specific campaign id
if (arg0.CampaignIdentifier == "travel")
{
return XP.XPNotificationType.Alert | XP.XPNotificationType.Badge | XP.XPNotificationType.Sound;
}
return XPNotificationType.None;
});
```
> [!TIP]
> Certifique-se de definir o ID do usuário
>
> Recomenda-se que, nesta fase, você use nosso método SDK para definir IDs de usuário, seguindo nosso [guia dedicado](/documentation/docs/pt-br/set-user-id) para garantir que os dispositivos possam ser associados e direcionados em suas campanhas por seu próprio identificador único.
## Solução de problemas
### Erro de build "Não foi possível AOT do assembly ... xpios.dll"
- Desligue **as Opções de Projeto > Build > Build iOS > Ative builds incrementais**
- Reconstruir o projeto novamente (agora deve ter sucesso)
- Deve ser possível habilitar builds incrementais novamente após esse ponto