Azure уведомления, регистрация устройств на стороне сервера. Уведомления, работающие для FCM, но не APNS - PullRequest
1 голос
/ 03 июля 2019

Я следовал этому уроку: https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-push-notification-registration-management

Итак, я написал тестовый код для отправки выглядит следующим образом:

  void TestSend(bool ios)
  {
     var AzureName = "myhubname";
     var AzureHub = new ServiceBusConnectionStringBuilder("Endpoint=sb://secret+sauce").ToString();

     var tags = new List<string>();
     tags.Add("doopy");

     try
     {
        var svcs = new ServiceBusConnectionStringBuilder(AzureHub).ToString();
        var hub = NotificationHubClient.CreateClientFromConnectionString(svcs, AzureName);

        // what is this?
        // var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

        var installation = new Installation(); // control tag registration

        // FCM - works
        installation.Platform = NotificationPlatform.Fcm;
        installation.PushChannel = "put my fcm token here";
        installation.InstallationId = "see comment..."; // from the device via this call: myNotificationHub.Register(FCMToken, new List<string>().ToArray()).RegistrationId;

        if (ios) 
        {  // silently fails
           installation.Platform = NotificationPlatform.Apns;
           installation.InstallationId = "some guid I made up";
           installation.PushChannel = "see comment"; // device token with <> and spaces removed from call mySBNotificationHub.RegisterNativeAsync(deviceToken...
        }

        installation.Tags = tags;
        hub.CreateOrUpdateInstallationAsync(installation).Wait();

        JObject data = MakeNotification("notificationId", "I got your tags doopy!");
        var payload = PlatformPayload(ios, data);

        Console.WriteLine("Send...");
        if (ios)
           hub.SendAppleNativeNotificationAsync(payload, tags).Wait();
        else
           hub.SendFcmNativeNotificationAsync(payload, tags).Wait();
        Console.WriteLine("Message SENT!");
     }
     catch (Exception ex)
     {
        Console.WriteLine("rats! " + ex.Message);
     }
  }

Я даже не использую загадочный PushNotificationChannelManager из документов иФКМ работает.Кажется, что этот класс существует только в UWP или чем-то подобном.

Кажется, что APNS требует и идентификатор установки, и канал, но все, что у меня есть, - это идентификатор устройства.Кто-нибудь знает, где взять эти значения для iOS?

1 Ответ

0 голосов
/ 06 июля 2019

Итак, я нашел решение.

Возьмите токен устройства iOS, уберите пробелы и угловые скобки и используйте его для PushChannel. Создайте свой собственный InstallationId (Guid.NewGuid (). ToString () и сохраните его где-нибудь) или просто используйте токен устройства для обоих полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...