Тост-уведомление WP8 с пользовательским звуком

В настоящее время я пишу приложение, в котором мне нужно использовать собственный звук для всплывающих уведомлений (которые отправляются из облака). MSDN указывает, что аудиоклип должен храниться в каталоге установки приложения или в папке локального хранилища. Итак, как это делается?

Я попробовал пример кода CopyToIsolatedStorage() из Как воспроизвести фоновый звук для Windows Phone. Он правильно извлекает аудиоклип, но когда нужно отобразить всплывающее уведомление, устройство не воспроизводит звук или даже не отображает всплывающее уведомление, что указывает на то, что оно не может правильно найти аудиоклип. В приложении у меня есть метод, который показывает содержимое push-уведомления, когда приложение находится на переднем плане. Оттуда я вижу, что всплывающее уведомление отправляется и принимается правильно с помощью звукового тега toast.mp3. Так что проблема должна быть в приложении, но я не могу понять, что я сделал не так.

Версия Tl;dr: я хочу изменить звук всплывающего уведомления, на моем устройстве работает WP8 с обновлением 3, и у меня есть 5-секундный mp3. Я не могу понять, как и где я должен разместить аудиоклип.


person pasik    schedule 11.03.2014    source источник
comment
Трудно сказать без некоторых подробностей. Куда вы положили аудиофайл? Как вы ссылались на это в коде?   -  person WiredPrairie    schedule 11.03.2014
comment
Я следил за руководством по воспроизведению фонового звука для Windows Phone, клип находится в папке Audio с параметрами Build action-Content и Copy to Output Directory-Copy always свойства. Я попытался запустить тост из фонового агента и настроить звук с помощью SetProperty(toast, "Sound", new Uri("toast.mp3", UriKind.RelativeOrAbsolute));, но он выдает исключение FileNotFoundException. Таким образом, система не может найти аудиоклип ни автоматически (имя файла получено из push-уведомления), ни вручную (SetPropety).   -  person pasik    schedule 11.03.2014
comment
Если они находятся в каталоге Audio, вам нужно будет указать это в пути new Uri(@"Audio\toast.mp3", UriKind.RelativeOrAbsolute)   -  person WiredPrairie    schedule 11.03.2014
comment
В моем случае всплывающее уведомление запускается из push-уведомления с тегом <wp:Sound>toast.mp3</wp:Sound>, а когда приложение находится в фоновом режиме, система обрабатывает push-уведомления и всплывающие уведомления. Часть ручного управления была только тестом. Я проверил Использование пользовательских звуков в тостах по Windows Phone 8 Update 3 но информации там совсем минимум...   -  person pasik    schedule 11.03.2014
comment
Все еще похоже, что путь неверен, как вы его указали. Я не верю, что он будет искать файлы в папках.   -  person WiredPrairie    schedule 11.03.2014
comment
Я думаю, что проверил это перед публикацией здесь, но, возможно, свойства аудиоклипа были неправильными. Во всяком случае, я заставил его работать с push-уведомлениями, подробности в ответе.   -  person pasik    schedule 11.03.2014


Ответы (2)


Я не думаю, что вам нужно копировать звук в изолированное хранилище, просто поместите его в свой основной проект и установите как контент. Затем в вашем Push просто укажите его.

   <wp:Sound>toast.mp3</wp:Sound>

Или, если он находится в папке «Активы» в вашем проекте, сделайте

   <wp:Sound>Assets/toast.mp3</wp:Sound>

Примечание. Это работает только для Windows Phone 8 Update 3 и более поздних версий, отлично работает для всех Windows Phone 8.1.

person MattyMerrix    schedule 30.04.2015

Итак, проблема заключалась в том, что я слепо предположил, что можно ссылаться на аудиоклип только с помощью <wp:Sound>toast.mp3</wp:Sound> или new Uri("toast.mp3", UriKind.RelativeOrAbsolute), как в учебнике MSDN, когда файл копируется в корень изолированного хранилища, но это не так. Вам нужно будет указать каталог, в котором клип находится в вашем проекте, в путь, в моем случае Audio\. Thaks обращается к WiredPrairie, чтобы указать на это.

Итак, подведем итог: скопируйте аудиоклип, который вы хотите использовать, в изолированное хранилище с помощью CopyToIsolatedStorage() из Как воспроизвести фоновый звук для Windows Phone и следуйте инструкциям в Использование пользовательских звуков во всплывающих уведомлениях в Windows Phone 8 с обновлением 3. И не забудьте включить структуру каталогов в путь к клипу или поместить клип в корень вашего проекта.

person pasik    schedule 11.03.2014