1

我需要发送我的 toast 通知参数并打开一个网络浏览器。这是我的代码:

private void DoNotification()
    {
        var notifications = serviceClient.GetNotificationsAsync(App.CurrentRestaurantLocation.ID);
        foreach (RestaurantNotification note in notifications.Result)
        {
            IToastNotificationContent toastContent = null;
            IToastText02 templateContent = ToastContentFactory.CreateToastText02();
            templateContent.TextHeading.Text = note.Title;
            templateContent.TextBodyWrap.Text = note.Message;
            toastContent = templateContent;
            // Create a toast, then create a ToastNotifier object to show
            // the toast
            ToastNotification toast = toastContent.CreateNotification();

            toast.Activated += toast_Activated;
            // If you have other applications in your package, you can specify the AppId of
            // the app to create a ToastNotifier for that application
            ToastNotificationManager.CreateToastNotifier().Show(toast);
        }
    }

    async void toast_Activated(ToastNotification sender, object args)
    {
        await Launcher.LaunchUriAsync(new Uri("http://www.google.com"));
    }

我的激活事件发生了,但是没有打开网络浏览器。该启动器代码在没有 toast 通知的情况下工作。

如何使用 url 填充 args?我的 Web 服务返回 note.RedirectUrl,我想在其中提供它。

4

1 回答 1

0

不要在 上使用Activated事件处理程序,而是使用主应用程序类中ToastNotificationOnLaunched处理程序(它允许轻松访问启动上下文)。

对于要调用的处理程序,需要在 toast XML 中提供启动参数。使用上面的代码,您可以将参数添加到IToastContent对象,如下所示:

toastContent.Launch = note.RedirectUrl;

然后在应用程序的OnLaunched方法中,应用程序可以检索启动参数:

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
    if (!String.IsNullOrEmpty(args.Argument)) {
        var redirectUrl = args.Argument;
    }
}

从 使用时,调用LaunchUriAsync应该按预期工作OnLaunched

于 2012-09-24T20:26:12.227 回答