삼성 TV용 닷넷 앱 만들기

삼성 TV에서 닷넷 앱을 실행할 수 있다는 것을 알고 계시나요?

삼성 TV가 구동되는 운영체제인 타이젠은 닷넷 코어를 메인으로 밀어주고 있습니다. 따라서 삼성 TV에서도 닷넷 앱을 실행할 수 있습니다.

그래서 이번 시간에는 삼성 TV용 닷넷 앱을 만드는 방법을 알아보겠습니다.

개발 환경

  • 윈도우 11 24H2
  • 비주얼 스튜디오 커뮤니티 2022 17.12

실행 환경

  • 삼성 QA80A TV
  • 타이젠 6.0
8 Likes

개발용 도구 설치

먼저 비주얼 스튜디오 2022를 설치합니다. .NET 데스크톱 개발 워크로드는 반드시 설치해야 합니다.

비주얼 스튜디오 2022에 필요한 확장을 설치합니다.

타이젠 스튜디오를 설치합니다. 타이젠 스튜디오는 타이젠 개발을 위한 IDE입니다. 우리는 비주얼 스튜디오를 사용할 것이지만, 타이젠 SDK를 설치하려면 어쩔 수 없이 설치해야 합니다.

타이젠 스튜디오가 설치되면 Package Manager를 실행합니다. TV Extensions-8.0Samsung Certificate Extension을 설치합니다.


TV의 타이젠 버전 확인

TV의 타이젠 버전을 확인해야 합니다. 가장 쉬운 방법은 웹 브라우저를 실행하고 User-agent를 확인하는 것입니다.

저희 집 TV는 QA80A라는 2021년형 모델인데, 타이젠 6.0이 탑재되어 있었습니다.

2 Likes

인증서 생성

인증서를 생성해야 합니다. 삼성 개발자 계정이 없다면 하나 만듭니다.

아래 링크를 확인하여 인증서를 만듭니다.

만드는 과정 중에 DUID라는 것을 입력해야 하는데, 이는 TV 설정 - 고객지원 - 고객지원 정보에서 확인할 수 있습니다. '장치 고유 번호’라는 것을 입력하면 됩니다.

TV 연결하기

TV에서 앱 목록으로 들어갑니다. 리모컨의 123 버튼을 누르고 12345를 순서대로 입력합니다. 그러면 개발자 모드 창이 뜨는데, 켜고 Host PC IP에 컴퓨터의 IP를 입력합니다. OK 버튼을 누르고 TV를 껏다가 켭니다.

Device Manager로 들어갑니다. 핸드폰하고 TV가 그려져 있는 버튼을 누르고 + 버튼을 누릅니다. TV의 IP 주소를 입력합니다. 이는 TV의 네트워크 상태 창에서 확인할 수 있습니다.

4 Likes

프로젝트 생성

TV와 연결했다면 이제 프로젝트를 만들면 됩니다. 비주얼 스튜디오를 열고 Tizen DotNet Project를 선택합니다. 프로젝트를 만들면 이런 창이 뜹니다.

Profile은 tv-samsung, Platform Version은 아까 확인한 타이젠 버전을, Template은 TizenElmSharpApp을 선택합니다.

다만 확인을 누르면 구현되지 않았다면서 오류가 납니다. 근데 프로젝트는 제대로 생성이 되어 있습니다. 하지만 Tizen.NET.Sdk 버전이 1.2.0이라는 없는 버전으로 설정되어 있기 때문에 오류가 나는 것으로 추정됩니다. 이를 1.2.1로 수정해줍니다. 그리고 TargetFramework도 알맞은 타이젠 버전으로 바꿔줍니다.

화면 캡처 2024-12-18 153046

실행

이제 프로젝트를 로드합니다. 디버깅 버튼에 연결한 TV 모델이 표시됩니다. 디버깅 버튼을 누릅시다. 그러면 이렇게 TV에서 앱이 실행됩니다.

리모컨의 뒤로 버튼을 누르면 앱이 꺼지고 디버깅이 중지됩니다.

3 Likes

버튼 및 팝업 띄워보기

이번에는 버튼을 추가하고, 버튼을 누르면 팝업을 띄워보겠습니다. Initialize 메서드 맨 밑에 다음 코드를 추가합니다.

Button button = new(window) {
    Text = "Click Me",
    MinimumWidth = 300,
    Color = Color.Aqua
};

button.Clicked += (s, e) => {
    Popup popup = new(window) {
        Text = DateTime.Now.ToString("yyyy년 MMMM d일 tt h:mm:s"),
        Timeout = 5
    };
    popup.Show();
};

button.Show();
box.PackEnd(button);

다시 디버깅 버튼을 누릅니다. Click Me 버튼을 누르면 이런 식으로 팝업이 뜨게 됩니다.

카운트

이번에는 버튼을 누른 횟수를 측정해봅시다.

private int clickCount;

...

Button count = new(window) {
    Text = "Count: 0",
    MinimumWidth = 300,
    Color = Color.Lime
};

count.Clicked += (s, e) => {
    clickCount++;
    count.Text = $"Count: {clickCount}";
};

count.Show();
box.PackEnd(count);

Button reset = new(window) {
    Text = "Reset",
    MinimumWidth = 150,
    Color = Color.Red
};

reset.Clicked += (s, e) => {
    clickCount = 0;
    count.Text = "Count: 0";
};

reset.Show();
box.PackEnd(reset);

실행해보면 이렇게 됩니다.

2 Likes

마치며

이것으로 간단한 타이젠 삼성 TV 닷넷 앱을 만들어 보았습니다. 참고로 타이젠은 MAUI도 지원합니다. TV가 충분히 최신 모델이라면, MAUI 앱을 실행할 수도 있습니다.

소스 코드는 이 링크에서 확인하실 수 있습니다.

5 Likes

MAUI 타이젠 말고 된다는 이야기인데 Web(HTML)일까요? 아니면 ???

1 Like

ElmSharp는 타이젠의 네이티브 EFL elementary의 C# 래퍼입니다. 윈폼을 코드만으로 작성하는 것과 비슷하게 쓸 수 있는 것 같아서 이 튜토리얼에서 채택했습니다.

1 Like

Elm 형태로 제공하다니

감동이네요

1 Like

소중한 경험 공유 감사합니다.
저도 예전에 타이젠앱 제작 프로젝트를 받아 수행 했었는데, 개발환경에서 디버깅 걸어 TV에서 실행은 가능 하였지만, 다른 기기(TV) 에 설치 하기 위해 릴리즈를 빼서 넣는 방법이 마땅치 않았습니다. (아마도 인증서 문제)

때문에 설치팀에 프로젝트 자체를 넘겨 전시 및 시연이 필요할때마다 디버깅을 걸었었네요.

안드로이드 같은 경우 APK 형태로 빼서 다른 디바이스에서 설치한다던지 하는 방법들이 있을텐데, 이렇게 빌드된 타이젠 앱의 배포와 관련한 문제를 혹시 해결 하셨을지요 ?