MAUI Dotnet
Requisitos
Anchor link toPara integrar el SDK, su proyecto MAUI necesita la siguiente versión del paquete, los siguientes frameworks de destino y las siguientes versiones mínimas del sistema operativo:
-
Pushwoosh.DotNet2.1.0 o posterior. El paquete incluye compilaciones para .NET 8 y .NET 10 (net10.0-android36.0ynet10.0-ios26.0). -
Android: framework de destino
net8.0-android34.0o superior, dispositivos con API 23 o posterior.net8.0-androidsin más se resuelve comoandroid34.0en el SDK de .NET 8. -
iOS: dispositivos con iOS 15.0 o posterior. Establezca el mínimo en su archivo de proyecto:
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>Con un valor inferior, la compilación se detiene con
error PW0001.
Integración del SDK
Anchor link to1. Agregue el paquete Nuget Pushwoosh.DotNet a los proyectos de Android e iOS:

2. Acepte las licencias para las dependencias transitivas de Android si es necesario:

3. Configure su proyecto en la Consola de Firebase.
4. Agregue google-services.json a la raíz del directorio de su plataforma Android. Establezca la acción de compilación GoogleServicesJson para este archivo:

5. Agregue la siguiente línea antes de declarar el espacio de nombres en su MainApplication.cs (XXXXX-XXXXX aquí es su código de aplicación de Pushwoosh):
[assembly: MetaData("com.pushwoosh.appid", Value = "XXXXX-XXXXX")]6. En su MainApplication.cs, anule OnCreate() y llame a PushManager.Init(); antes de base.OnCreate();:
using Android.App;using Android.Runtime;using Pushwoosh.Android;...[Application]public class MainApplication : MauiApplication{ public MainApplication(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership) { }
public override void OnCreate() { PushManager.Init(); base.OnCreate(); }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();}base.OnCreate() construye la aplicación MAUI y crea App, que ya usa PushManager.Instance. No llame a PushManager.Init() desde MainActivity.OnCreate. La actividad se crea después de App, por lo que PushManager.Instance seguiría siendo null cuando App lo necesite.
7. En su AndroidManifest.xml, agregue lo siguiente:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />Importante: Asegúrese de que el token de API del dispositivo tenga acceso a la aplicación correcta en su Panel de Control de Pushwoosh. Aprenda más
8. En la carpeta de la plataforma iOS, cree Platforms/iOS/Entitlements.plist con la clave aps-environment:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>aps-environment</key> <string>development</string></dict></plist>Sin este entitlement, iOS no emite un token de dispositivo de APNs, por lo que Register() siempre falla. Use development para las compilaciones de depuración. Una compilación de distribución necesita production y un perfil de aprovisionamiento con las notificaciones push habilitadas.
9. En su archivo de proyecto (.csproj), indique al destino iOS el archivo de entitlements:
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'"> <CodesignEntitlements>Platforms/iOS/Entitlements.plist</CodesignEntitlements></PropertyGroup>10. En el AppDelegate.cs de su proyecto de iOS, llame a PushManager.Init(); al principio del método FinishedLaunching:
using Foundation;using UIKit;using Pushwoosh.iOS;...public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions){ PushManager.Init(); return base.FinishedLaunching(application, launchOptions);}11. Agregue estos métodos al AppDelegate. La clase MauiUIApplicationDelegate no los exporta por defecto, así que agréguelos manualmente:
[Export("application:didReceiveRemoteNotification:fetchCompletionHandler:")] public void DidReceiveRemoteNotification(UIKit.UIApplication application, NSDictionary userInfo, Action<UIKit.UIBackgroundFetchResult> completionHandler) { PushManager.Instance.ReceivedRemoteNotification(userInfo); }
[Export("application:didRegisterForRemoteNotificationsWithDeviceToken:")] public void RegisteredForRemoteNotifications(UIKit.UIApplication application, NSData deviceToken) { PushManager.Instance.RegisteredForRemoteNotifications(deviceToken); }
[Export("application:didFailToRegisterForRemoteNotificationsWithError:")] public void FailedToRegisterForRemoteNotifications(UIKit.UIApplication application, NSError error) { PushManager.Instance.FailedToRegisterForRemoteNotifications(error); }12. En el Info.plist, cambie el valor de Pushwoosh_APPID por su Código de Aplicación de Pushwoosh. Puede encontrarlo en su Panel de Control:

13. En el Info.plist, establezca la clave Pushwoosh_API_TOKEN en su Token de API de Dispositivo de Pushwoosh.
Importante: Asegúrese de dar al token acceso a la aplicación correcta en su Panel de Control de Pushwoosh. Aprenda más
14. En la parte multiplataforma de App.xaml.cs, llame a Register() en el método OnStart. Solicita al usuario el permiso de notificaciones y registra el dispositivo para recibir notificaciones push:
using PushwooshSDK.DotNet.Core;...public partial class App : Application{... protected override void OnStart() { base.OnStart(); PushManager.Instance.Register(); }}Actualización de 2.0.x a 2.1.0
Anchor link toSi su aplicación se configuró con una versión anterior de esta guía, realice estos cambios al actualizar a 2.1.0:
- En Android, mueva
PushManager.Init()deMainActivity.OnCreateaMainApplication.OnCreate, antes debase.OnCreate(), como en el paso 6. Si usa Geozones, mueva también allíLocationManager.Init(), justo después dePushManager.Init(). - Elimine la línea de metadatos
com.pushwoosh.senderidy la cadenafcm_sender_idde Resources/values/strings.xml. El SDK no las lee. - En iOS, agregue el entitlement
aps-environmentde los pasos 8 y 9 si su aplicación aún no lo tiene. - Aumente
SupportedOSPlatformVersiondel destino iOS a 15.0, como se muestra en Requisitos. La plantilla de proyecto de MAUI 8 establece 11.0. - Si su aplicación usa Geozones, actualice
Pushwoosh.DotNet.Geozonesa 2.1.0 junto conPushwoosh.DotNet. Con Geozones 2.0.x, la compilación se detiene conerror PW0002. PWInlineInAppViewen iOS está marcado como[Obsolete]y no muestra nada, porque el SDK nativo de iOS 7.x no tiene mensajes in-app inline. Elimínelo de sus layouts.
Nota para usuarios de Windows: Al compilar, puede encontrar un problema relacionado con la longitud de la ruta del archivo. Esto se debe a que la longitud combinada de los directorios utilizados por Visual Studio y las rutas de archivo dentro del SDK de Pushwoosh excede la limitación de longitud máxima de ruta de Windows de 260 caracteres. Para resolver este problema, habilite la configuración LongPathsEnabled en el Registro de Windows.
Comparta sus comentarios con nosotros
Anchor link toSus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de usted si tiene algún problema durante el proceso de integración del SDK. Si enfrenta alguna dificultad, no dude en compartir sus pensamientos con nosotros a través de este formulario.