Устройство не получает С# Windows Push Notifications, потому что канал несовместим
После многих часов пробной версии я все равно не могу отправить push-уведомления в свое приложение. Это то, что я сделал до сих пор:
-
Активируйте услугу в https://appdev.microsoft.com
-
Получите SID, позвоните ему ms-app://s-1-23-4-12345678901-...-12345678901
-
Получил секрет клиента, позвонит ему 12Lwq7526OqNY8iN-aLkwds23451345
-
В моем приложении в какой-то момент (упрощенном) я вложил следующее:
PushNotificationChannel channel = null;
channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
System.Diagnostics.Debug.WriteLine(channel.Uri);
-
Это печатает такой URL:
https://db3.notify.windows.com/?token=AgY7AABrfRCVgRV%2ba4DwoDjC2omrnOVwCkdhCrrzlJi6UpIwHzcig6%2fG5xZfnDqU0%2fXoE848ddiqyTaTlSSltp2Dn9Z3qaPsMAyh7kS%2bmlis1%2bwoh%2b%2b4DsAK1yeV1d9G1rUIuFs%3s
-
Я добавил правильное имя пакета, отображаемое имя издателя и идентификатор издателя в файл Package.appxmanifest
-
Итак, я думал, что готов тестировать push-уведомления. Используя мою собственную реализацию push sharp, выход fiddler состоит в следующем:
Запрос
POST https://db3.notify.windows.com/?token=AgY7AABrfRCVgRV%2ba4DwoDjC2omrnOVwCkdhCrrzlJi6UpIwHzcig6%2fG5xZfnDqU0%2fXoE848ddiqyTaTlSSltp2Dn9Z3qaPsMAyh7kS%2bmlis1%2bwoh%2b%2b4DsAK1yeV1d9G1rUIuFs%3s HTTP/1.1
X-WNS-Type: wns/toast
Authorization: Bearer EgAC4AA1hAZAQMAklDAAEgAAAUe8/AGsK8a/yk78/WEDQf+KUld/nYIvJ51OIoCPgAfwqbl0oo1sPDLhd9ChiO/iLFVzwlTPE3trp9oTkJxNXi0yUrf+FKjRciq7Utek9B/4dxH9lFNy0R5iwdMS0xNS0yLTIyNDgyMDE1NzEtMjczODcxMjkyMy0yMzM3MbsS59ZuQmXCIAFoOiAAAAAAAgzMOTB7OuFIezrhS60gEAAoANS45LjYuMTBiPoPMh3Nj5MAEOp0RhrcMUx6D50AtDuzWE1AAAAAABeAG1zLWiwcDovL3MtTk2Nzk3LTEzOTYwNDkxODYtMjEyODYwMTQ3MS04MDg1MDg2ODUtMzY3NjQyNTk3OQA=
Content-Type: text/xml
Host: db3.notify.windows.com
Content-Length: 138
<toast>
<visual>
<binding template="ToastText01">
<text id="1">This is a test</text>
</binding>
</visual>
</toast>
Ответ
HTTP/1.1 403 Forbidden
Content-Length: 0
X-WNS-ERROR-DESCRIPTION: Channel URL incompatible with caller app
X-WNS-MSG-ID: 5FC550364E079585
X-WNS-DEBUG-TRACE: DB3WNS4011533
Date: Mon, 23 Dec 2013 23:58:22 GMT
-
Я нашел этот пост URL-адрес канала, несовместимый с приложением-телефоном, который пока не помогал
Я получаю ту же ошибку, используя веб-службу http://31daysofwindows8.com/push. Что я могу сделать здесь? Что могло пойти не так? Обратите внимание, что это приложение еще не было опубликовано в магазине, и я тестирую свою локальную установку Windows 8.1.
Ответы
Ответ 1
Ничего себе, это невероятно. Я почти сходил с ума, но вот решение (и объяснение):
В панели управления приложениями Windows говорится, что вы можете установить личность своего приложения вручную или автоматически. Я решил сделать это вручную (я имею в виду, почему бы и нет?). Но это была ошибка. Я цитирую панель инструментов microsoft.com:
Установить значения идентификатора вашего приложения вручную
Откройте файл AppManifest.xml приложения в текстовом редакторе и установите эти атрибуты элемента, используя значения, показанные здесь.
<Identity Name=" MyName.MyApp " Publisher="CN=*******-****-****-****-************" />
Этот метод не позволял мне получать push-уведомления!
Единственным способом получения push-уведомлений (для меня) было следующее: попытаться установить идентификатор приложения автоматически с помощью Visual Studio, вызвав это меню:
PROJECT -> STORE -> ASSOCIATE APP WITH THE STORE...
Это решило мою проблему.
Ответ 2
Мне не удалось использовать подход "Associate App", потому что клиенту было неудобно давать нам свои кредитные права.
Что сработало для меня, было удалить следующие два элемента из файла .csproj приложения:
<PackageCertificateKeyFile>...</PackageCertificateKeyFile>
<PackageCertificateThumbprint>...</PackageCertificateThumbprint>
Сделайте это, перетащив файл в текстовый редактор или выгрузив проект (используя правый клик) и отредактировав его с помощью редактора xml (снова в контекстном меню).
Эти элементы могли бы залезть, когда мы связали наше приложение с нашим тестовым приложением и остались там, когда мы удалили ассоциацию и просто установили идентификатор, как описано andreas.
<Identity Name="..." Publisher="CN=..." />
Изменить: только что выяснили, что это может нарушить скрипты msbuild, которые создают пакеты. Однако создание пакетов приложений в Visual Studio создало новые версии этих элементов, которые затем работали для меня.
Ответ 3
MS-документы для меня - кошмар, наконец я нашел, что нужно сделать:
щелкните правой кнопкой мыши на вашем приложении для магазина Windows Store → "Сохранить" → "Связать приложение с магазином..." → выберите свое имя приложения и выполните действия, пока сообщение "успешно" → перестроить и запустить
Несмотря на редактирование манифест вручную, строго следуйте документам, но, по-видимому, он недостаточно завершен.
Ответ 4
Используя Кордову для Windows, я узнал, что даже после того, как "Associate App with Store...", Push Messages не удалось доставить.
Проблема заключалась в том, что приложение по-прежнему было назначено по умолчанию CordovaApp_TemporaryKey.pfx.
После того, как я скопировал новую версию CordovaApp.Windows_StoreKey.pfx для доставки сообщений CordovaApp_TemporaryKey.pfx.