🔴 필요하게 된 상황Staccato 프로젝트는 Dev 서버와 Release 서버가 분리되어있다. 그래서 Config 파일을 Debug, Release로 각각 만들어 환경을 분리했다. 그러나 문제는 토큰이었다.Release 환경에서 생성한 토큰은 Debug 환경에서 작동하지 않는다.그런데 토큰은 UserDefaults에 저장되어있기 때문에 매번 앱을 삭제했다가 다시 빌드해야하는 번거로움이 있었다.(BundleID가 같기 때문에 UserDefaults가 남아있는 상태로 앱이 덮어씌워지기 때문에 삭제해야 함) 이 문제를 해결하기 위해, Bundle ID로 dev용 앱을 분리하기로 했다.그럼 아래 사진처럼 2개의 앱이 있게 된다. 🟢 구현 방법1. Scheme 추가Manage Schemes... -> +..
안녕하세요! 25년 8월 25일부터 Firebase의 Dynamic Links 서비스가 종료된다는 소식을 들었습니다(˘̩̩̩ㅅ˘̩ƪ) Firebase 대신 사용할 수 있는 무료 딥링크(다이나믹 링크) 서비스를 찾던 중, branch.io를 접하게 되었습니다.MAU가 10K 미만인 서비스는 무료로 딥링크 서비스 사용이 가능하다고 합니다. 0️⃣ 딥링크(Deep Link)와 다이나믹 링크(Dynamic Link)들어가기 전에, 딥링크와 다이나믹 링크의 차이점부터 짚어보도록 하겠습니다. 딥링크(Deep Link)앱 내 특정 위치로 이동시키는 URL 링크.예: myapp://product/123기존 앱 설치자만 사용 가능앱이 설치되어 있어야 동작함 다이나믹 링크(Dynamic Link)딥링크의 확장 개념으로..
-> scaleAspectFill 특인 것으로 사료됨.....-> scaleToFill이나 scaleAspectFit을 적절히 사용하자.....
1. AVKit으로 동영상 재생하는 코드아래 코드는 AVKit으로 동영상을 재생하는 ViewController이다.import UIKitimport AVKitclass ViewController: UIViewController { let url = URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")! // AVPlayerController 생성 let playerController = AVPlayerViewController() // AVPlayer 생성 var player: AVPlayer! // 재생 버튼 생성 l..
참고: (링크)⚫️ 목적팀 프로젝트로 themoviedb API를 활용하여 영화 정보를 검색하고 예매하는 어플을 만들었다.아래 방법으로 로그인, 회원가입 화면에서 아이디, 비밀번호를 입력받는 UITextField에 영문자와 숫자만 입력 가능하도록 설정했다. ⚫️ 방법step 1️⃣ : 뷰컨트롤러 viewDidLoad()에서 textField.delegate = self 설정하기class LoginViewController: UIViewController { @IBOutlet weak var idTextField: UITextField! @IBOutlet weak var pwTextField: UITextField! override func viewDidLoad() { supe..
TextField를 커스터마이징하면서 새롭게 알게 된 몇 가지를 정리해보려 한다. >> TextField 관련 애플 공식문서 : 링크 1. CornerRadius를 주기 위해, clipsToBounds를 true로 설정해야 한다. TextField는 1) 여러개의 하위 뷰로 구성되어 있으며, 2) clipsToBounds 속성은 디폴트값이 false이다. 이 두 가지 이유때문에 cornerRadius를 주려면 clipsToBounds를 true로 설정해주어야 한다. 👉 clipsToBounds란? clipsToBounds는 하위 뷰가 현재 뷰보다 큰 상황에서 그 특징이 잘 드러날 것 같다. 즉, 하위 뷰가 상위 뷰보다 클 경우, 하위 뷰를 현재 뷰의 경계에 맞춰 자를 것인지 여부를 결정해 준다. true..