Служба push-уведомлений Windows с использованием Pushsharp дает сбой уведомления

var push = new PushBroker();
push.OnNotificationSent += NotificationSent;
push.OnChannelException += ChannelException;
push.OnServiceException += ServiceException;
push.OnNotificationFailed += NotificationFailed;
push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
push.OnChannelCreated += ChannelCreated;
push.OnChannelDestroyed += ChannelDestroyed;
push.RegisterWindowsPhoneService();
push.QueueNotification(new WindowsPhoneToastNotification()
        .ForEndpointUri(new Uri(uri))
        .ForOSVersion(WindowsPhoneDeviceOSVersion.Eight)
        .WithBatchingInterval(BatchingInterval.Immediate)
        .WithNavigatePath("/LandingView.xaml")
        .WithText1("PushSharp")
        .WithText2("This is a Toast"));
 push.StopAllServices();

Я использую пакет pushsharp nuget для push-уведомлений, и при передаче uri этому серверному коду С# для Windows я получаю исключение сбоя уведомления.


person Namrata    schedule 03.08.2015    source источник
comment
@pushsharp: кто-нибудь может помочь?   -  person Namrata    schedule 04.08.2015


Ответы (1)


Я использую последнюю версию PushSharp (версия 3.0) в своем проекте для отправки всплывающих уведомлений на устройства Windows Phone, и у меня это работает нормально. Я заметил по приведенному выше коду, что вы используете более старую версию пакета PushSharp, есть новая версия 3.0, доступная по адресу nuget.

Вы можете использовать этот последний пакет для отправки всплывающих уведомлений на устройства Windows Phone. Последняя версия PushSharp использует WNS, а не старый MPNS.

Если вы перейдете по ссылке nuget get, которую я указал выше, и загрузите решение, вы увидите несколько примеров того, как реализовать push-уведомления для Windows Phone с помощью WNS. Посмотрите в проекте PushSharp.Test (ищите файл WNSRealTest.cs).

Ниже приведен пример того, как вы можете отправить всплывающее уведомление на устройство Windows Phone:

var config = new WnsConfiguration(
                 "Your-WnsPackageNameProperty",
                 "Your-WnsPackageSid",
                 "Your-WnsClientSecret"
                  );

var broker = new WnsServiceBroker(config);
broker.OnNotificationFailed += (notification, exception) =>
{
   //you could do something here
};
broker.OnNotificationSucceeded += (notification) =>
{
   //you could do something here
};

 broker.Start();

 broker.QueueNotification(new WnsToastNotification
 {
                ChannelUri = "Your device Channel URI",
                Payload = XElement.Parse(string.Format(@"
                    <toast>
                        <visual>
                            <binding template=""ToastText02"">
                                <text id=""1"">{0}</text>
                                <text id=""2"">{1}</text>
                            </binding>  
                        </visual>
                    </toast>
                ","Your Header","Your Toast Message"))
  });

  broker.Stop();

Как вы могли заметить выше, для конструктора WnsConfiguration требуются имя пакета, SID пакета и секрет клиента. Чтобы получить эти значения, ваше приложение должно быть зарегистрировано на панели инструментов магазина. Это предоставит вам учетные данные для вашего приложения, которые ваша облачная служба будет использовать при аутентификации с помощью WNS. Вы можете проверить шаги 1–3 на следующей странице MSDN для получения подробной информации о том, как это сделать. (обратите внимание, что в приведенной выше ссылке указано, что вы должны отредактировать файл appManifest.xml с идентификатором вашего приложения, я не делал этого шага, просто убедитесь, что ваше приложение Windows Phone правильно настроено для получения всплывающего уведомления, это < в этом поможет href="http://bsubramanyamraju.blogspot.com.au/2014/12/windowsphone-81-action-center.html" rel="nofollow noreferrer">сообщение в блоге.

Надеюсь это поможет.

person user1573896    schedule 27.12.2015