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

Windows Phone OS 7.1 앱에 Windows Phone 8 및 Windows Phone 7.8 타일 기능 추가

2014-06-18

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

 

Windows Phone 8 및 Windows Phone 7.8 에서는 시작 화면에서 다양한 기능을 사용하는 데 도움이 되는 새로운 타일 크기를 제공합니다. Windows Phone OS 7.1 에서 사용할 앱을 유지 관리하려면 리플렉션을 사용하여 새로운 타일 기능을 보여 주는 Windows Phone 8 및 Windows Phone 7.8 API에 액세스하면 됩니다. 이 방법으로 Windows Phone OS 7.1 앱이 Windows Phone 8 또는 Windows Phone 7.8 에서 실행되는 경우 해당 고객은 새로운 타일 기능에 액세스할 수 있게 됩니다.

Windows Phone 7.8용 Windows Phone SDK 업데이트 에서는 앱이 Windows Phone 7.8 단말기에서 어떻게 보이고 실행되는지 알 수 있게 해주는 Windows Phone SDK 8.0 및 Windows Phone SDK 7.1 용 업데이트를 제공합니다. 앱에 넓은 타일 지원을 추가하기 위해 사용하도록 권장 및 지원되는 유일한 SDK는 Windows Phone SDK 8.0 입니다.

참고참고:

Windows Phone SDK 7.1 도구에서 앱에 넓은 타일을 추가할 경우 Windows Phone 8의 앱 매니페스트 파일의 새로운 <AppExtra> 요소때문에 앱을 빌드할 때 오류가 발생합니다. 앱을 Windows Phone 스토어 에 게시하기 위해 Windows Phone SDK 7.1을 사용하여 앱에 넓은 타일 추가에서 설명한 지원되지 않는 해결 방법을 사용할 수 있습니다.

Windows Phone 8 또는 Windows Phone 7.8 에서 실행되는 Windows Phone OS 7.1 앱은 다음 타일 기능을 지원합니다.

Windows Phone OS 7.1 앱에서 Windows Phone 8 앱과 같은 방법으로 Windows Phone 8 및 Windows Phone 7.8 타일을 만들고 업데이트합니다. 한 가지 차이점은 먼저 작은, 중간 및 (선택적으로) 넓은 기본 타일을 로컬 이미지로 업데이트해야 한다는 점입니다. 다음 업데이트에서 일반적으로 로컬 또는 원격 이미지를 사용할 수 있습니다.

Windows Phone OS 7.1 앱에서 Windows Phone 8 및 Windows Phone 7.8 타일 기능을 사용하도록 설정하려면 리플렉션을 사용해야 합니다. 리플렉션 및 리플렉션 사용 방법에 대한 자세한 내용은 .NET Framework의 리플렉션을 참조하세요.

참고참고:

넓은 타일을 사용하거나 작은 타일에서 이미지를 설정하려면 ShellTile.Update 메서드와 전환 타일 템플릿을 사용하여 앱의 기본 타일을 런타임에 업데이트해야 합니다.

앱 매니페스트 파일 업데이트

  1. 솔루션 탐색기에서 속성을 확장하고 WMAppManifest.xml을 마우스 오른쪽 버튼으로 클릭한 다음 연결 프로그램을 선택하고 소스 코드(텍스트 편집기)(인코딩 사용)을 선택합니다.

  2. 다음 <AppExtra> 요소를 <App> 요소 위에 추가합니다.

    <AppExtra xmlns="" AppPlatformVersion="8.0">
        <Extra Name="Tiles"/>
    </AppExtra>
    
    
참고참고:

AppPlatformVersion="8.0"은 Windows Phone 8 과 Windows Phone 7.8 모두에 적용됩니다.

리플렉션을 사용하여 Windows Phone 8 또는 Windows Phone 7.8 타일을 업데이트하는 코드 추가

OS 버전에 따라, 리플렉션을 사용하여 Windows Phone 8 또는 Windows Phone 7.8 타일을 업데이트하는 코드를 추가합니다.

  1. 클래스 수준에서 OS 버전을 확인합니다. 다음은 Windows Phone 7.8 이상에 대해 확인하는 방법입니다.

    private static Version TargetedVersion = new Version(7, 10, 8858);
    public static bool IsTargetedVersion {get{return Environment.OSVersion.Version >= TargetedVersion;}}
    
    
  2. 위의 IsTargetedVersion 변수를 사용하여 사용할 타일 코드를 결정합니다. 이 방법으로, Windows Phone 8 및 Windows Phone 7.8 은 물론 Windows Phone OS 7.1 에서도 앱이 작동합니다.

    다음 코드 예제에서는 리플렉션을 사용하여 전환 타일을 업데이트하는 데 사용되는 메서드를 보여 줍니다.

    public static void UpdateFlipTile(
                string title, 
                string backTitle, 
                string backContent, 
                string wideBackContent, 
                int count, 
                Uri tileId, 
                Uri smallBackgroundImage, 
                Uri backgroundImage, 
                Uri backBackgroundImage, 
                Uri wideBackgroundImage, 
                Uri wideBackBackgroundImage)
    {
       if (IsTargetedVersion)
       {
          // Get the new FlipTileData type.
          Type flipTileDataType = Type.GetType("Microsoft.Phone.Shell.FlipTileData, Microsoft.Phone");
    
          // Get the ShellTile type so we can call the new version of "Update" that takes the new Tile templates.
          Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");
    
          // Loop through any existing Tiles that are pinned to Start.
          foreach (var tileToUpdate in ShellTile.ActiveTiles)
          {
             // Look for a match based on the Tile's NavigationUri (tileId).
             if (tileToUpdate.NavigationUri.ToString() == tileId.ToString())
             {
                // Get the constructor for the new FlipTileData class and assign it to our variable to hold the Tile properties.
                var UpdateTileData = flipTileDataType.GetConstructor(new Type[] { }).Invoke(null);
    
                // Set the properties. 
                SetProperty(UpdateTileData, "Title", title);
                SetProperty(UpdateTileData, "Count", count);
                SetProperty(UpdateTileData, "BackTitle", backTitle);
                SetProperty(UpdateTileData, "BackContent", backContent);
                SetProperty(UpdateTileData, "SmallBackgroundImage", smallBackgroundImage);
                SetProperty(UpdateTileData, "BackgroundImage", backgroundImage);
                SetProperty(UpdateTileData, "BackBackgroundImage", backBackgroundImage);
                SetProperty(UpdateTileData, "WideBackgroundImage", wideBackgroundImage);
                SetProperty(UpdateTileData, "WideBackBackgroundImage", wideBackBackgroundImage);
                SetProperty(UpdateTileData, "WideBackContent", wideBackContent);
    
                // Invoke the new version of ShellTile.Update.
                shellTileType.GetMethod("Update").Invoke(tileToUpdate, new Object[] { UpdateTileData });
                break;
             }
          }
       }
    
    }
    
    private static void SetProperty(object instance, string name, object value)
    {
       var setMethod = instance.GetType().GetProperty(name).GetSetMethod();
       setMethod.Invoke(instance, new object[] { value });
    }
    
    

표시: