Pular para o conteúdo

MAUI Dotnet

Requisitos

Anchor link to

Para integrar o SDK, seu projeto MAUI precisa da seguinte versão do pacote, dos seguintes frameworks de destino e das seguintes versões mínimas do sistema operacional:

  • Pushwoosh.DotNet 2.1.0 ou posterior. O pacote inclui builds para .NET 8 e .NET 10 (net10.0-android36.0 e net10.0-ios26.0).

  • Android: framework de destino net8.0-android34.0 ou superior, dispositivos com API 23 ou posterior. Um net8.0-android simples é resolvido como android34.0 no SDK do .NET 8.

  • iOS: dispositivos com iOS 15.0 ou posterior. Defina o mínimo no arquivo do seu projeto:

    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>

    Com um valor menor, o build é interrompido com error PW0001.

Integração do SDK

Anchor link to

1. Adicione o pacote Nuget Pushwoosh.DotNet aos projetos Android e iOS:

2. Aceite as licenças para dependências transitivas do Android, se necessário:

3. Configure seu projeto no Firebase Console.

4. Adicione o arquivo google-services.json à raiz do diretório da sua plataforma Android. Defina a ação de compilação GoogleServicesJson para este arquivo:

5. Adicione a seguinte linha antes de declarar o namespace em seu MainApplication.cs (XXXXX-XXXXX aqui é o seu Código de Aplicação Pushwoosh):

[assembly: MetaData("com.pushwoosh.appid", Value = "XXXXX-XXXXX")]

6. Em seu MainApplication.cs, sobrescreva OnCreate() e chame 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() constrói o aplicativo MAUI e cria App, que já usa PushManager.Instance. Não chame PushManager.Init() a partir de MainActivity.OnCreate. A activity é criada depois de App, então PushManager.Instance ainda seria null quando App precisasse dele.

7. Em seu AndroidManifest.xml, adicione o seguinte:

<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />

Importante: Certifique-se de que o token de API do Dispositivo tenha acesso à aplicação correta em seu Painel de Controle da Pushwoosh. Saiba mais

8. Na pasta da plataforma iOS, crie Platforms/iOS/Entitlements.plist com a chave 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>

Sem esse entitlement, o iOS não emite um token de dispositivo do APNs, então Register() sempre falha. Use development para builds de depuração. Um build de distribuição precisa de production e de um perfil de provisionamento com notificações push ativadas.

9. No arquivo do seu projeto (.csproj), aponte o destino iOS para o arquivo de entitlements:

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
<CodesignEntitlements>Platforms/iOS/Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

10. No AppDelegate.cs do seu projeto iOS, chame PushManager.Init(); no início do 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. Adicione estes métodos ao AppDelegate. A classe MauiUIApplicationDelegate não os exporta por padrão, então adicione-os 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. No Info.plist, altere o valor de Pushwoosh_APPID para o seu Código de Aplicação Pushwoosh. Você pode encontrá-lo em seu Painel de Controle:

Info.plist no Xcode com a chave Pushwoosh_APPID definida como o código do aplicativo

13. No Info.plist, defina a chave Pushwoosh_API_TOKEN com o seu Token de API do Dispositivo Pushwoosh.

Importante: Certifique-se de dar ao token acesso ao aplicativo correto em seu Painel de Controle da Pushwoosh. Saiba mais

14. Na parte multiplataforma do App.xaml.cs, chame Register() no método OnStart. Ele pede ao usuário permissão para notificações e registra o dispositivo para notificações push:

using PushwooshSDK.DotNet.Core;
...
public partial class App : Application
{
...
protected override void OnStart()
{
base.OnStart();
PushManager.Instance.Register();
}
}

Atualização da 2.0.x para a 2.1.0

Anchor link to

Se o seu aplicativo foi configurado com uma versão anterior deste guia, faça estas alterações ao atualizar para a 2.1.0:

  • No Android, mova PushManager.Init() de MainActivity.OnCreate para MainApplication.OnCreate, antes de base.OnCreate(), como no passo 6. Se você usa Geozones, mova também LocationManager.Init() para lá, logo após PushManager.Init().
  • Remova a linha de metadados com.pushwoosh.senderid e a string fcm_sender_id de Resources/values/strings.xml. O SDK não as lê.
  • No iOS, adicione o entitlement aps-environment dos passos 8 e 9 se o seu aplicativo ainda não o tiver.
  • Aumente SupportedOSPlatformVersion do destino iOS para 15.0, como mostrado em Requisitos. O modelo de projeto do MAUI 8 define 11.0.
  • Se o seu aplicativo usa Geozones, atualize Pushwoosh.DotNet.Geozones para 2.1.0 junto com Pushwoosh.DotNet. Com o Geozones 2.0.x, o build é interrompido com error PW0002.
  • PWInlineInAppView no iOS está marcado como [Obsolete] e não mostra nada, porque o SDK nativo do iOS 7.x não tem mensagens in-app inline. Remova-o dos seus layouts.

Nota para usuários do Windows: Ao compilar, você pode encontrar um problema relacionado ao comprimento do caminho do arquivo. Isso ocorre porque o comprimento combinado dos diretórios usados pelo Visual Studio e os caminhos dos arquivos dentro do SDK da Pushwoosh excedem a limitação de comprimento máximo de caminho do Windows de 260 caracteres. Para resolver esse problema, habilite a configuração LongPathsEnabled no Registro do Windows.

Compartilhe seu feedback conosco

Anchor link to

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco através deste formulário.