--- 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** ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/419d4b6-xam4(1).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. ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/d8a70cb-xam5(1).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** ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/4dbd469-xam6(1).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: ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/91e05f3-xam7(1).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: ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/1d98adf-xam8(1).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. ![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/98f90df-xam9(1).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