티스토리 뷰
https://learn.adafruit.com/create-a-swift-playgroundbook-with-bluetooth-le/what-is-a-playground-book
https://ianmcdowell.net/blog/playground-books/
도움이 되었던 사이트들 :D
wwdc scholarship 지원자들이 쓴 글이 정말로 도움이 많이 됐다. 사실 wwdc scholarship에 지원할게 아니면 굳이 playground book을 만들일도 없긴 할거다....차라리 ipad os 앱을 만들라고 해 ㅠ
서론
** 이 글은 2020년 wwdc scholarship을 지원하는 과정에서 쓰여졌습니다 **
애플은 아마 2017년부터? wwdc scholarshop을 위해서 playground book 또는 playground를 받기 시작했다.
기존에는 지원서로 ios 어플을 받았다고 알고 있다 (뇌피셜)
ios 개발을 꽤 오래했지만, playground book은 정말 사용할 일이 없었다. Playground에서 가끔 유닛 테스트를 돌릴 일은 있었지만....
playground와 playground book의 차이
playground book이랑 playground는 확장자가 다르다. 꺄르륵
둘은 엄연히 다르다. 나도 이것때문에 한동안 헷깔렸었는데,
일단 playground는 오래됐다.
Mac과 iOS device 둘 다 에서 돌 수 있다.
playground book은 나온지 얼마 안됐다.
iOS에서밖에 못돌린다. (2020-01-15 업데이트: mac 앱스토어에서 Playground book 다운받으면 이제 맥에서도 런 가능 )
XCode는 playground book 개발 시 도움이 안된다. 코드 자동완성도, 컴파일러 경고/에러도 띄워주지 못한다.
이렇게 쓰면 playground book이 정말 쓰레기 같지만 (어느정도 쓰레기인건 인정;;) 적당히 좋은 점이 몇 가지 있다.
1. playground book이 더 interactive 하다.
2. customizing이 쉽다.
또, playground book에서만 지원하는 몇가지 기능이 있는데....
- Animated cut scene pages built in HTML5
- Full width live views (borderless)
- Hidden code on each page (for hidden setup, teardown, and other interactivity code)
- Custom auto-complete in the keyboard
- Chapters of pages
- Editable areas (restrict editing to a certain portion of code on the page)
- Placeholders
- Glossaries (add a list of terms and definitions viewable when tapping a term)
- Each page can be assessed on a pass/fail basis.
- Changes are tracked to each page and the page can be reset back to default by the user
- Data can be stored in an NSUserDefaults-like key value store.
Playground Book 만들기!!!!
엄청 어렵다 생각보다....
일단 playground랑은 달리, xcode에서 만들 수 없다. 애플이 제공하는 템플릿을 통해서만 만들 수 있다.
그리고 리드미를 꼭 읽어야한다.
developer.apple.com에서 다운받으면 이렇게 생긴다.
README에 보면 스탭들이 나와있다.
README.MD에 보면 다음과 같은 설명이 적혀져 있는데,...
Xcode project는 3가지의 타겟이 있다
1. Playground Book: 북 자체를 만들어냄
2. Book_Sources: 북레벨의 보조 source module을 만든다,
3. LiveViewTestApp: Book_Source 모듈을 써서 App에서 테스트 할 수 있게 해줌.
1. ConfigFiles 폴더 안에 있는 BuildSettings.xcconfig 열어서 BUNDLE_IDENTIFIER_PREFIX 도 바꿔줘야 하고, PLAYGROUND_BOOK_FILE_NAME 도 바꿔주어야 한다.
2. PlaygroundBook 안의 PrivateResources 의 MainfestPlist.strings 파일에서, playgroundBookName, ChapterOneName, ChapterOnePageName등을 적절하게 바꿔준다.
3. LiveViewTestApp의 signing을 제대로 해준다.
이제 빌드를 하고, Product > Show in Finder 해서, AirDrop해서 아이패드로 Playground Book을 열어볼 수 있게 되었다!!
** 문제 발생 : Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.3 compiler: /Users/yejincho/Desktop/Swift_Playgrounds_Author_Template_for_Xcode_11.1/Template/SupportingContent/PlaygroundsFrameworks/iphoneos/PlaygroundSupport.framework/Modules/PlaygroundSupport.swiftmodule/arm64-apple-ios.swiftmodule **
https://forums.developer.apple.com/message/401494#401494
아직 해결중인 이슈 :(
[2020-02-15 업데이트]
내가 포럼에 올린 글이 공감을 많이 받았따!
애플은 그 사이에 새로운 버전의 Playground Author Template을 공개했다.
( 앱스토어에 Playground Book 앱도 공개함!! 이 내용은 나중에 쓸 예정 )[https://apps.apple.com/us/app/swift-playgrounds/id1496833156]
하지만 이 버전 역시나 에러를 뿜뿜 했고....(이전과 같은 에러)
그래서 나의 개발은 한동안 멈춰있었다가......
윤성관 대표님께 여쭤봤더니 "프레임워크를 내부적으로 가지고 있다보니 그런거. 스위프트 콤포넌트를 업뎃하면 될수도 있어요" 라는 대답을 해주셨다 ㅠㅠ 답이 안보이던 문제에 단비같은? 대답이었다.
https://github.com/apple/swift-xcode-playground-support
ㄴㅏ의 경우 지금 PlaygroundSupport가 스위프트 버전이 달라서 안되는거니까 직접 내가 스위프트 5.1.3으로 빌드해버려야지! 그리고 그 빌드한 프레임워크를 넣어버려야지! 라고 생각했었다.
라이브러리: Playground Support
playground나 playground book 구경을 다니다 보면, 꼭 include 한 것을 볼 수 있다.
이런 역할을 하는 라이브러리이다.
- Access a playground page and manage its execution
- Display and dismiss live views
- Share and access persistent data
The live view you display on the right can be either a UIViewController or UIView.
playground book이란?
내가 기존에 쓰던 playground는 뭐였을까?
Swift playground와 XCode Playground는 다른거라고 한다.
playground book = ipad의 playground라는 앱에서, 다운받아서 실행할 수 있는 일종의 파일.
playground book을 만들고 싶으면, playground를 xcode에서 빌드(command + B) 하면 된다고 한다.
playground book 여는 법
플레이그라운드 북을 맥에서 열려고 하면 저렇게 된다.
아 그래서 코드도 아이패드로만 열 수 있나?????? 했는데 역시나 그건 아니였다.
사진처럼, 파일 위에 대고 Reveal in Project Navigator 해주면 된다.
짜잔 ! 이렇게 하면 열린다.
playground book은 구조도 진짜 복잡하다 @.@
Contents > Chapter > Files.playgroundchapter > Pages > Files.playground 안에 있는 Contents.swift가 내 파일이다.
매우 짜증나는게, 빌드를 아이패드에서밖에 못해본다. 에어드랍해서 아이패드로 옮겨야 한다.
플레이그라운드 북의 구조
실제 책의 구조와 비슷하다고 하는데, 평소에 책을 잘 안봐서 모르겠다.
Playground book은 안에 여러개의 챕터가 있고, 챕터에는 페이지가 여러개 있다.
북 레벨마다 manifest.plist가 필요하다!!
-
Metadata such as book version and book target platform
-
Order of chapters
-
User-viewable name for the book
이런게 들어있는 파일이라고 한다.
여기에 주석처리를 통해서, 왼쪽에 책처럼 쓰는 법이 나와있다.
Playground를 Playground Book으로 빌드하기?
가장 궁금했던 부분이다. 이게 되나>??????
'macOS, iOS' 카테고리의 다른 글
[iOS] SFSymbol dmg 파일 (0) | 2020.01.06 |
---|---|
[iOS] SwiftUI Resume 단축키 (0) | 2020.01.06 |
[App] mac을 위한 PopClip (0) | 2020.01.05 |
[iOS] FairPlay, Apple DRM (0) | 2020.01.05 |
Sign in with apple (0) | 2020.01.03 |