windows8 提交应用商店失败,需要添加隐私声明 (privacy statement)
第一次向微软商店提交 Windows 8 的程序,提交后两天被打回来了:
认证报告:
你的应用不符合要求 1.2。
需要思考的问题:
• 你的应用是否需要使用用户帐户? 如果需要使用,你需要在“测试人员说明”字段输入一个测试帐户。
• 用户能否通过该应用购买商品? 如果可以,你需要提供一种方法以对这些购买行为进行测试。
应用不符合此要求的几种常见原因:
• 应用的主要用户方案包含非功能分区或包含占位符(标有“即将推出”、“更多精彩即将呈现”、“尚未提供”等字样)。
• 应用未能在其声明支持的所有体系结构上运行。 例如,如果你声明应用可在任何 CPU 上运行,那么它必须能够在所有体系结
构(包括 ARM)上运行。
• 应用描述中存在误导或模糊的内容。
• 应用描述使用的屏幕截图或语句暗指看似无法执行的功能。
• 应用无法对“播放”和“暂停”键盘事件做出响应,导致用户无法控制音频播放。
• 应用描述中未明确说明任何硬件或网络要求。
你的应用不符合要求 4.1。
4.1 你的应用必须符合以下隐私相关要求:
4.1.1 如果你的应用支持连网使用,则它必须包含隐私声明
如果你的应用从技术角度而言能够传输任何用户的“个人信息”,则你必须维护一个隐私策略。你必须在你的应用的“描述”页
中以及在显示于 Windows“设置”超级按钮中的应用设置中提供对你的隐私策略的访问途径。
使你的应用可以联网使用的应用功能声明包括 internetClient、internetClientServer 和 privateNetworkClientServer。
你的隐私策略必须告知用户你的应用传输的个人信息及如何使用、存储、保护和透露该信息,并且描述用户对使用和共享其信息
所具有的控制权以及他们访问其信息的方式,并且隐私策略符合适用的法律和法规。
4.1.2 你的应用必须取得自愿加入或等效的同意方可共享个人信息
只有在获得用户的自愿加入同意之后,你的应用才可以将用户的个人信息发布给服务或其他人。
选择加入同意 意味着在你执行了如下操作之后,客户明确允许你执行所请求的活动:
a) 向客户描述了信息将如何使用或共享;以及
b) 向客户提供了日后撤消此权限和选择退出、同时继续使用应用的机制。
如果你的应用发布某人的个人信息,但这个人不是客户,则必须先获得其明确的书面同意方可发布该个人信息,并且必须允许信
息被共享的个人在任何时间撤回同意。 如果你的应用允许客户访问其他人的个人信息,也将适用此要求。
个人信息包括可以合理地用于确定个人身份的所有信息或数据。个人信息的示例包括:通讯录、照片、电话号码、音频和视频录
像、位置、短信或其他文本通信、计算机桌面图像或屏幕截图以及基于计算机硬件的唯一标识符,在某些情况下还包括合并的浏
览历史。
你的应用不符合要求 5.3。
5.3 你的应用必须不包含鼓励、促进或宣扬非法活动的内容或功能
我大概浏览了一下,有四处需要修改的,下面是 微软测试人员的回复:
测试人员说明:
.D:: This app appears to be incomplete in its functionality to our reviewers. B:: The app has declared access to
network capabilities and no privacy statement was provided in the Description page. C:: The app has declared
access to network capabilities and no privacy statement was provided in the Windows Settings Charm. D:: To our
reviewers this app contained content that included illegal activity.
主要包含两个错误:
1)在你的应用中,不要出现让用户感觉你的应用没用完成的感觉。
之前在程序的用户反馈功能里面添加了一句很狗血的话:
"windows 8 XXX 为 Beta 版本, 更加丰富的功能会在后续版本添加上,敬请期待"
估计问题出在这里了,果断删掉。
2) 没用添加隐私声明。
在 App.xaml.cs 文件中,重写 OnWindowCreated(WindowCreatedEventArgs args) 方法,然后当用户
点击 “超级按钮” 上的设置时 (Windows 8 的设置操作),添加 “隐私声明” 的链接,点击后可以跳到网站的 “隐私声明” 页面:
protected override void OnWindowCreated(WindowCreatedEventArgs args) { SettingsPane.GetForCurrentView().CommandsRequested += onCommandsRequested; base.OnWindowCreated(args); } void onCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs eventArgs) { //表示处理在用户调用上下文菜单命令时引发的事件的回调函数。 UICommandInvokedHandler handler = new UICommandInvokedHandler(onSettingsCommand); //创建表示设置项的设置命令对象。此设置命令可追加到 ApplicationCommands 矢量。 SettingsCommand privacyStatement = new SettingsCommand("privacyStatement", "隐私政策", handler); //追加 SettingsCommand 对象,使这些对象可供 SettingsPane UI 使用。 eventArgs.Request.ApplicationCommands.Add(privacyStatement); } //当命令调用时 async void onSettingsCommand(IUICommand command) { SettingsCommand settingsCommand = (SettingsCommand)command; if (settingsCommand.Id.ToString() == "privacyStatement") { Uri pageUri = new Uri("网站的隐私声明页面"); await Windows.System.Launcher.LaunchUriAsync(pageUri); } }
搞定,编译后,再次提交 Windows8 商店。
运行效果:
当用户点击 “隐私政策” 时,打开相应网站的页面。
当应用程序提交时,在 win8 的商店的提交应用页面,选择 “提要” 选项:
该页面的最下面, 在文本框中同样填写该隐私声明的链接:
点击上面的 问号 ,显示提示信息:
隐私策略介绍了你如何使用和保护客户的个人信息。 如果你的应用收集个人信息、连接任何在线服务或包含可能允许用户在不经意间共享个人信息的其他功能,则需要包含隐私策略。 请在此处输入隐私策略的 URL。 例如,http://privacy.contoso.com/。
了解详细信息