앱티비에서 Hello World.

개시하다


왜냐하면 앱TV 앱이 없는 일본어 HowTo 기사.
나는 제임스 웜스베인 사이트를 참고하여 손을 써 보았다.
http://jamesonquave.com/blog/developing-tvos-apps-for-apple-tv-with-swift/
ViewController 또는 StoryBoard 를 사용하지 않음
javascript에서 XML(TVML)을 만들어 화면에 표시합니다.
(스웨이트 요소가 별로 없다)

할 일

  • Xcode7.1beta로 tvOS를 제작하는 Single View Application
  • AppDelegate.swift
  • 수정
  • main.js 파일 추가
  • main.js에서 XML을 반환하는 방법 추가
  • info.plist에 App Transport Security Settings
  • 추가
  • 터미널에서 "python-m Simple HTTPServer 8000"
  • 두드리기

    1. Xcode7.1beta로 tvos를 만드는 Single View Application.



    2. AppDelegate.m 수정


    TVMLKit 가져오기
    TVApplication Controller를 추가합니다.
    TVAP l cation Controller Delegate를 추가합니다.
    시작할 때의 응용 프로그램 방법을 수정합니다.
    프로그램이 시작될 때main을 하는 것입니다.파일 목록
    App.온런치 방법이 됐어.
    AppDelegate.swift
    import UIKit
    import TVMLKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate {
    
        var window: UIWindow?
    
        var appController: TVApplicationController?
    
        func application(application: UIApplication, didFinishLaunchingWithOptions
                       launchOptions: [NSObject: AnyObject]?) -> Bool
        {
            self.window = UIWindow(frame:UIScreen.mainScreen().bounds)
    
            let appControllerContext = TVApplicationControllerContext()
    
            let jsFilePath = NSURL(string: "http://localhost:8000/main.js")
            let javascriptURL = jsFilePath!
    
            appControllerContext.javaScriptApplicationURL = javascriptURL
            if let options = launchOptions
            {
                for (kind, value) in options
                {
                    if let kindStr = kind as? String
                    {
                        appControllerContext.launchOptions[kindStr] = value
                    }
                }
            }
    
            self.appController = TVApplicationController(context: appControllerContext, window: self.window, delegate: self)
    
            return true
        }
    
        // application以降のメソッドは変更しないので省略します。
    
    }
    
    

    3. main.js 파일 추가


    프로젝트 폴더 > New File > Other > Empty 순으로 마우스 오른쪽 버튼으로 클릭
    빈 파일을 만들고main을 명명합니다.js로
    main.js에 쓰기 처리합니다.

    4. main.js에서 XML을 반환하는 방법 추가


    어플리케이션 시작 시 App.onLaunch에서 XML을 만들고 Modal을 표시하는 방법을 추가합니다.
    main.js
    function getDocument(url) {
        var templateXHR = new XMLHttpRequest();
        templateXHR.responseType = "document";
        templateXHR.addEventListener("load", function() {pushDoc(templateXHR.responseXML);}, false);
        templateXHR.open("GET", url, true);
        templateXHR.send();
        return templateXHR;
    }
    
    function pushDoc(document) {
        navigationDocument.pushDocument(document);
    }
    
    // 起動時に呼ばれる
    App.onLaunch = function(options) {
        alert();
    }
    
    App.onExit = function() {
        console.log('App finished');
    }
    
    // XMLを生成してモーダル表示
    function alert() {
        var alertXMLString =
        `<?xml version="1.0" encoding="UTF-8" ?>
        <document>
            <alertTemplate>
                // 表示する文言
                <title>Hello AppleTV!</title>
            </alertTemplate>
        </document>`
        var parser = new DOMParser();
        var alertDOMElement = parser.parseFromString(alertXMLString, "application/xml");
        navigationDocument.presentModal(alertDOMElement);
    }
    

    5. info.App Transport Security Settings 추가


    화면에 글자를 표시할 준비가 되어 있습니다.
    이러다 iOS 9의 ATS가 HTTP 통신을 차단할 수 있어 원활하게 진행되지 않는다.
    info.plist에 다음과 같은 App Transport Security Settings 추가
    YES로 Allow Arbitrary Loads를 회피합니다.

    6. 터미널에서 "pyhon-m SimpleHTTPServer 8000"


    명령줄의 항목 폴더main입니다.js가 있는 디렉터리로 이동합니다.
    터미널에서 "pyhon-m Simple HTTPServer 8000"을 칩니다.
    ※ 동작을 확인하면 "control+c"로 종료 가능

    7. 어플리케이션 시작


    각양각색의 상황이 다 달라서 곤혹스러워서 마침내 준비가 되었다.
    프로그램을 시작해 보세요!

    총결산


    StoryBoard에 Label 설정 값을 배치하는 Hello World는
    또 다른 어려움과 재미가 있겠지.
    제임스 onquave 사이트에서 왜 이걸 설정해야 하나요?
    간단하게 썼으니까 관심 있으신 분들은 읽어주세요.
    http://jamesonquave.com/blog/developing-tvos-apps-for-apple-tv-with-swift/
    다음 단추를 사용하여 Modal 마이그레이션 설명
    [appleTV에서 presentModal 화면 이동 AC 나 13일째!]
    http://qiita.com/senseiswift/items/eccc7b48328484c25976

    참조 소스

    좋은 웹페이지 즐겨찾기