1

我正在使用 JavaScript 和 Html 中的 toast 开发用于消息传递通知的 Windows 8 应用程序。由于默认吐司声音是“默认”,但我想将其转换为“短信”声音。我还接受用户的输入,以了解在通知期间要显示的内容。

我的 HTML 代码看起来像

<div>String to display <input type="text" size="20" maxlength="20"      
id="inputString" /></div>
<button id="inputButton" class="action">button</button>

javascript代码看起来像

(function () {
"use strict";
var page = WinJS.UI.Pages.define("/html/home.html", {
    ready: function (element, options) {
        document.getElementById("inputButton").addEventListener("click", noti, false);
 ...


function noti(e) {
    var targetButton = e.currentTarget;

现在我被困现在该怎么办..

我有来自示例 sdk 的以下代码,我无法适应

 var toastSoundSource = targetButton.id;

    // Get the toast manager for the current app.
    var notificationManager = Notifications.ToastNotificationManager;

    var content = ToastContent.ToastContentFactory.createToastText02();

    content.audio.content = ToastContent.ToastAudioContent[toastSoundSource];

我也读过一些博客说它可以通过使用它来完成

toast.Audio.Content = ToastAudioContent.Silent;

我想我只是把事情搞砸了。请尽快提供帮助。谢谢

4

1 回答 1

0

我一直在检查你的代码,确实你的问题在这里:

var toastSoundSource = targetButton.id; // you are getting the id of your button, however your button ID is not a valid index for the sounds we have available in Win8.
content.audio.content = ToastContent.ToastAudioContent[toastSoundSource]; //so when your code arrive here, nothing changes, and Winjs keeps using the DEFAULT sound...

为了解决您遇到的问题...您可以做两件事,将按钮 id 更改为“sms”或通过以下方式之一实现您的代码:

第一 - 强制窗口使用短信(如果这是你想使用的唯一声音......

 function noti(e) {
    var targetButton = e.currentTarget;
    var toastSoundSource = targetButton.id;
    // Get the toast manager for the current app.
    var notificationManager = Notifications.ToastNotificationManager;
    var content = ToastContent.ToastContentFactory.createToastText02();
    content.audio.content = ToastContent.ToastAudioContent.sms; // force system to use SMS sound
    var toast = content.createNotification();
    notificationManager.createToastNotifier().show(toast);
}

第二 - 如果您有更多可用选项,您可以创建一个 if/else,而不是代码可以根据单击的按钮在声音上选择...

function noti(e) {
    var targetButton = e.currentTarget;
    var toastSoundSource = targetButton.id;
    // Get the toast manager for the current app.
    var notificationManager = Notifications.ToastNotificationManager;
    var content = ToastContent.ToastContentFactory.createToastText02();

    if ( toastSoundSource == "inputButton") 
       content.audio.content = ToastContent.ToastAudioContent.sms;
    else 
           content.audio.content = ToastContent.ToastAudioContent.im

    var toast = content.createNotification();
    notificationManager.createToastNotifier().show(toast);
}

我希望这有帮助 :)

于 2012-11-19T21:46:33.037 回答