2016-01-11 2 views
1

В настоящее время я разрабатываю мобильное приложение на основе Cordova (версия 4.0.0) для Windows Phone 8.1.Плохой запрос MPNS при push-уведомлении (WP 8.1)

Я внедрил Java-код из API Java-MPNS (из github notnoop) для отправки уведомлений на свое устройство.

Когда я нажимаю сообщение уведомления в MPNS, я получаю эту ошибку:

HTTP/1.1 400 Bad Request [Content-Length: 0, X-WNS-MSG-ID: 50267BB8627BC17D, X-WNS- DEBUG-TRACE: DB5SCH101121935, Strict-Transport-Security: max-age = 31536000; IncludeSubdomains, WWW-Authenticate: Знаменосец, дата: чт, 7 января 2016 9:13:01 GMT] [email protected]

Из документа кодов ответа Notification Service Толчок для Windows Phone 8, этот код ошибки означает, что XML-документ или URI уведомления отклонен.

Вот мое уведомление URI:

https://db5.notify.windows.com/?token=AwYAAAC%2fHaOBh3zOgFjUbZuCSMgzXY29aQDT9wKfpkiPsd85WKBA8muqx4is4r1nBVXQOtRKqe5cc%2fxat7hq6sZBruvm6nQF7p9Sl71TIiqnGvlrdDDw6v0anax4bXUCtflPwEc%3d

Вот документ XML (сгенерированный Java-MPNS из класса TileNotification Java):

<?xml version="1.0" encoding="utf-8"?> 
    <wp:Notification xmlns:wp="WPNotification"> 
     <wp:Tile> 
      <wp:Count>1</wp:Count> 
      <wp:Title>Demo App Windows</wp:Title> 
      <wp:BackContent>New notification</wp:BackContent> 
     </wp:Tile> 
    </wp:Notification> 

Когда я сравниваю этот XML-документ и XML-документ от документации Как отправлять и получать оповещения Tile для Windows Phone 8, я не вижу никаких различий или ошибок. О моем URI уведомления, я думаю, что ссылка правильная.

Но какая разница между http://db3.notify.live.net и https://db5.notify.windows.com?

Есть ли кто-нибудь, кто уже использует этот API? У вас есть идея, как это исправить?

ответ

0

* .notify.live.net - это URI канала MPNS, тогда как * .notify.windows.com является URI канала WNS. Вы получаете URI канала WNS (AKA ваше приложение настроено на использование WNS), но вы пытаетесь использовать MPNS. 400 - это потому, что WNS ожидает, что вы будете аутентифицироваться с использованием OAuth.

Я бы дважды проверял, действительно ли вы хотите использовать MPNS вместо WNS для нового приложения. На данный момент MPNS считается устаревшим. Если вы захотите портировать свое приложение в Windows, создайте UWP в какой-то момент, вам нужно будет переключиться на WNS. Подробнее/руководство можно найти здесь: https://msdn.microsoft.com/en-us/library/windows/apps/dn642085(v=vs.105).aspx

Если вам нужно использовать MPNS, убедитесь, что вы используете API, MPNS запросить канал: https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.notification(v=vs.105).aspx, а не на WNS API-интерфейсы: https://msdn.microsoft.com/en-us/library/windows/apps/hh465412.aspx.

+0

Благодарим вас за полезный ответ! Мне хотелось бы получить дополнительную информацию из ваших объяснений. Я использую API Java только для поддержки MPNS. Но, как я узнаю, что мой Windows Phone нацелен на Silverlight или Universal? Я разрабатываю гибридное мобильное приложение с Cordova. Проблема возникает из API Javascript, который я использую для получения URI канала (имя API - это плагин для подключения к телефонной карте для поддержки Кордовы). Затем этот плагин использует WNS. Когда мое мобильное приложение будет в Windows Store, я должен использовать платформу Azure Notification? – PauloDev

+0

Привет, Пауло, я не знаком с Кордовой, но я предполагаю, что у вас есть WMAppManifest.xml где-то в проекте?Если да, можете ли вы открыть его в редакторе XML и проверить атрибут NotificationService. Если значение «MPN», вы используете MPNS и должны использовать API-интерфейсы Windows.Phone.Notification. Если значение говорит «WNS», вы должны использовать Windows.UI.Notifications –

+0

Чтобы ответить на ваш вопрос об использовании концентраторов уведомлений Azure, вы не обязаны использовать это. Вы можете строить непосредственно поверх API WNS/MPNS или использовать множество других сервисов, которые помогут вам использовать кросс-платформу (Parse, Urban Airship, Pushwoosh и т. Д.). –

Смежные вопросы