前篇文章我们写了关于Toast的前台激活,那么接下来就讲一讲它的后台激活。当通知出现时并不会出现app的界面,但是app能在后台获取到通知中的信息。
当然
首先我们需要创建一个后台任务,我们先创建一个类库,将其命名为Background,这里需要注意下,这个类库的输出类型必须选择Windows运行时组件才不会爆,感谢Edi.Wang,我也是看到他的博客才知道的。
我们接着创建BackgroundTask类,并在类中写以下代码。
1 public sealed class BackgroundTask : IBackgroundTask 2 { 3 public async void Run(IBackgroundTaskInstance taskInstance) 4 { 5 var deferral = taskInstance.GetDeferral(); 6 ToastNotificationActionTriggerDetail details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; 7 if (details != null) 8 { 9 // 是否选择“确定” 10 string arg = details.Argument; 11 if (arg == "ok") 12 { 13 // 获取数据 14 string value = details.UserInput["name"] as string; 15 // 保存数据 16 StorageFolder local = ApplicationData.Current.LocalFolder; 17 JsonObject jsonObj = new JsonObject(); 18 jsonObj.SetNamedValue("name", JsonValue.CreateStringValue(value)); 19 StorageFile dataFile = await local.CreateFileAsync("data.json", CreationCollisionOption.ReplaceExisting); 20 await FileIO.WriteTextAsync(dataFile, jsonObj.Stringify(), Windows.Storage.Streams.UnicodeEncoding.Utf8); 21 } 22 } 23 deferral.Complete(); 24 } 25 }
BackgroundTask继承IBackgroundTask接口并实现,注意 ,后台任务类本身和后台任务项目中的所有其他类都需要是处于 sealed 状态的 public 类。Run方法是一个入口点,当触发指定事件时,将调用该入口点,每个后台任务都需要该方法。接下来的工作就简单了,我们将Toast获取到的值保存到一个Json文件中,当下次启动app时读取这个文件。
时间: 2024-11-20 21:00:32