public async Task<string> CreateOrUpdateRegistrationAsync(PushRegistration pushRegistration)
{
UserRegistrationResult userRegistrationResult = await RegisterUserAsync(pushRegistration);
if (userRegistrationResult == null)
{
return pushRegistration.RegistrationId;
}
RegistrationDescription registration = null;
switch (pushRegistration.Platform)
{
case PushPlatform.APNS:
registration = new AppleRegistrationDescription(pushRegistration.Handle);
break;
case PushPlatform.GCM:
registration = new GcmRegistrationDescription(pushRegistration.Handle);
break;
case PushPlatform.WNS:
registration = new WindowsRegistrationDescription(pushRegistration.Handle);
break;
default:
//throw new HttpResponseException(HttpStatusCode.BadRequest);
throw new Exception();
}
registration.RegistrationId = userRegistrationResult.RegistrationId;
if (pushRegistration.Tags?.Any() ?? false)
{
registration.Tags = new HashSet<string>(pushRegistration.Tags);
}
await notificationHub.CreateOrUpdateRegistrationAsync(registration);
return registration.RegistrationId;
}