목록iOS개발/MacCatalyst (6)
일모도원(日暮途遠) 개발자
난 AppDelegate.swift안에 아래 코드를 두었다. Timer를 하나 선언하고, 마우스 시간 변수(마우스가 안움직이고 5초지나면 마우스 사라지게할)를 선언하였다. #if targetEnvironment(macCatalyst) // MacOs feature private var mouseTimer: Timer? private var mouseTimeOut: Float = 5.0 // 5초가 지나면 마우스를 숨긴다. #endif 동영상 플레이버튼을 누르면 disableAutoHideMouse함수를 호출한다. if let app = UIApplication.shared.delegate as? AppDelegate { app.disableAutoHideMouse() } disableAutoHideMou..
만들고 있는 맥카탈리스트용 동영상 플레이어에 단축키를 배정해놓았다. 그런데 웹뷰를 동영상뷰 위에 띄우니까 타이핑이 되지 않고, 단축키가 먹는 버그가 있었다. 해결책은 단축키가 있는 메뉴를 웹뷰가 뜰때는 없애주는거다. 메뉴가 있는 뷰(동영상 재생뷰)가 닫힐때는 메뉴를 diable해주고 (즉 팝업이 뜰때는 메뉴가 동작을 안한다) override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) if let app = UIApplication.shared.delegate as? AppDelegate { app.disableMenu() } } 메뉴가 있는 뷰(동영상 재생뷰)가 열리면 menu를 enable해준다. overri..
맥카탈리스트로 앱을 개발하면서 MacBundle.bundle을 추가했는데 iOS버전으로 컴파일하니 아래와 같이 에러가 나왔다. embedded item 'MacBundle.bundle' is building for macOS. You may need to configure 'MacBundle.bundle' to build for iOS. 아래처럼 MacBundle.bundle을 추가해둔 상태이다. Build Phases에서 보면 Dependencies에 MacBunlde이 있는데, iOS도 체크해둔 상태이다. 그래서 아래처럼 Mac Catalyst에만 사용하게 체크하고 iOS용으로 컴파일하니 잘되었다. 근데 iOS에서도 MacBundle을 쓸수 있을려나? 체크가 가능한거 보니 설정을 잘하면 되긴 하나보다.
Mac에서 파일을 저장하기 위해서는 먼저 권한을 줘야 한다. 정확히는 모르겠는데 이렇게 App Sandbox를 열고 권한을 줘도 된다. 먼저 선택한 파일에 읽기 쓰기원한을 줘야 한다. 그럴려면 타겟에 원하는 앱을 선택한후에 "Signing & Capabilities" 탭을 선택하고 "App Sandbox"를 찾는다. (만약 없으면 Capbility옆의 +버튼을 눌러서 App Sandbox를 추가하면 된다) "File Access"에서 "User Selected File"의 "Permission & Access"을 None에서 Read/Write로 변경해준다. 난 AraMultiPlayerPro.entitlements 파일에서 아래처럼 권한을 줬다. (App Sandbox는 개발할때는 NO로 두고, 배포할..
우여곡절끝에 Mac용 앱을 테스트플라이트에 올렸다. 테스트를 하기위해서는 내/외부 테스팅을 추가해야 한다. 난 내부테스터만 추가했다. "내부 테스팅"옆의 +버튼을 누르자. 새 내부그룹명을 정해준다. 아래처럼 그룹 이름을 넣으면 "생성"버튼이 활성화 된다. 그러면 아래처럼 testers라는 그룹이 보이는데 아직 테스터는 아무도 없다. "테스터(0)" 옆의 +버튼을 눌러서 누가 테스트할지 추가하자. 테스트할 사용자를 선택하고 "추가" 버튼을 누르자. 위의 테스터후보가 되기 위해서는 "사용자 및 억세스"에서 미리 등록된 사용자여야 한다. 테스터를 추가하면 아래처럼 나온다. 맥에서도 테스트플라이트를 설치할수있다. 클릭하여 설치 설치되어 있지 않으면 다운받자. 테스터로 등록되면 메일을 보내준다. View in T..
Mac에서 동영상이 재생중일때는 스크린세이버가 동작하면 안된다. CatalystAppManager.swift파일에 아래 두 func을 추가하자. #if targetEnvironment(macCatalyst) import IOKit.pwr_mgt var noSleepAssertionId: IOPMAssertionID = 0 var noSleepReturn: IOReturn? func disableScreenSleep(reason: String = "Unknown reason") -> Bool? { guard noSleepReturn == nil else {return nil} noSleepReturn = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySl..