정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 App Instant Answer와 통합하는 방법

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Windows Phone OS 7.1 부터 App Instant Answer에서 Windows Phone 앱을 실행할 수 있습니다. App Instant Answer는 검색 결과를 사용하여 관련 Windows Phone 앱에 대한 링크를 제공합니다. App Instant Answer에서 실행된 경우 앱은 실행되도록 한 검색어를 확인하고 즉시 해당 검색어를 사용하여 해당 검색어를 기반으로 한 풍부한 사용자 환경을 제공할 수 있습니다.

이 항목에서는 앱이 App Instant Answer에 의해 실행되었는지 여부 및 해당 검색어가 무엇이었는지를 확인하는 기본 앱을 만드는 방법과 App Instant Answer 실행을 시뮬레이션하는 방법에 대해 설명합니다. 앱을 검색 환경과 통합하는 다른 방법에 대한 자세한 내용은 Windows Phone 8의 검색 확장성를 참조하세요.

이 항목에서는 다음 주요 단계에 대해 설명합니다.

  1. UI 만들기

  2. App Instant Answer 실행 확인

  3. 앱 완료

  4. App Instant Answer 실행 시뮬레이션

이 섹션에서는 App Instant Answer 매개 변수와 값 또는 앱이 App Instant Answer에 의해 실행되지 않았음을 나타내는 메시지를 표시하는 기본 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>
    
    

    txtUriParameterNametxtUriParameterValue라는 TextBlock 컨트롤은 각각 App Instant Answer URI 매개 변수 이름 및 값을 표시합니다. 값은 앱이 실행되도록 한 검색어에 해당합니다. txtNoLaunch라는 TextBlock은 App Instant Answer가 앱을 실행하지 않았음을 나타내는 메시지를 표시합니다.

  3. 기본 페이지의 코드 숨김 파일 MainPage.xaml.cs에서 MainPage 생성자에 다음 코드를 추가합니다.

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

    페이지가 로드되면 다음 단계에서 만드는 메서드인 MainPage_Loaded 이벤트가 호출됩니다.

이 섹션에서는 bing_query URI 매개 변수의 존재 여부를 확인하기 위해 실행 URI를 확인하는 코드를 추가합니다. bing_query가 있으면 앱이 App Instant Answer에서 실행된 것입니다. 없으면 표준 앱 실행입니다.

App Instant Answer 실행을 확인하려면

  • 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();
                }
            }
    
    

    bing_query 매개 변수가 실행 URI에 있으면 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;
            }
    
    

이 섹션에서는 앱 매니페스트 파일을 수정하여 App Instant Answer에서의 앱 실행을 시뮬레이션합니다. App Instant Answer가 검색 결과를 사용하여 Windows Phone 앱을 표시하는 때를 제어하는 것이 불가능하므로 App Instant Answer 실행을 시뮬레이션해야 합니다.

참고참고:

App Instant Answer가 검색 결과를 사용하여 앱을 나타내기 전에 앱을 Windows Phone 스토어 로 전송해야 합니다.

App Instant Answer 실행을 시뮬레이션하려면

  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 4GB Console with Kinect”라는 용어에 대한 Bing 검색에서의 App Instant Answer 실행을 시뮬레이션합니다.

    주의주의:

    디버깅을 마쳤으면 앱이 표준 실행을 수행할 수 있도록 원래 DefaultTask 요소의 주석 처리를 제거합니다. 이 요소를 주석 처리하면 실제 App Instant Answer 실행이 제대로 작동하지 않습니다. 한 번에 하나의 DefaultTask 요소만 존재할 수 있습니다.

  4. F5 키를 눌러 앱을 디버깅하고 에뮬레이터 또는 단말기로 배포합니다.

  5. 앱이 기본 페이지로 실행되고 DefaultTask 요소에 지정된 bing_query 매개 변수 및 검색어를 표시하는지 관찰합니다.

  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. 앱이 기본 페이지로 실행되고 표준 실행에 대한 메시지를 표시하는지 관찰합니다.

표시: