반응형
개발
반응형
78

iOS Widget 구성을 위한 Widget Extension 기본부분 살펴보기

해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. ​ iOS14 에서 새롭게 추가된 Widget을 구성하려면 Widget Extension을 구성하여야 한다. 새롭게 추가된 Widget의 구성(Configuration)은 아래와 같다 - Provider : Widget의 화면 갱신을 담당 - View content : Widget의 화면을 담당 (Widget init) 기본적으로 Widget Extension을 생성하면 자동으로 생성되는 코드에서처럼 다음과 같이 Provider 및 View content를 선언된것을 볼 수 있다. Ex) // @main 부분은 위젯의 시작 지점으로 생각하면 편리하다. @main struct testWidget2: Widg..

개발 2020.11.16

SwiftUI 알아보기 :) Button

해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. ​ ​ 1. 기본 버튼을 만들기는 View를 상속 받은 ContentView 안 body 영역에 붉은색으로 표시된 코드를 작성한다. (SwiftUI의 body 영역은 기본적으로 센터에 표시가 되도록 구성되어 있다.) [ContentView.swift] import SwiftUI struct ContentView: View { var body: some View { Button(action: { // 버튼 액션 }) { // 디스플레이 Text("Button") } } } ​ ​2. 기본 버튼에 토글 액션 추가를 하기 위해 변수를 이용하여 구성한다. 여기서 토글 상태를 저장하는 변수로 @State 변수를 사..

개발 2020.11.11

Xcode 최신버전이 아닌 이전 버전을 다운 받고 싶은 경우?

Xcode가 업데이트 될때마다 바로 업데이트를 하게 될 경우 기존 프로젝트에 빌드 오류가 발생될 수 있다. 이럴때 이전에 사용한 버전으로 Xcode를 다시 받으려면 어떻게 해야 할까? 아래의 링크를 통해 이전 버전의 Xcode 및 관련 프로그램을 다운받아 설치가 가능하다 (단, 개발자 계정이 있어야 하며 로그인을 하여야 리스트를 볼 수 있다.) 로그인 - Apple idmsa.apple.com

개발 2020.11.10

Xcode 빌드 후 단말기에서 실행 시 Please reconnect the device. 문제

최근 출시된 Xcode 12.1에서 iOS 14.2로 업데이트 한 단말기에 개발 중인 앱을 넣으려고 하면 아래 메시지가 출력된다. 이 현상는 Xcode 12.1에 포함된 iOS SDKs가 14.1 까지여서 발생되는 문제로 보여진다. 즉, 14.2 버전으로 업데이트 된 단말기에서는 개발중인 앱을 Xcode 12.1로는 바로 넣어보기는 당분간 힘들어 보인다. 추후 새로운 Xcode 버전으로 업데이트 하거나(앱 스토어에서 기다리거나, 개발자 사이트에서 정식 출시 전 버전 다운로드), TestFlight or Firebase AppDistribution을 통해 테스트를 해야 할듯 하다.

개발 2020.11.10

CocoaPods에 등록한 라이브러리 업데이트 진행 방법!

해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. 앞서 등록한 CocoaPods Library에 코드 수정 및 추가로 인해 업데이트를 해야 한다면 다음과 같은 절차를 진행해야 한다. 1. 라이브러리 프로젝트 안 소스코드 수정 및 추가 라이브러리 프로젝트 워크스페이스 파일을 열어 보면 Pods 라는 프로젝트가 있으며 해당 프로젝트 하단 Development Pods 안 프로젝트 명 폴더 안에 소스코드를 추가하거나 들어있는 코드를 수정한다. 즉 위 .podspec 파일 안 s.source_files 안에 소스코드가 위치하도록 구성한다. 2. GitHub에 수정된 코드 Push 하기 $ git add . $ git commit -m “수정사항 입력” $ git..

개발 2020.10.30

Cocoapods Library 등록 방법 순서대로!

해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. Cocoapods Library를 만들면서 절차를 정리 해보고자 한다. 1. 먼저 pod 명령어를 설치해 놓은 상태여야 한다. Q. Cocoapods를 사용하는 이유라면? A. 해당 프로젝트를 매일매일 체크하면서 업데이트 버전이 나온걸 확인하고 그때마다 업데이트하는것도 매우 귀찮은 작업이다. 코코아팟이 이 문제점을 해결해줄수있다. 내 프로젝트에 사용하고 싶은 프로젝트를 연결하고 업데이트 명령어 한번만 하면 해당 프로젝트의 버전을 체크해서 최신 버전을 내 프로젝트에 연결해준다. 쓰다보면 코코아팟에 등록 안된 프로젝트는 사용할까 말까 고민하게 될정도로 매우 편하다. 비슷한 기능으로 자바 프로젝트에 메이븐과 N..

개발 2020.10.30

iOS 인앱결제 개발시 샌드박스 결제 시 iTunes Store에 연결할 수 없음 오류 문제!

최근 Xcode 12 or Xcode 12.0.1 버전으로 iOS APP을 빌드 한 후 iPad or iPhone에서 인앱상품(소모품 및 정기 구독 등)을 Sandbox로 테스트 결제 시 iTunes Store에 연결할 수 없음으로 결제가 되지 않는 현상이 발생되었다. 해당 현상은 iOS, iPad OS 버전이 14 미만일때만 나타나며, iOS, iPad OS 14 이상으로 업데이트 시 해당 현상은 나타나지 않았다. 우선 위 현상은 Xcode 12 or 12.0.1 버전 문제로 보여지며 어제 날짜로 업로드된 Xcode 12.1에서 해당 문제가 해결되었는지는 추가 확인이 필요할듯 하다. 다행인점은 Sandbox(테스트) 결제 시에만 해당 현상이 발생되는것으로 보인다는 점이며, 실제 결제에서는 정상적으로 결..

개발 2020.10.21

iOS 이미지 푸시 구성해보기!

iOS Push Notification의 경우 일반적으로 Firebase의 FCM 푸시 구성을 많이 하게 된다. 이때 Push Server로 구성한 서버에서 푸시를 전송할때 apn 항목 안아래와 같이 mutable-content 값을 1로 전송하게 되면 푸시를 재 편집 할수 있게 구성이 가능하다. "aps": { "mutable-content":1, ... }, 해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. ​ 1. UNNotificationServiceExtension 이란? Apple Developer Documentation developer.apple.com 위의 주소를 통해 확인해 보면 원격 통지가 사용자에게 전달되기 전에 원격 통지의 내용을..

개발 2020.10.21

iOS Silent Push Notification - 보이지 않는 푸시 구성하기

iOS Push Notification의 경우 일반적으로 Firebase의 FCM 푸시 구성을 많이 하게 된다. 이때 Push Server로 구성한 서버에서 푸시를 전송할때 apn 항목 안아래와 같이 content-available 값을 1로 전송하게 되면 보이지 않는 푸시 구성이 가능하다. "aps": { "content-available":1, ... }, 해당 기능을 이용할 경우 제약 사항으로는 앱 프로세스가 사용자에 의한 강제종료 상태가 아니어야 하며, 백그라운드에서의 코드 실행시간이 30초 가 넘지 않도록 구성을 하여야 한다. 단순히 서버에서 위 설정을 넣는것이 끝이 아니라 Xcode의 Signing & Capabilities 부분에서 아래와 같이 체크를 해주어야 한다.

개발 2020.10.20

Swift iOS guard let vs let

해당 글에서 코드 부분은 파란색으로 표기 됩니다. 해당 글에서 중요 부분은 붉은색으로 표기 됩니다. guard let guard 뒤의 코드의 실행 결과가 true라면 코드가 계속 실행되는 형태이다. 주로 비교가 되는 if 구문과는 다르게 guard 구문은 무조건 else 구문이 따라와 주어야 한다. 이 내부 코드에는 자신보다 상위 코드 블록을 종료하는 코드가 반드시 들어가야 한다. 즉, 코드 블록 종료시 return, break, continue, throw 등 제어문 전환을 위한 명령을 사용해 주어야 한다. guard의 경우 Bool 타입의 값으로 guard문을 동작시킬 수 있지만 옵셔널 바인딩 역할로도 사용된다. 이렇게 사용시 guard로 옵셔널 바인딩 된 상수를 guard 구문 실행 코드 아래부터 ..

개발 2020.09.30