목록iOS개발 (39)
일모도원(日暮途遠) 개발자
난 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..
애플에서 제공해주는 "파일 앱"에 내 앱을 보이게 할려면 info.plist파일에 아래 두 항목을 추가하자. "UIFileSharingEnabled"은 내 앱의 Document폴더를 오픈하게 해준다. (이것만으로는 Files app에 보이지 않는다.) "LSSupportsOpeningDocumentsInPlace"를 추가하면 Files 앱에 내 앱이 아래처럼 보이다. LSSupportsOpeningDocumentsInPlace UIFileSharingEnabled "나의 iPhone"을 선택한다. AraMultiPlayerPro앱이 있는걸 볼수 있다. 참고싸이트 https://developerinsider.co/how-to-access-document-directory-content-in-files-app/
앱에서 "앱 리뷰" 메뉴를 누르면 아래처럼 별점 주기 를 보여줄려면 아래 코드를 호출하자. 10.3일때랑 14일때랑 코드가 다르다. func transitionReviewThisApp() { if #available(iOS 14.0, *) { if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene { SKStoreReviewController.requestReview(in: scene) } } else if #available(iOS 10.3, *) { SKStoreReviewController.requestReview() } els..
다른 사람에게 내 앱 공유하기 기능을 추가할려고 앱 id 찾기를 하는데, 조금 헤매서 적어둔다. 앱스토어커넥트로 가서 앱을 선택후 General밑의 App Information을 선택후 오른쪽에서 General Information 밑에 보면 Apple ID라고 있다. 이게 App Id다. 브라우저 주소창에도 App Id가 있으므로 굳이 App Information을 안열어도 된다.
멀티 플레이어 동영상 앱을 제출했는데, 무료버전은 통과 되었고, 유료버전은 리젝이 되었다. 둘다 백그라운드 모드에서 Audio가 설정되어있는데, 역시 리뷰는 복불복(福不福)이다. (멀티 플레이어 앱은 백그라운드모드에서는 비디오 플레이를 정지 하기 때문에 위 권한은 필요가 없다) 애플에서 준 에러메시지 Your app may use Audio in background mode. How can we locate this feature within your app? If yes, please provide us a demo video which demonstrates the feature. plist파일을 보면 audio가 있다. Signing & Capbilities에서 보면 Audio 및 AirPlay와 ..
만들고 있는 맥카탈리스트용 동영상 플레이어에 단축키를 배정해놓았다. 그런데 웹뷰를 동영상뷰 위에 띄우니까 타이핑이 되지 않고, 단축키가 먹는 버그가 있었다. 해결책은 단축키가 있는 메뉴를 웹뷰가 뜰때는 없애주는거다. 메뉴가 있는 뷰(동영상 재생뷰)가 닫힐때는 메뉴를 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로 두고, 배포할..