我们的应用上架后,有非常多的途径可以让用户发送反馈,比如留下邮箱、商店评论,甚至自己写个API来收集反馈。但其实,Windows 10的Feedback Hub也是可以为我们所用的。

熟悉Windows Insider的朋友都知道,Windows 10安装完成后,系统自带一个Feedback Hub,这里面通常都是用户对Windows这一款产品的的反馈。其实,现在这个Feedback Hub也可以给开发者用来收集用户的意见。

那么,在UWP里如何调用这个Feedback Hub呢?首先,你需要安装微软官方的Engagement SDK,方法如下:

1. 在NuGet中为你工程安装这个包:Microsoft.Services.Store.Engagement

PM> Install-Package Microsoft.Services.Store.Engagement

2. 如果你的工程Reference里没有出现"Microsoft Engagement SDK"字样,如下图,那就需要进行额外的一步手工操作。(很重要,这点官网文档里没有提)

方法是,编辑你的工程文件(csproj),在管理PackageReference的那个ItemGroup下面加入一项SDKReference,内容为:

<SDKReference Include="Microsoft.Services.Store.Engagement, Version=10.0">
  <Name>Microsoft Engagement Framework</Name>
</SDKReference>

保存工程文件,重启VS加载你的工程,应该就好了。

3. 在你的App里加入反馈链接

以MVVM模式的工程为例,XAML里加入一个HyperLink即可:

<HyperlinkButton Content="Feedback" Command="{Binding CommandFeedback}" />

创建对应的Command属性

public RelayCommand CommandFeedback { get; set; }

具体Command的实现是

CommandFeedback = new RelayCommand(async () =>
{
    var launcher = Microsoft.Services.Store.Engagement.StoreServicesFeedbackLauncher.GetDefault();
    await launcher.LaunchAsync();
});

如果你的App需要target Build 14271以下的Windows 10的话,还需要判断一下SDK是否支持,可以用这个方法判断:

Microsoft.Services.Store.Engagement.StoreServicesFeedbackLauncher.IsSupported()

我的这个App因为已经target了Build 16299的系统,所以不需要加这个判断,现在已经可以跑了:

调用的Feedback Hub如下: