private async Task CreateRegistrationAsync(PushSubscriptionRequest deviceUpdate)
        {
            var registration = PushRegistrationsFactory.CreateTemplateRegistration(deviceUpdate);

            try
            {
                await _hub.CreateRegistrationAsync(registration);
            }
            catch (MessagingException e)
            {
                throw new PushNotificationException("Error while trying to create device token registration in notification hub", e);
            }
        }
        /// <summary>
        ///     Registers a user in Azure Notifications Hub.
        /// </summary>
        /// <remarks>
        ///     Check <see cref="IsRegisteredAsync(Guid)"/> first to avoid duplicate
        ///     registrations.
        /// </remarks>
        /// <param name="internalRegistration">Our internal registration object.</param>
        public async Task <NotificationRegistration> RegisterAsync(NotificationRegistration internalRegistration)
        {
            if (internalRegistration is null)
            {
                throw new ArgumentNullException(nameof(internalRegistration));
            }

            // Create new registration and return the converted result
            var externalRegistration = await _hubClient.CreateRegistrationAsync(ExtractForCreation(internalRegistration));

            return(new NotificationRegistration
            {
                ExternalId = externalRegistration.RegistrationId,
                Handle = internalRegistration.Handle,
                Id = internalRegistration.Id,
                PushNotificationPlatform = internalRegistration.PushNotificationPlatform,
            });
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);
            var     handle      = data.handle.Value;

            var connectionString = Environment.GetEnvironmentVariable("NotificationHubConnectionString", EnvironmentVariableTarget.Process);
            var hub = new NotificationHubClient(connectionString, "rfc-activity");

            CollectionQueryResult <RegistrationDescription> registrationForHandle = await hub.GetRegistrationsByChannelAsync(handle, 100);

            var enumerator = registrationForHandle.GetEnumerator();

            if (!enumerator.MoveNext())
            {
                var registration = new FcmRegistrationDescription(handle);
                await hub.CreateRegistrationAsync(registration);
            }

            return(new OkResult());
        }
示例#4
0
 public string Registration(DeviceRegistration registration)
 {
     return(_hub.CreateRegistrationAsync(GetNativeRegistration(registration)).Result);
 }
示例#5
0
        public async Task CreateRegistrationAsync_PassValidAdmNativeRegistration_GetCreatedRegistrationBack()
        {
            LoadMockData();
            await DeleteAllRegistrationsAndInstallations();

            var registration = new AdmRegistrationDescription(_configuration["AdmDeviceToken"]);

            registration.PushVariables = new Dictionary <string, string>()
            {
                { "var1", "value1" }
            };
            registration.Tags = new HashSet <string>()
            {
                "tag1"
            };

            var createdRegistration = await _hubClient.CreateRegistrationAsync(registration);

            Assert.NotNull(createdRegistration.RegistrationId);
            Assert.NotNull(createdRegistration.ETag);
            Assert.NotNull(createdRegistration.ExpirationTime);
            Assert.Contains(new KeyValuePair <string, string>("var1", "value1"), createdRegistration.PushVariables);
            Assert.Contains("tag1", createdRegistration.Tags);
            Assert.Equal(registration.AdmRegistrationId, createdRegistration.AdmRegistrationId);
            RecordTestResults();
        }