public static string ExtractInstallationId(this IDeviceRegistration deviceRegistration) { return(deviceRegistration.UserId + "___" + deviceRegistration.DeviceIdentifier); }
public static bool IsNotValid(this IDeviceRegistration deviceRegistration, object sender, IAnalyticsService analyticsService, out Error error) { if (deviceRegistration == null) { error = PushErrors.InvalidDeviceRegistration; analyticsService.TraceError(sender, error); return(true); } //if (deviceRegistration.Templates.Count == 0) //{ // error = analyticsService.TraceError(sender, PushErrors.NoTemplateProvidedOnRegistration, deviceRegistration.ToObjectDictionary()); // return true; //} if (string.IsNullOrEmpty(deviceRegistration.PushNotificationServiceHandle)) { error = PushErrors.InvalidPnsHandle; analyticsService.TraceError(sender, error, deviceRegistration.ToObjectDictionary()); return(true); } if (deviceRegistration.Platform == null || string.IsNullOrEmpty(deviceRegistration.Platform.Value) || deviceRegistration.Platform.Value != RuntimePlatform.iOS.Value && deviceRegistration.Platform.Value != RuntimePlatform.Android.Value && deviceRegistration.Platform.Value != RuntimePlatform.UWP.Value) { error = PushErrors.InvalidPlatform; analyticsService.TraceError(sender, error, deviceRegistration.ToObjectDictionary()); return(true); } if (string.IsNullOrEmpty(deviceRegistration.DeviceIdentifier)) { error = PushErrors.MissingDeviceIdentifier; analyticsService.TraceError(sender, error, deviceRegistration.ToObjectDictionary()); return(true); } if (string.IsNullOrEmpty(deviceRegistration.UserId)) { error = PushErrors.MissingUserId; analyticsService.TraceError(sender, error, deviceRegistration.ToObjectDictionary()); return(true); } foreach (var template in deviceRegistration.Templates) { foreach (var templateDataProperty in template.DataProperties) { var reservedStrings = ReservedStrings.GetForPlatform(deviceRegistration.Platform); if (reservedStrings.Contains(templateDataProperty)) { error = PushErrors.ReservedString(templateDataProperty); analyticsService.TraceError(sender, error, deviceRegistration.ToObjectDictionary()); return(true); } } } error = Error.None; return(false); }
public PushNotificationsServerServiceMockBuilder Where_UpdateDeviceRegistrationAsync_returns(IDeviceRegistration result) { Mock.Setup(x => x.UpdateDeviceRegistrationAsync(Any <IDeviceRegistration>(), Any <IPushNotificationsHub>())) .ReturnsAsync(Response.Success(result)); return(this); }
public PushNotificationsServerServiceMockBuilder Where_LoadRegistrationForUserDeviceAsync_returns(IDeviceRegistration result) { Mock.Setup(x => x.LoadRegistrationForUserDeviceAsync(AnyString, AnyString, Any <IPushNotificationsHub>())) .ReturnsAsync(Response.Success(result)); return(this); }
public async Task <Response <IDeviceRegistration> > UpdateDeviceRegistrationAsync(IDeviceRegistration deviceRegistration, IPushNotificationsHub hub) { if (deviceRegistration.IsNotValid(this, _analyticsService, out var validationError)) { return(Response.Failure <IDeviceRegistration>(validationError)); } _analyticsService.TraceVerbose(this, "Register device for push notifications", deviceRegistration.ToObjectDictionary()); _hubClientProxy.Initialize(hub); var installation = new Installation { PushChannel = deviceRegistration.PushNotificationServiceHandle, InstallationId = deviceRegistration.UserId + "___" + deviceRegistration.DeviceIdentifier, Tags = deviceRegistration.Tags, Platform = deviceRegistration.Platform.ToNotificationPlatform(), Templates = new Dictionary <string, InstallationTemplate>() }; installation.Tags.Add($"UserId_{deviceRegistration.UserId}"); installation.Tags.Add($"DeviceIdentifier_{deviceRegistration.DeviceIdentifier}"); if (!string.IsNullOrEmpty(deviceRegistration.AccountId)) { installation.Tags.Add($"AccountId_{deviceRegistration.AccountId}"); } foreach (var template in deviceRegistration.Templates) { installation.Templates.Add(template.ToPlatform(deviceRegistration.Platform)); } await _hubClientProxy.CreateOrUpdateInstallationAsync(installation); _analyticsService.TraceVerbose(this, "Push notification registration updated", new Dictionary <string, object> { { "InstallationId", installation.InstallationId }, { "Platform", installation.Platform }, { "PushChannel", installation.PushChannel }, { "Tags", installation.Tags }, }); return(Response.Success(deviceRegistration)); }