SoltemaxMessagingPlatform 1.0.6

Requires NuGet 4.0.0 or higher.

dotnet add package SoltemaxMessagingPlatform --version 1.0.6                
NuGet\Install-Package SoltemaxMessagingPlatform -Version 1.0.6                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SoltemaxMessagingPlatform" Version="1.0.6" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SoltemaxMessagingPlatform --version 1.0.6                
#r "nuget: SoltemaxMessagingPlatform, 1.0.6"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SoltemaxMessagingPlatform as a Cake Addin
#addin nuget:?package=SoltemaxMessagingPlatform&version=1.0.6

// Install SoltemaxMessagingPlatform as a Cake Tool
#tool nuget:?package=SoltemaxMessagingPlatform&version=1.0.6                

SDK Soltex Messaging Platform (SMP)

El SDK de Soltex Mobile Platfom para Xamarin permite el envío de notificaciones push mediante la plataforma Soltex Messaging Platform (SMP) a dispositivos móviles iOS y Android a través de aplicaciones realizadas con los siguientes Frameworks:

  • Xamarin.Forms
  • Xamarin.iOS
  • Xamarin.Android

Integración

Para implementar las funcionalidades que ofrece la librería, el primer paso es importar el SDK con paquete NuGet. Podrá encontrarlo realizando una búsqueda en el gestor NuGet dentro de cualquier proyecto de Visual Studio.

La librería hace uso del paquete PushNotificationPlugin para la gestión interna de las notificaociens en cada una de las plataformas. Tal y como veremos a continuación, es necesario añadir la dependencia en cada uno de los proyectos específicos por plataforma.

Integración en Xamarin.iOS

El primer paso para la integración en iOS es añadir las liberías PushNotificationPlugin y NewtonsoftJson mediante el gestor de paquetes NuGet.

Una vez realizado esto nos vamos al archivo AppDelegate.cs y añadimos los siguientes fragmentos de código sobre las fuciones ya existentes.

  1. Importar librería para notificaciones
using Plugin.PushNotification;
  1. Iniciar librería de notificaciones
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
   global::Xamarin.Forms.Forms.Init();
   LoadApplication(new App());

   PushNotificationManager.Initialize(options);

   return base.FinishedLaunching(app, options);
}
  1. Intercepción de notificaciones recibidas
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
   PushNotificationManager.DidRegisterRemoteNotifications(deviceToken);
}

public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error)
{
   PushNotificationManager.RemoteNotificationRegistrationFailed(error);
}

public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
{
   PushNotificationManager.DidReceiveMessage(userInfo);
}

Integración en Xamarin.Android

Para el caso de Android también es necesario añadir las dependencis de PushNotificationPlugin y NewtonsoftJson mediante el gestor de paquetes NuGet antes de comenzar.

Depués añadimos los siguientes fragmentos de código sobre la plantilla base.

  1. Importar librería para notificaciones en MainApplication.cs y MainActivity.cs
using Plugin.PushNotification;
  1. Sobre MainApplication.cs
public override void OnCreate()
{
    base.OnCreate();

    //If debug you should reset the token each time.
    #if DEBUG   
        PushNotificationManager.Initialize(this, true);
    #else
        PushNotificationManager.Initialize(this,false);
    #endif
}
  1. Sobre MainActivity.cs
protected override void OnCreate(Bundle savedInstanceState)
{
    TabLayoutResource = Resource.Layout.Tabbar;
    ToolbarResource = Resource.Layout.Toolbar;

    base.OnCreate(savedInstanceState);

    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
    LoadApplication(new App());

    PushNotificationManager.ProcessIntent(this, Intent);
}

Integración en Xamarin.Forms (o en cada una de las plataformas en su caso)

Para integrar en nuestro proyecto de Xamarin.Forms debemos abrir el gestor de paquetes NuGet y buscar el sdk. Después iremos al archivo inicial y tras importarlo con using SoltexMessagingPlatform; estamos listos para realizar la inicialización.

public partial class App : Application
{
    static string token = "2de628595119c60d39c8cb44407691c64fc9956a12412";
    static string appId = "f00e0668ebaba5181151a4dd90056204124";
    static string baseUrl = "https://server.com";

    public App()
    {
        InitializeComponent();

        SMP.Current.Init(token, appId, baseUrl, true, SMPEnvironment.development);

        MainPage = new MainPage();
    }
}

Los parámetros que recibe el SDK se proporcionan por Soltemax:

  • token Token de acceso a la aplicación, necesario para el acceso y la autenticación de la API
  • appId Identificador de apicación para el seguimiento dentro de la plataforma. En caso tener varias instancias de la misma deberán utilizarse varios identificadores.
  • baseUrl URL base donde se aloja la plataforma. Puede variar para cada cliente según la infraestructura donde se aloja el servicio.
  • isLogActive Indica si el log está o no activo para ver los mensajes relacionados con el SDK en la consola de salida
  • environment El tipo de instalación según el entorno

Recepción de notificaciones

El sistema recoge las notificaciones de forma automática para su funcionamiento pero permite la personalización de las acciones llevadas a cabo cuando se reciben. Puede configurarse una llamada de la siguiente forma:

SMP.Current.notificationHandler = (open, data) => {
    System.Diagnostics.Debug.Write(open);
    System.Diagnostics.Debug.Write("He recibido una notificación");
};

Los parametros con los que el integrador puede planificar las acciones son:

  • open Es un valor bool indicando si la aplicación está o no abierta cuando llega la notificación.
  • data Recoge los datos asociados a la notificación. Éstos varían según la plataforma y las diferentes versiones por lo que, en caso de tener que utilizarlos, se recomienda acudir a la documentación oficial.

Un ejemplo de los datos propios del SDK sería:

message_uid : dab90bf92a88096c5ac1dd461180cc95
campaign_uid : 1e9e332fee98c40b30a22b47e8305504
message : {"title":"Test","content":"Test SMP"} // Sólo Android
aps : {"alert":{"title":"Test","body":"Test SMP} // Sólo iOS
push_uid : 22d22d040a3b270d853dc07f2004957d

Envío de metadatos

La librería cuenta con una función que permite añadir metadatos a la instalación para utilizar por ejemplo en la segmentación del envío de notificaciones. Cada vez que se realiza la llamada todos los metadatos enviados con sobreescritos por lo que deben enviarse todos los valores o se perderían.

var metadata = new SMP.Metadata()
{
    key = "dni",
    type = "string",
    value = "XXXXXXXXX"
};
SMP.Current.SendMetadata(new SMP.Metadata[] { metadata });

En el código anterior se muestra un ejemplo de envío de DNI asociado a la instalación.

Obtener los mensajes

No es necesario almacenar todos los mensajes recibidos por el dispositivo porque el servidor mantiene un registro y puede ser consultado mediante una función que devuelve no sólo el texto si no todos los detalles incluyendo la fecha de envío.

var messages = await SMP.Current.GetMessages();

Las propiedades de los mensajes son:

  • Title Título de la notificación
  • Content Contenido de la notificación
  • Date Fecha en la que fue enviada la notificación

Licencia plataforma

Como se observa en la inicialización, es necesario contar con las claves para usar la plataforma ya que trata de un sistema propietario. Para solicitar una licencia debe contactar con Soltemax.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.6 639 4/5/2019
1.0.3 588 3/14/2019
1.0.2 592 2/28/2019
1.0.1 541 2/26/2019
1.0.0 628 2/11/2019