我需要发送我的toast通知参数并打开Web浏览器。这是我的代码:
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"));
}
我的激活事件发生了,但是没有打开Web浏览器。该启动器代码在没有Toast通知的情况下工作。
如何使用网址填充args?我的网络服务返回note.RedirectUrl,我想在那里提供它。
答案 0 :(得分:0)
不使用Activated
上的ToastNotification
事件处理程序,而是使用主Application类中的OnLaunched
处理程序(允许轻松访问启动上下文)。
对于要调用的处理程序,需要在toast XML中提供launch argument。使用上面的代码,您可以将参数添加到IToastContent
对象,如下所示:
toastContent.Launch = note.RedirectUrl;
然后在应用程序的OnLaunched
方法中,应用程序可以检索启动参数:
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
if (!String.IsNullOrEmpty(args.Argument)) {
var redirectUrl = args.Argument;
}
}
从LaunchUriAsync
使用时,调用OnLaunched
应该按预期工作。