2020의 게시물 표시

[iOS] 앱 아이콘 동적으로 변경하기 (Dynamically Change App icon)

이미지
  [iOS] 앱 아이콘 동적으로 변경하기 (Dynamically Change App icon) 안녕하세요 물먹고하자입니다. 오늘은 앱 아이콘을 동적으로 변경하는 방법에 대해서 정리해 보았습니다. iOS 10.3 이상부터 지원되는 기능입니다. 참고 :  https://developer.apple.com/documentation/uikit/uiapplication // If false, alternate icons are not supported for the current process. // 앱 아이콘을 변경 할 수 있는지 체크 하는 함수 @available ( iOS 10.3 , *) open var supportsAlternateIcons : Bool { get } // Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work. // 앱 아이콘을 변경하는 함수 @available ( iOS 10.3 , *) open func setAlternateIconName ( _ alternateIconName: String ?, completionHandler: (( Error ?) -> Void )? = nil ) // If `nil`, the primary application icon is being used. // 현재 변경되어 있는 앱아이콘 이름을 아져오는 함수 @available ( iOS 10.3 , *) open var alternateIconName : String ? { get } 샘플 완료 동영상 Git 주소 :  https://github.com/kimjiwook/AppIconChangeSampl

[iOS] application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool 작동하지 않을때

  [iOS] application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool 작동하지 않을때 안녕하세요 물먹고하자 입니다. 오늘을 앱점프를 통해 들어온 데이터를 분기하는 함수가 작동 되지 않을까 간단한 해결방법 공유드립니다.   문제점코드 (AppDelegate.swift)      /// 2020. 01. 16 Kimjiwook     /// URL Open 하여 외부에서 들어오는 부분     /// - Parameters :     ///   - app : application     ///   - url : url 정보     ///   - options : 옵션정보     func application ( _ app: UIApplication , open url: URL , options: [ UIApplication . OpenURLOptionsKey : Any ] = [:]) -> Bool {                  // URL String 값         let URLString = url.absoluteString                  // 2018. 06. 21 Kimjiwook         // 일정앱 및 외부 프로그램에서 로그인정보를 요청하는경우.         let checkURL: NSArray = URLString.components(separatedBy: "://" ) as NSArray                  // 1. 앱연동 플랫폼인지.         if Constants.EBPPlatform == checkURL.firstObject as ? String {             // 인증 절차를 통해 정보를 전달해 줘도 되는지 판단하기.                          let data

[iOS] 앱간 점프시 오류 (This app is not allowed to query for scheme)

이미지
  [iOS] 앱간 점프시 오류 (This app is not allowed to query for scheme) 안녕하세요 물먹고하자 입니다. 앱간 점프로직을 구성하다가 "This app is not allowed to query for scheme" 에러가 발생할시 처리방법입니다. // 멀린 앱으로 점프하기. if let url = URL (string: Constants . BIZCUBE_MULLEN ),      UIApplication . shared . canOpenURL (url) {      // 앱 깔려있는 경우      UIApplication . shared . open (url, options: [:], completionHandler: nil ) }   오류메시지 -canOpenURL: failed for URL: "bcmullen://" - error: "This app is not allowed to query for scheme bcmullen"   처리방법 info.plist > LSApplicationQueriesSchemes 의 item 에 이동할 Schemes 를 추가해주면 됩니다.   마무리 간단하게 이동할 수 있는 URL Schemes 예전(iOS 9이하?)에는 이동할 대상은 추가 안해도 되었었는데, 이동할 대상의 Schemes 을 추가해 줘야 합니다. 즐거운 코딩 되세요~

[iOS] 앱스토어 등록 전, 후 URL 알아보기

이미지
  [iOS] 앱스토어 등록 전, 후 URL 알아보기 안녕하세요 물먹고하자 입니다. 오늘은 앱스토어 등록 전, 후 URL 정보를 알아보려고 합니다. 보통 앱스토어 URL은 업데이트 정보가 있을때, 강제 업데이트가 필요할 때 이동 시켜주려고 필요한 정보입니다. 앱스토어에 등록이 되어있다면 바로 URL은 알 수 있는데, 등록되지 않을때 알아보는 방법에 대해서 포스팅 합니다.   앱스토어 등록된 경우 App Store > App > 앱정보 > App Store에서 보기를 선택하시면 실제 운영되고 있는 App Store 사이트로 이동하게 됩니다.  이 URL 을 사용하시면 됩니다. ex)  https://apps.apple.com/us/app/"앱이름정보"/id 앱ID정보   앱스토어 등록되지 않은 경우 앱이 등록되지 않은 경우에도 동일하게 볼 수 있습니다. App Store > App > 앱정보 > App Store에서 보기를 선택하시면 URL만 존재하고 사이트는 현재 없습니다. 이 URL 을 사용하시면 됩니다.   마무리 보통 앱스토어 URL 빼는 작업은 한 프로젝트당 한번정도 밖에 작업을 하지 않다보니 알고있지만 정리할 필요가 없었는데, 가끔씩은 필요한 정보라 정리하였습니다. 즐거운 코딩 되세요~

[iOS] Xib View Copy AutoLayout Error (Xib View 복사시 오토레이아웃 잡히지 않는 오류 수정)

이미지
   [iOS] Xib View Copy AutoLayout Error (Xib View 복사시 오토레이아웃 잡히지 않는 오류 수정) 안녕하세요. 물먹고하자 입니다. 오늘은 프로젝트 작업중 같은화면(Xib View) 복사시 AutoLayout 이 잡히지 않는 오류 해결 방법에 대해 공유드립니다. (Xcode 10 ~ 11 까지는 별 이슈 없었던것 같은데, 이후로 View 복사시 오토레이아웃이 안잡히는 것 같습니다.)   오류사항 1. 비슷한 View 를 복사해서 써야하는 경우 2. 복사된 내용을 넣으면 오토레이아웃이 잡히지 않는다    해결방법 3. 상세 뒤에서 두번째 탭 > Layout 부분이 Autoresizing Mask 설정으로 되어있다. 4. Layout > Inferred 로 변경 5. AutoLayout 이 뜬다. (AutoLayout 잡아주자) 6. AutoLayout 상,하,좌,우 맞추고 추가 7. 완료!   마무리 다들 프로젝트 작업하다 보면 이미 만들어진 View 를 기반으로 수정해서 사용하는 경우가 많을텐데, 어느순간 갑자기 안잡혀서 오류인줄 알았는데, Layout 설정이 잘못되어서 AutoLayout 이 잡히지 않았던것 같다. 단순 Xcode 버그라고만 생각했는데, 오히려 아니여서 다행이다.  생각보다 많이 사용하게 되서 해결방법 공유드립니다. 즐거운 코딩 되세요~

[iOS] Xcode 12.X Error : My App architectures (arm64) include none that Simulator can execute (Intel 64-bit).

이미지
   [iOS] Xcode 12.X Error : My App architectures (arm64) include none that Simulator can execute (Intel 64-bit). 안녕하세요. 물먹고하자 입니다. 오늘은 Xcode 12.X 업데이트 이후 시뮬레이터 실행되지 않는 오류 해결 방법에 대해 공유드립니다.   오류사항 XCode 12.x 업데이트 이후 이런 에러가 발생 혹은 Import 를 찾지 못하는 에러 My App architectures (arm64) include none that Simulator can execute (Intel 64-bit).   해결사항 Target > Build Settings > VALID_ARCHS 항목 arm64 armv7 armv7s x86_64 arm64e 추가 해준다. x86_64 가 인텔 코어에서 시뮬레이터에 돌아가는 정보가 필요한데, 업데이트 이후 빠진것 같다. Xcode Clean Bulid, Device Data 전체 삭제 후 실행하면 된다.   마무리 이번에 신규 프로젝트를 진행하고 있어서 해당 에러처리를 조금 늦게 하게 되었다. (왜냐면 실기기에선 정상이였음. 또 신규 프로젝트에선 시뮬레이터 실행이 되었음.) 신규 프로젝트와 비교해보니 신규 프로젝트에선 VALID_ARCHS 란 자체가 없었음. 구 프로젝트에서는 해당 항목에 CPU 체크가 있어서 있는거 다 넣어주니 정상적으로 되었다.  약간 의문점이 프로젝트 파일 생성시점에 따라 Bulid Setting 정보가 조금씩 틀린데, Xcode Update 할 때 필요한부분, 필요없는 부분은 자동으로 해줄 수 있는거 아닌가...? 이럴땐 참 불편한 Apple. (어쩔수 없지) 즐거운 코딩 되세요~

[iOS] Date Clendar 오늘, 어제, 내일 비교하기 (Calendar 활용하기)

이미지
  [iOS] Date Calendar 오늘, 어제, 내일, 주말 비교하기 (Calendar 활용하기) 안녕하세요. 물먹고하자입니다. 오랜만에 프로젝트를 진행하다가 기존에 직접 계산했던 부분을 Date 함수에서 지원이 되는 점을 찾아 정리하고자 합니다. 화면 내 날짜 관련으로 비교하여 오늘, 어제 표기를 해야하는데 예전부터 사용해온 방식으로도 계산할 수 있지만, Apple Document 찾아보니 지원하고 있어서 이참에 변경하였습니다. 해당 날 비교 함수 iOS 8.0 이상 Calendar 문서 https://developer.apple.com/documentation/foundation/calendar    Sample Code import UIKit /// 날짜 Date 변경하기 /// - Parameter stringDate: yyyyMMdd 형식 날짜 /// - Returns: Date func stringToDate(stringDate:String) -> Date { let formatter = DateFormatter() formatter.dateFormat = "yyyyMMdd" let date:Date = formatter.date(from: stringDate) ?? Date() return date } /// 날짜 비교하기 /// - Parameter date: Date /// - Returns: String Value func dayDifference(date:Date) -> String { let calendar = Calendar.current var returnString = "" if calendar.isDateInYesterday(date) { returnString = "Yesterday" } else if calendar.isDateInTomorrow(date){ ret

2020 WWDC 참고사항

이미지
2020 WWDC   요약 디바이스 인텔 -> ARM 변경 iPad Xcode, Final Cut Pro 앱 출시 예상됨 (ARM 의 영향으로 보임) iOS 14   위젯 기능 추가  뒷면 더블 터치, 트리플 터치 커스텀 기능 (ex 스크린샷)  App Library 기능으로 숨김처리 가능 (앱 서랍 기능)  팝업 비디오 기능 (홈스크린 내 동영상이 작게 보여지는 기능)  시리 화면 변경 및 (똑똑해 졌다고 함) (별도 화면 대신 작은 화면으로 뜸)  11개 언어 변역기능 추가 (앱도 추가) 오프라인 가능  CarPlay 업데이트 (아이폰 차량 시동걸기) 공유도 가능 (2021 BMW 5시리즈 부터 적용예정)  App Clips NFC 활용한 앱설치 없이 해당 결재, 구입 가능함(기존에 앱설치 후에 결재가 가능한부분인데, 이걸 Extension 으로 만들어야하는듯) #. iOS 14 관련 인터페이스적인 내용이 많은 변화가 있었고, 신규 디바이스에 관련된 내용은 딱히 없었음. 손글씨 테스트 영상   개발자 관련 1. Xcod 12 UI 변경 2. Swift UI 지원되는 UIKit 증가 #. 그외 기술적인 내용들 중에 가장 관심있게 봤던 항목    - UINavigation Button Menu 탭 추가    - DatePicker 의 추가(변화) (개인적으로 이번 iOS 14에서 제일 환영하는 부분) Date Picker의 변화     - ColorPicker 추가        마무리 이번 2020 WWDC는 정리된 내용이

[Swift 공부] if Bettween 종류 및 사용방법

이미지
  [Swift 공부] if Bettween 종류 및 사용방법 안녕하세요. 오늘은 Swift에서 Bettween 사이값 비교하는 방법에 대해서 알아보았습니다.   샘플소스 (Playground) import UIKit func succesPrintString(value:Int) -> String { return "[\(value)] 1~9 사이의 값입니다." } func failPrintString(value:Int) -> String { return "[\(value)] 1~9 사이의 값이 아닙니다.." } /* [참고사항] if 1 ~ 9 사이 Bettween 값 사용시 종류 1. 1 <= value && 9 >= value 2. (1...9).contains(value) 3. 1...9 ~= value (패턴매칭) */ // 비교 대상 값들 let values = [1, 3, 7, 10, 45] for value in values { // 1. 기본 적인 if 문 if 1 <= value && 9 >= value { print("1. 기본적인 Bettween " + succesPrintString(value: value)) } else { print(failPrintString(value: value)) } // 2. contains() 함수 활용 if 문 if (1...9).contains(value) { print("2. contains() 함수활용 " + succesPrintString(value: value)) } else { print(failPrintString(value: value)) } // 3. ~= 패턴매칭자 활

[iOS] Device Name 가져오기 (for Swift) - 2022/09/22 update

  [iOS] Device Name 가져오기 (for Swift) 기존의 Objective C 언어로 가져오는것을 글을 게시했었는데요. 링크 :  https://xodhks0113.blogspot.com/2019/07/ios-device-name.html 요즘은 Objective C 언어 자체로 개발을 안하고 있어서 최신화 겸 Device Name 소스 공유드립니다. 지속적인 사용으로 인한 업데이트 업데이트   - iPhone 14, iPhone 14 Pro, Max 추가 ( 2022. 09. 22) - 코드 최초 작성 ( 2020. 04. 23)   샘플코드

[iOS] UIView 모서리 라운드 처리 알아보기 (cornerRadius, maskedCorners)

이미지
  [iOS] UIView 모서리 라운드 처리 (Radios 알아보기) 오늘은 UIView의 모서리를 둥글게 만드는 법,  4모서리 혹은 원하는 방향만 둥글게 처리하는 방법에 대해서 알아보겠습니다. Playground에서 샘플 작업하였습니다. (하단 샘플소스 참고)   위의 그림같이 4모서리를 전부 라운드 처리 할 경우 layer.cornerRadius 만 사용하여도 표시가 가능합니다. // 1. 모서리 4방향 Radius 기본 적용 let radiusDefault = UIView() radiusDefault.frame = CGRect(x: 100, y: 100, width: 70, height: 70) radiusDefault.backgroundColor = .black view.addSubview(radiusDefault) radiusDefault.layer.cornerRadius = 10   원하는 모서리만 라운드 처리는 ? layer.maskedCorners 를 활용하여 모서리별 값 을 통해 사용할 수 있습니다. radios5.layer.maskedCorners = [ .layerMinXMinYCorner, .layerMinXMaxYCorner, .layerMaxXMaxYCorner, .layerMaxXMinYCorner]   샘플소스 //: A UIKit based Playground for presenting user interface import UIKit import PlaygroundSupport class MyViewController : UIViewController { override func loadView() { let view = UIView() view.backgroundColor = .white // 1. 모서리 4방향 Radius 기본 적용 le

Final Cut Pro 체험판 알아보기

이미지
  Final Cut Pro 체험판 알아보기 동영상 편집툴로 유명한 Final Cut Pro 는 앱스토어를 통해서 받을 수 있는데, 앱스토어에 존재하다 보니 체험판이 있을 리가 없다는 생각을 하고 있었다. 아직 동영상 편집 초보자 인데, 369,000원 을 쓸 수는 없다.... (너무 비싸다) 사이트 참조 :  https://www.apple.com/kr/final-cut-pro/trial/ 애플 사이트 를 접속해 보니 90일간 무료 체험판 다운로드 가 존재한다. 체험해보고 구매하면 좋을것 같습니다.   마무리 개인적으로는 블로그 포스팅 하고 아직은 다운로드 받지 않은 상태 iMove나 이런걸로 어느정도 동영상편집을 쭉 해볼지 말지 판단한 상태에서 체험해보려고 한다. ^^ 끝.