SoltemaxMessagingPlatform 1.0.2
See the version list below for details.
dotnet add package SoltemaxMessagingPlatform --version 1.0.2
NuGet\Install-Package SoltemaxMessagingPlatform -Version 1.0.2
<PackageReference Include="SoltemaxMessagingPlatform" Version="1.0.2" />
paket add SoltemaxMessagingPlatform --version 1.0.2
#r "nuget: SoltemaxMessagingPlatform, 1.0.2"
// Install SoltemaxMessagingPlatform as a Cake Addin #addin nuget:?package=SoltemaxMessagingPlatform&version=1.0.2 // Install SoltemaxMessagingPlatform as a Cake Tool #tool nuget:?package=SoltemaxMessagingPlatform&version=1.0.2
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.
- Importar librería para notificaciones
using Plugin.PushNotification;
- 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);
}
- 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.
- Importar librería para notificaciones en MainApplication.cs y MainActivity.cs
using Plugin.PushNotification;
- 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
}
- 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 | Versions 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. |
-
.NETStandard 2.0
- Microsoft.NETCore.Platforms (>= 2.2.0)
- Microsoft.NETCore.Targets (>= 2.1.0)
- Newtonsoft.Json (>= 12.0.1)
- Plugin.PushNotification (>= 1.3.0)
- runtime.native.System (>= 4.3.1)
- System.Collections (>= 4.3.0)
- System.Collections.Concurrent (>= 4.3.0)
- System.Diagnostics.Debug (>= 4.3.0)
- System.Diagnostics.Tools (>= 4.3.0)
- System.Diagnostics.Tracing (>= 4.3.0)
- System.Globalization (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.IO.Compression (>= 4.3.0)
- System.Linq (>= 4.3.0)
- System.Linq.Expressions (>= 4.3.0)
- System.Net.Http (>= 4.3.4)
- System.Net.Primitives (>= 4.3.0)
- System.Numerics.Vectors (>= 4.5.0)
- System.ObjectModel (>= 4.3.0)
- System.Reflection (>= 4.3.0)
- System.Reflection.Extensions (>= 4.3.0)
- System.Reflection.Primitives (>= 4.3.0)
- System.Resources.ResourceManager (>= 4.3.0)
- System.Runtime (>= 4.3.1)
- System.Runtime.Extensions (>= 4.3.1)
- System.Runtime.InteropServices (>= 4.3.0)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Runtime.Numerics (>= 4.3.0)
- System.Text.Encoding (>= 4.3.0)
- System.Text.Encoding.Extensions (>= 4.3.0)
- System.Text.RegularExpressions (>= 4.3.0)
- System.Threading (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
- System.ValueTuple (>= 4.5.0)
- System.Xml.ReaderWriter (>= 4.3.1)
- System.Xml.XDocument (>= 4.3.0)
- Xamarin.Essentials (>= 1.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.