此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何与 Windows Phone 8 的应用即时应答集成

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

从 Windows Phone OS 7.1 开始,可以从应用即时应答启动 Windows Phone 应用。应用即时应答提供一个指向具有搜索结果的相关 Windows Phone 应用的链接。如果您的应用是从应用即时应答启动的,则它可以确定导致启动的搜索条件,并立即使用这些术语提供基于这些术语的丰富用户体验。

本主题介绍如何创建一个基本的应用,该应用程序确定它是否由应用即时应答启动、相应的搜索条件内容以及如何模拟应用即时应答启动。有关将您的应用与搜索体验集成的其他方法的信息,请参见 Windows Phone 8 的搜索可扩展性

本主题包括以下主要步骤:

  1. 创建 UI

  2. 检查应用即时应答启动

  3. 完成应用

  4. 模拟应用即时应答启动

在本节中,创建一个基本的 UI 以显示应用即时应答参数和值,或声明应用未由应用即时应答启动的消息。根据启动应用的方式,折叠相应的 TextBlock 控件或使其可见。

创建 UI

  1. 打开 Windows Phone SDK,并使用 Windows Phone 应用  模板创建新项目。

  2. 在加载新应用后,在“MainPage.xaml”文件中,使用下列代码替换名为 LayoutRoot 的网格。

        <!--LayoutRoot is the root grid where all page content is placed-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contains the name of the application and page title-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock 
                    x:Name="ApplicationTitle" 
                    Text="APP INSTANT ANSWER EXAMPLE" 
                    Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock 
                    x:Name="PageTitle" 
                    Text="URI details" 
                    Margin="9,-7,0,0" 
                    Style="{StaticResource PhoneTextTitle1Style}"/>
    
                <!-- Made visible when app is launched by App Instant Answer, otherwise collapsed. -->
                <TextBlock
                    x:Name="txtUriParameterName"
                    Text="bing_query" 
                    TextWrapping="Wrap" 
                    Style="{StaticResource PhoneTextExtraLargeStyle}"
                    Visibility="Collapsed"/>
                <TextBlock
                    x:Name="txtUriParameterValue"
                    Text="URI parameter value here" 
                    TextWrapping="Wrap" 
                    Style="{StaticResource PhoneTextAccentStyle}"
                    Visibility="Collapsed"/>
    
                <!-- Made visible when app is not launched by App Instant Answer, otherwise collapsed. -->
                <TextBlock
                    x:Name="txtNoLaunch"
                    Text="This app was not launched by an App Instant Answer." 
                    TextWrapping="Wrap" 
                    Style="{StaticResource PhoneTextSubtleStyle}"
                    Visibility="Collapsed"/>
                
            </StackPanel>
        </Grid>
    
    

    名为 txtUriParameterNametxtUriParameterValueTextBlock 控件分别显示应用即时应答 URI 参数名称和值。值与导致应用启动的搜索条件相对应。名为 txtNoLaunchTextBlock 显示一则消息,指示应用即时应答未启动应用。

  3. 在主页的代码隐藏文件 MainPage.xaml.cs 中,向 MainPage 构造函数中添加以下代码。

                // Configure event handler for page Loaded event.
                this.Loaded += new RoutedEventHandler(MainPage_Loaded);
    
    

    页面加载时,会调用 MainPage_Loaded 事件(即,将在下一步中创建的方法)。

在这一部分中,添加代码以检查启动 URI 中是否存在 bing_query URI 参数。如果存在 bing_query,则从应用即时应答启动应用。如果不存在,则为标准应用启动。

检查应用即时应答启动

  • MainPage.xaml.cs 中,向 MainPage 类添加以下代码。

            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                try
                {
                    // Try to obtain App Instant Answer URI parameter & value.
                    string tempSearchTerms = NavigationContext.QueryString["bing_query"];
    
                    // Show App Instant Answer URI parameter and value.
                    ShowUriParameter(tempSearchTerms);            
                }
                catch
                {
                    // Hide App Instant Answer URI parameter and value.
                    HideUriParameter();
                }
            }
    
    

    如果启动 URI 中存在 bing_query 参数,则调用 NavigationContext QueryString 将返回导致启动的搜索条件。ShowUriParameterHideUriParameter 是将在下一步中创建的帮助器方法。

在本节中,创建用来折叠 UI 元素或使其可见的帮助器方法。根据启动应用的方式调用这些方法。

完成应用

  • MainPage.xaml.cs 中,向 MainPage 类添加以下代码。

            void ShowUriParameter(string searchTerms)
            {
                // Hide message that app was not launched by App Instant Answer.
                txtNoLaunch.Visibility = Visibility.Collapsed;
    
                // Show URI parameter and value.
                txtUriParameterName.Visibility = Visibility.Visible;
                txtUriParameterValue.Visibility = Visibility.Visible;
                txtUriParameterValue.Text = searchTerms;
            }
    
            void HideUriParameter()
            {
                // Show message that app was not launched by App Instant Answer.
                txtNoLaunch.Visibility = Visibility.Visible;
    
                // Hide URI parameter and value.
                txtUriParameterName.Visibility = Visibility.Collapsed;
                txtUriParameterValue.Visibility = Visibility.Collapsed;
            }
    
    

在本节中,修改应用清单文件以模拟应用从应用即时应答启动。模拟应用即时应答启动是必需的,因为无法控制应用即时应答何时显示具有搜索结果的 Windows Phone 应用。

说明注意:

必须将您的应用提交到 Windows Phone 应用商店,然后应用即时应答才能显示具有搜索结果的应用。

模拟应用即时应答启动

  1. 打开应用清单文件:在“解决方案资源管理器”中,展开“属性”以定位“WMAppManifest.xml”文件。然后,右键单击文件名称,单击“打开方式”,并选择“XML(文本)编辑器”

  2. 在应用清单文件 WMAppManifest.xml 中,注释 DefaultTask 元素。该元素指定标准的应用启动。

  3. WMAppManifest.xml 中,向 Tasks 元素中添加以下代码。

          <!-- To simulate App Instant Answer launch from search terms "Xbox 360 4 GB Console with Kinect" -->
          <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml?bing_query=Xbox+360+4+GB+Console+with+Kinect"/>
    
    

    DefaultTask 元素模拟应用即时应答从术语“Xbox 360 4 GB Console with Kinect”的必应搜索启动。

    警告说明警告:

    当您完成调试后,取消注释原始的 DefaultTask 元素,以便您的应用可以执行标准启动。注释该元素会使实际的应用即时应答启动无法正常工作。一次只能存在一个 DefaultTask 元素。

  4. 按 F5 可调试您的应用并将其部署到模拟器或设备。

  5. 观察到应用启动至主页并显示 bing_query 参数和 DefaultTask 元素中所指定的搜索条件。

  6. WMAppManifest.xml 中,注释临时的 DefaultTask 元素并取消注释原始元素。完成后,Tasks 元素应类似于以下代码。

        <Tasks>
          <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
          
          <!-- To simulate App Instant Answer launch from search terms "Xbox 360 4 GB Console with Kinect" -->
          <!--<DefaultTask  Name ="_default" NavigationPage="MainPage.xaml?bing_query=Xbox+360+4+GB+Console+with+Kinect"/>-->
        </Tasks>
    
    
  7. 按 F5 可调试您的应用并将其部署到模拟器或设备。

  8. 观察到应用启动到主页并显示有关标准启动的消息。

显示:
© 2015 Microsoft