日期:2014-05-17 浏览次数:20897 次
在win8应用提交规则里面有这么一条:
4.1 你的应用必须符合以下隐私相关要求:
4.1.1 如果你的应用支持连网使用,则它必须包含隐私声明
如果你的应用从技术角度而言能够传输任何用户的“个人信息”,则你必须维护一个隐私策略。你必须在你的应用的“描述”页
中以及在显示于 Windows“设置”超级按钮中的应用设置中提供对你的隐私策略的访问途径。
使你的应用可以联网使用的应用功能声明包括 internetClient、internetClientServer 和 privateNetworkClientServer。
你的隐私策略必须告知用户你的应用传输的个人信息及如何使用、存储、保护和透露该信息,并且描述用户对使用和共享其信息
所具有的控制权以及他们访问其信息的方式,并且隐私策略符合适用的法律和法规。
因此,只要是有联网的功能,都要包含隐私声明。
参考了部分资料(例如:http://www.cnblogs.com/hebeiDGL/archive/2012/11/18/2775568.html)后,实现了一下隐私权的声明。比较简单,详见源码:
        protected override void OnWindowCreated(WindowCreatedEventArgs args)
        {
            SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;  
            base.OnWindowCreated(args);
        }
        #region Private Methods
        /// <summary>
        /// 添加设置页面的命令项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
        {
            // 注册用户触发命令对象的回调函数
            UICommandInvokedHandler handler = new UICommandInvokedHandler(onSettingsCommand);			
            // 创建"隐私声明"命令对象
            SettingsCommand privacyStatement = new SettingsCommand("MyAppPrivacyStament", "隐私声明", handler);
            // 在SettingsPane中添加SeetingsCommand对象(隐私声明)
            args.Request.ApplicationCommands.Add(privacyStatement);
        }
        /// <summary>
        /// 响应"隐私声明"命令并跳转到相关页面
        /// </summary>
        /// <param name="command"></param>
        private async void onSettingsCommand(IUICommand command)
        {
            SettingsCommand settingsCommand = (SettingsCommand)command;
            if (settingsCommand.Id.ToString() == "MyAppPrivacyStament")
            {
                Uri privacyPageUri = new Uri("MyPrivacyPageUrl");
                await Launcher.LaunchUriAsync(privacyPageUri);
            }
        }
        #endregion