본문 바로가기

728x90

난 iOS개발자/iOS

(34)
Timer로 작업 예약하기 타이머는 실행되어야 할 작업들을 특정 시간 간격을 두고 실행할 수 있게 해준다. 타이머는 RunLoop와 동작하며, 타이머를 효과적으로 이해하려면 RunLoop 가 어떻게 동작하는지 알아야 한다. (정리 필요) 타이머로 작업 예약하는 방법 1. 타이머의 클래스메서드를 사용하여 타이머를 생성하고 현재 런 루프에 자동 등록 timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { t in self.updateCount() }) timeInterval: 타이머로 지정된 작업의 시간(초)간격. 만약 0.0초를 사용하려 한다면 0.1로 사용하라고 한다. repeats: 타이머의 반복 여부. 무효화될 때까지 지정한 Interval 로 blo..
정확한 위치 정보 이전 글[https://greate-future.tistory.com/89] 에 이어서 ... iOS14부터 정확한 위치정보를 수집할 수 있다. 위치정보 수집승인을 요청하면 아래와 같은 팝업이 발생하는데, 지도가 보이는 View에 “정확한 위치: 켬”이 보인다. 이 부분을 터치하면 끔으로 바뀌게 되는데 지도도 축소되고 내 위치의 범위가 수킬로미터로 늘어나게 된다. 한 눈에 봐도 정확한 위치를 안쓴다고 따악 알려주는구나. 정확한 위치정보를 수집하지 않으면 사용자의 위치를 제대로 가져오기가 힘들다. 만약 앱이 네비게이션같은 기능을 사용해야 하다면 반드시 정확한 위치에 접근 하도록 코드를 수정해야한다. 정확한 위치 정보를 사용하는 앱의 동작을 한번 예시로 보겠다. 네이버 지도앱에서 정확한 위치 권한을 끄고 켰..
위치 정보 가져오기(CoreLocation, CLLocationManager) 위치권한이 필요한 프로젝트를 진행하면서, 계속 검색을 하다가 이제는 필요한 내용을 기록해야 겠다는 생각이 들어서 작성한다. 사용자의 위치권한을 받아야 하는 경우는 많지만 개인적으로 필요한 이유는, Wi-Fi 정보를 읽기 위해서였다. 디바이스가 붙어있는 Wi-Fi 정보를 가져오려했더니 위치정보를 켜야한다나… 이쪽은 또 처음이다 보니 일단은 그런가 보다 하고 시작했다. 1. CoreLocation 위치정보를 가져오기에 앞서 import 해야할 Framework이다. https://developer.apple.com/documentation/corelocation Apple Developer Documentation developer.apple.com coreLocation은 장치의 지리적 위치, 고도, 방향..
JsonString 에서 Dictionary로 변환 extension String{ func convertToDictionary() -> [String: Any]? { if let data = data(using: .utf8) { return try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] } return nil } }
현재 네트워크 정보 가져오기 CNCopyCurrentNetworkInfo CNCopyCurrentNetworkInfo를 통해 현재 디바이스에서 사용중인 네트워크의 정보를 가져올 수 있다. CNCopyCurrentNetworkInfo사용 전에 알아야 할 것 아래 네 가지의 조건중 하나를 충족해야 정상적인 동작이 가능하다. 1. 앱이 위치권한(core location)수집에 대한 사용자의 수집을 받아야 한다. 2. 앱이 NEHotspotConfiguration API를 통해 네트워크를 구성한 경우 3. VPN 활성화 4. 응용 프로그램에 활성 NEDNSSettingsManager 구성이 설치된 경우(NEDNSSettingManager ? 잘 모름) 요구사항이 충족된다면 네트워크 정보를 리턴하고, 그러지 않을 경우 null을 갖는다. Deprecated CNCopyCurrentNe..
NEHotspotNetwork를 이용한 현재 Wi-Fi 상태 가져오기 Wi-Fi연결에 대한 이전 글에 이은 내용 NEHotspotNetwork는 명령 또는 응답과 관련된 Wi-Fi네트워크에 대한 정보다. 명령또는 응답이라는 말이 무엇을 말하는지 잘 모르겠지만... 아래와 같은 속성을 지니고 있다. 이전 게시물에서 NEHotspotConfigurationManager의 apply호출은 Wi-Fi 연결 성공여부를 알 수 없다고 했다. 대신 연결 시도 결과 error 를 받은 후, NEHotspotNetwork의 fetchCurrent를 호출하여 현재 Wi-Fi의 정보를 확인하면 된다. class func fetchCurrent(completionHandler: @escaping (NEHotspotNetwork?) -> Void) 1. Signing & Capabilities에..
NEHotspotConfigurationManager를 이용한 Wi-Fi 연결하기 NEHotspotConfigurationManager Wi-Fi 네트웤의 핫스팟 구성을 적용하고 제거하는 관리자 NEHotspotConfiguration을 생성하여 Wi-Fi 연결을 시도할 수 있다. 주의! 앱이 NEHotspotConfigurationManager를 통해 새 핫스판 구성을 만들고 이를 Wi-Fi 네트워크에 적용하거나 이전에 구성된 네트워크를 업데이트하려고 시도하면 기기에서 사용자에게 명시적인 동의를 받아야만 한다. 사용자의 동의가 이뤄지지 않을 경우 동작이 불가하다. 1. 코드 작성전에 Signing & Capabilities에서 '+Capability' 버튼을 눌러 Hotspot Configuration을 추가한다. 2. import! import NetworkExtension imp..
연락처 저장화면 호출하기 CNContactViewController 전화번호를 저장하면서 직접 입력이 가능한 컨트롤러를 불러야 할 때 . 아래와 같이 사용한다. CNContactViewController는 하나의 연락처에 대한 정보를 편집 할 수 있는데 , 편집말고도 새 연락처를 저장하것이 가능하다. CNContactViewController를 생성하면서 forNewContact로 넘겨주는 인자값으로 CNContact 클래스객체를 넘겨주면 된다. 이때 CNContact는 immutable한 속성이므로 CNContact를 상속했고 Mutable한 CNMutableContact를 넘겨주자. let contact = CNMutableContact() contact.phoneNumbers contact.familyName contact.postalAddresses 주소록 작성시..
UITextField LeftPadding 텍스트 필드에 디자인을 적용하다보면 입력되는 텍스트 옆으로 padding이 들어가야 할 경우가 생긴다. 이때 UITextField의 leftView를 사용해서 간단하게 padding을 넣어줄 수 있다. leftView에 대한 설명을 한 번 보자면... TextField의 leftView를 설명한 부분 왼쪽 공간에 자리한 leftView가 있는데 이것은 optional이므로 여기에 내가 원하는 만큼 넓이를 가진 view를 넣어주게 되면 그 공간이 띄어진 것 처럼 보여질 수 있다. 이 때 텍스트 필드의 색상에 따라 삽입되는 paddingView의 background색상을 맞춰줘야하는것은 필수! clear컬러로 둬서 뒤가 보이도록 두는것도 방법이다. 그리고 leftview에 이미지나 또 다른 view를 add..
Equatable Equatable은 Equatable을 채택한 대상끼리 같은 값인지 확인할때 사용하는 Protocol이다. 간단히 설명을 보면 Equatable 을 채택했을 경우 == 연산자와 != 연산자를 사용하여 같음 또는 같지 않음을 확인할 수 있고 SwiftStandardLibrary의 대부분 타입이 이 Equatable Protocol을 따른다고 한다. 우리가 흔히 사용하는 Int, Float같은 자료형은 모두 ==, != 연산자를 통해 값을 비교하는데 이는 Int,Float같은 자료형이 Equatable Protocol을 채택했기 때문이다. Int타입의 변수를 선언하고 command+Click 으로 그 정의를 따라가보면 Int 옆에 채택한 Protocol 이 나오는데 이 프로토콜들의 뿌리를 따라가다보면 Equ..

728x90