#social login에 대한 정리

  • 개발환경 : Xcode 12.2

  • 사용언어 : swift

  • 용어 정리 - login /logout으로 통일함 > api 회사마다 sign / login 다르게 쓴다.

#1 kakao

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

#2 apple

 

Apple Developer Documentation

 

developer.apple.com

#3 google

 

Google Sign-In for iOS  |  Google Developers

Get users into your apps quickly and securely, using a registration system they already use and trust—their Google account.

developers.google.com

#4 facebook

 

iOS - Facebook 로그인 - 문서 - Facebook for Developers

 

developers.facebook.com

#5 naver

 

네이버아이디로로그인 iOS 개발가이드

NAVER Developers - 네이버아이디로로그인 iOS 개발가이드

developers.naver.com

 

각 social login을 구현한 프로젝스 소스 위치는 다음과 같습니다.

github.com/zapping0320/SocialLogin

 

zapping0320/SocialLogin

Contribute to zapping0320/SocialLogin development by creating an account on GitHub.

github.com

*해당 소스에는 applicatoin id 관련 정보는 제외 되어 있으니 사용할 경우 info.list을 추가해서 사용해야 함

 

 

 

by 무위자연 2020. 12. 3. 11:17

개발환경 Xcode 12.1

개발 언어 : swift

난 swift와 storyboard로 이루어진 app을 가지고 있고 애플 와치 se를 샀다.

그래서 가벼운 마음으로 app 데이터를 보여주는 watch app이 있으면 좋다고 생각했다.

작업 당시 xcode에서 생성 가능한 watch app의 크게 선택지가 다음과 같다.

1. watch app 개발을 하기 위해서는 새로운 target을 추가로 이동한다.

2. watch만으로 동작 가능한 앱인지 아니면 app와 연동이 되어야 하는지?

난 'app과 연동한다;를 선택했다.

 

3. 그 다음에 Interface를 선택한다. 

- storyboard와 swiftUI 중에 선택한다.

- storyboard를 선택하면 Life Cycle은 WatchKit만 선택 가능하지만 swiftUI를 선택하면 "SwiftUIApp"과 "WatchKit App Delegate"가 선택 가능하다.

> swiftUI 와 "SwiftUIApp"으로 설정한 경우 app과 watch app이 통신 하는 방법을 찾지는 못했다 ㅠㅠㅠㅠ

apple 문서에서도 swiftui + watchkit app 으로 되어 있었다 ㅠㅠ

developer.apple.com/tutorials/swiftui/creating-a-watchos-app

 

Apple Developer Documentation

 

developer.apple.com

그래서 난 storyboard와 watchkit app delegate를 하기로 했다.

데이터 공유의 방향은 다음으로 정했다.

- app에서는 데이터를 CRUD 모두 한다.

- watch에서는 데이터를 RU 만 한다. 

기본적인 통신으로 고려했던 방법은 다음과 같다.

1. 현재 app 에서 데이터를 저장하는 방법은 realm이란 라이브러리를 사용하고 있으니 realm 파일을 App Group을 이용해서 공유하는 방식으로 처리한다.

- 실제 이 방법으로 widget은 공유하고 있는 상태이다.

지만 watch app에 realm이 설치하는 방법을 찾지 못하였다 ㅠㅠㅠㅠ

2. app에서 생성한 데이터를 app에 알고 있는 경로에 json 파일로 저장하고 그걸 watch에서 읽는 방법

사용자에게 노출되지 않는 app내 혹은 app group 내 경로를 맞추는 데 실패하였다.

시뮬레이터 기준으로 다음처럼 나오더라고요

- app에서 얻은 경로

file:///Users/dd/Library/Developer/CoreSimulator/Devices/01BFA962-A2AA-47FC-B1C2-A4638317799A/data/Containers/Shared/AppGroup/724A8AEB-4451-4418-9767-9F78658CEDA1/wrecords.json

- watch에서 얻은 경로

file:///Users/dd/Library/Developer/CoreSimulator/Devices/5E88A606-60DA-4412-96D6-1D386B204C46/data/Containers/Shared/AppGroup/72538C89-C6E1-4FF0-ADB0-044942559F25/wrecords.json

3. 마지막으로 WCSession을 이용해서 json 데이터를 string으로 주고 받도록 한다!!!!!!!!!!!!!!!!!! 

WCSession 

The object that initiates communication between a WatchKit extension and its companion iOS app.

와치와 app 사이에 통신하기 위한 객체... 정도인 듯하다.

출처 :developer.apple.com/documentation/watchconnectivity/wcsession 

 

Apple Developer Documentation

 

developer.apple.com

해당 내용을 구현한 애플의 샘플 주소는 다음과 같다.

developer.apple.com/documentation/watchconnectivity/using_watch_connectivity_to_communicate_between_your_apple_watch_app_and_iphone_app

 

Apple Developer Documentation

 

developer.apple.com

하지만 난 다음 포스팅이 이해하기가 쉬워서 차용했다.

martiancraft.com/blog/2018/02/notification-handling-on-watchkit/

 

Notification Handling on WatchKit

According to our own Richard Turton, notifications are one of the key interaction modes on Apple Watch. A well-designed notification quickly presents any pertinent information to the user and may also give them the opportunity to act on said information. I

martiancraft.com

적용하는 순서는 다음과 같다.

1. app에 wcsession을 제어할 수 있는 코드를 추가한다.

1-1. app delegate에 Session handler를 이용해서 지원 여부를 확인하면 좋다

2. watch 에서도 app과의 메세지를 주고 받도록 session handler를 추가한다.

gist.github.com/zapping0320/cc1fe8368f83a09091fa3797c28003b4.js"></script>

3. app에서 watch로 메시지를 보낸다.

app의 session handler의 sendMessage 를 이용해서 watch에 string을 보낼 수 있다.

4. watch에서 app으로 메시지를 보낸다.

watch에서도 3번과 유사하게 session handler의 sendMessage를 활용하면 된다.

(3,4번 공통)은 메시지를 보내면 응답으로 오는 replyHandler를 이용해서 상대방 혹은 자기가 원하는 동작을 추가해서 구현할 수 있다.

이 때 주고 받는 데이터를 나의 경우에는 json string을 주고 받아서 Encode / Decode 해서 처리하였다.

이 부분에 대해서 궁금하다면 여기를 클릭 bmwe3.tistory.com/1765

 

[swift] codable를 이용해서 json 파일 읽고 쓰기

개발 환경 : Xcode 12.1 사용언어 : swift 애플은 데이터의 json으로의 encode / decode를 지원하기 위해서 codable이란 프로토콜을 지원하고 있다 (Xcode 9.0+) developer.apple.com/documentation/swift/codable..

bmwe3.tistory.com

마치기전에

왜 개발환경을 강조하면서 시작했을까 할 수 있다.

하드웨어를 영향은 아닌 것 같고 Xcode 12.2에서는 app <> watch  메시지를 연결해주는 WCSession 디버깅이 안 된다!!!

부디 유사한 프로젝트 진행하시는 분들에게 도움이 되길 바랍니다.

 

덧> 해당 개발 사항은 하기 앱에 적용되어 있으니 한번 보셔도 좋을 것 같습니다.

https://itunes.apple.com/US/app/id1527099671

by 무위자연 2020. 11. 30. 18:26

개발 환경 : Xcode 12.1

사용언어 : swift

애플은 데이터의 json으로의 encode / decode를 지원하기 위해서 codable이란 프로토콜을 지원하고 있다 (Xcode 9.0+)

developer.apple.com/documentation/swift/codable

 

Apple Developer Documentation

 

developer.apple.com

해당 프로토콜을 이용해서 쉽게 json 데이터를 다룰 수 있다. 특히 파일 저장이나 rest api 응답을 받아서 처리할 때 유용하다.

임의의 구조체를 선언하고 codable을 상속 받기만 하면 일단 사용할 준비가 완료 된다.

다음과 같은 임의의 구조체가 있다고 가정해보자.

1. 구조체를 json string으로 

해당 구조체를 이용해서 생성한 데이터를 json string으로 바꾸어서 파일까지 저장한다면 다음과 같이 구현할 수 있다.

 

json string으로 변환했을 때까지를 출력하면 다음과 같이 나온다.

 

2. json string을 구조체로

json 으로 저장된 파일에서 원하는 구조체로 읽어 내는 것은 다음과 같이 사용할 수 있다.

 

3. Date 형식의 경우

codable 프토로콜을 상속 받더라도 json 문법에 맞지 않는 Date 같은 데이터는 처리할수가 없는데

명시적으로 처리하는 방법을 알려준다면 encode/decode가 가능해진다.

encoding 할 경우 다음과 같이 추가해준다면, Date 형식을 읽고 쓰는데 문제가 없다.

 

*처음으로 코드를 캡쳐 대신에 gist를 써보니 깔끔하네요

by 무위자연 2020. 11. 19. 11:57

해당글은 '메디트'라는 회사를 다닌 여정에 대한 글입니다.

재직 기간 2018.1.25~2020.11.6

총평

아이센스에서 아쉬웠던 것들 채웠던 시간이다

- 하나의 프로젝트에 집중하는 것

- 기획자, 디자이너와 함께 하는 것

- 좋은 개발을 지향하는 실력자들과 함께 하는 것

- 개발 이외의 업무를 하지 않는 것

- 개발 아닌 업무로 출장가지 않는 것 - 운영과 설치

- 그지 같은 사람들을 안 보는 것

결론 : 입사 때 원했던 것을 거의 모두 이루었다.

모바일, 서버등으로의 확장을 이루지 못한 점은 아쉽다.

  • 모바일은 면담을 통해서 어필 했고 ios 채팅앱 데모까지 하였으나 성과가 없었다.
  • 백엔드로의 확장은 18.5월에 큰 기회가 있었으나 내부적인 상황으로 인해서 못했다.

 

Work

MeditLink(v1.0.0~v2.3.2)

- 구강 스캐너와 스캔프로그램을 이용해서 생성된 스캔 파일 및 관련 파일을 관리하는 프로그램(digital dentistry의 방향을 제시했다고 생각함)

- QT를 심화해서 알게 되고 필요할 경우 구글에서 찾은 내용이 아니라 소스를 직접 확인해서 처리할 정도로 deep하게 사용함

- Modern C++(14)을 공부하고 알게 되었음

- 모바일리더에서의 메인 프로젝트 이후 처음으로 대규모 개발 인원이 참여하고 기능의 복잡도가 높았던 프로그램이라 설계, 코드리뷰 등의 경험을 축적하는 기회였음

- AWS를 사용하고 백엔드와의 협업 과정을 충분히 경험함

 

Experience

- 기획자, 디자이너, 개발자 함께 서비스를 구축하는 경험이 오랜만이었음

- scrum, agile 방식 지향하는 기조에 맞추려 했음

- 개발 능력이 있고 대규모 테스트와 테스트 자동화 능력이 있는 훌륭한 QA를 만났음

- 하나의 큰 프로젝트에 집중하고 출장 및 대외적인 업무가 없어서 좋은 설계, 좋은 코드에 더 관심과 노력을 쏟을수 있었음

- 여기서도 ex-창업자분이 뽑아주신 좋은 사람들과 좋은 시간을 보냈음

 

Study(2018~2020)

스터디를 하고 side project를 하는 것에 대한 의지과 경험이 완성된 시기다

- firebase 서버를 통한 채팅앱 만들기 > 이 강의를 통해서 채팅앱을 만들었고 그것을 기반으로 해서 회사에 모바일 개발을 어필하기 위해서 데모까지 진행함 : https://bmwe3.tistory.com/1755

[fastcampus]

- ios all in one - 이 앱을 통해서 ios 개발자들과의 교류도 생기고 각종 서비스 및 ios개발에 대한 노하우를 배우는 중이다. 특히나 내 앱을 진짜 출시했다는 점이다. - https://itunes.apple.com/US/app/id1527099671

[인프런]

- 이정효님의 ios autolayout 2탄 - iOS12 앱개발퍼펙트 가이드

- 곰튀김 송치원의 swift로 FP하기

- 자바 스크립트로 알아보는 함수형 프로그래밍

- 아무도 알려주지 않았던 유투브의 비밀

- SwiftUI 개념 익히기

- firebase 서버를 통한 iOS개발 지침서

- firebase 서버를 통한 채팅앱 만들기 - ios

[edwith]

- ios 강의 - 야곰님

 

People

exit하신 ex-사장님이 뽑은 사람들은 다 좋았던 것 같다

눈물나게 좋았던 소장님 이하 사람들

- 정창진 소장님 이하 (구)플랫폼 개발팀 사람들은 모두 좋았다. 몇몇은 더 좋았지만

   > 퇴사 의견에 대해서 "좋은데 가나요?" "더 있으면 좋은데" 이런 식의 반응 중에 하나일거라 생각했는데 "다행이다 아파서 퇴사하는게 아니라서..."라 더 눈물나게 하신 분. 날 응급실로 데려다주셔서 생명도 구해주신 분. 아니었다면 19년에 이미 퇴사했을 전팀장님이자 현 소장님

- 3-3 박진상 책임님

- 3-3 최창하 책임님

- 3-2 이용호 책임님

- 3-2 최경철 책임님

- 3-2 안윤근 책임님

- 3-1 김영진 팀장님

- 3-1 이신영 책임님

- 3-1 이승화 책임님

- 3-1 윤세영 책임님

- 3-1 아기들은 꼰대 안 되려고 안 끼다보니 친해지기 전에 헤어진다

같은 팀이었다가 헤어졌지만 끝까지 함께 챙겨주고 위로해주신

- 양호양 책임님

- 이정근 책임님

- 손지영 책임님

- 허수영 책임님 - 두번의 자체 제작 앱 개발에 큰 도움을 주셨음

- 김정호 책임님 - QA 고수1

- 차요셉 책임님 - QA 고수2

 

Private

 

- 신장암수술 3기말 판정 받고 수술해서 경과가 좋아 약 복용하면서 다행히 복직까지!!!

- 사랑하는 내 딸 지율이를 만났다(7.23) 

 

Next

다시 재야로 나간다.

좋은 제안으로 팀장, ios 개발 모두 익숙치 않지만 하고 싶어서 선택했고

한발 나아가는 단계라 생각한다.

이렇게 회고를 쓸 수 있게 살아 있어서 행복하다

 

지난 아이센스 회고 https://bmwe3.tistory.com/1733

by 무위자연 2020. 11. 6. 16:22
  • 코딩 라이언 2020.11.14 00:10 신고 ADDR EDIT/DEL REPLY

    너무 바쁘게 살다가 오랜만에 놀러왔는데.. 많은 일이 있었네요.
    그래도 수술이 잘 되신거 같아 다행입니다!

  • 무위자연 2020.11.19 13:06 신고 ADDR EDIT/DEL REPLY

    감사합니다~ 코로나가 지나가면 얼굴 봐요~^^

ios 14에서 widgetkit(home widget) 기능을 지원할 수 있게 되었다 

bmwe3.tistory.com/1761

 

[ios][swiftUI][WidgetKit] home screen widget(widget)기능 구현하기

개발환경 : Xcode 12.0.1 1. wigetkit이란? ios14부터 홈 화면에 widget을 넣을 수 있다. app이 가진 정보를 app을 열지 않고도 보여주고(일부) 필요할 경우 app을 실행해서 할 일 할 수 있게 해주는 정도의 기

bmwe3.tistory.com

widget 기능을 추가하여 appstore 심사를 받았을 때는 무사히(?) 통과하여 문제가 없다고 생각했다

widget에서 폰트만 바꾼 다음에 심사를 제출하니 다음과 같은 사유로 reject이 되었다

내 코드를 살펴보니 난 Widget 추가 시에 IntentConfiguration으로 생성하였다(default였으므로)

IntentConfiguration로 구성했으면 해당 화면을 구성해야 한다고 첨부 파일을 다음과 같이 해서 보내주었다.

난 딱히 데이터에 손대게 할 생각이 없어서 저게 문제면 "Edit Widget"을 없애면 되겠냐고 물어보았다.

그에 따라서 AppStore는 그건 알아서 해야지?라고 참고 문서만 엄청 보내더라 ㅠㅠ

 

대응은~

IntentConfiguration을 StaticConfiguration으로 변경해서 심사 통과하였습니다.

Widget 기능 구현하실 때는 Configuration을 어찌할지 결정해야겠습니다.

만일 Configuration이 궁금하시다면?

bmwe3.tistory.com/1762?category=682591

 

[ios14][Widgetkit] Widget Configuration

개발환경 : Xcode 12.1 시작하기 전에 Widget 자체에 대해서 궁금하시다면 bmwe3.tistory.com/1761 [ios][swiftUI][WidgetKit] home screen widget(widget)기능 구현하기 개발환경 : Xcode 12.0.1 1. wigetkit이란..

bmwe3.tistory.com

 

by 무위자연 2020. 10. 29. 07:52

개발환경 : Xcode 12.1

시작하기 전에 Widget 자체에 대해서 궁금하시다면

bmwe3.tistory.com/1761

 

[ios][swiftUI][WidgetKit] home screen widget(widget)기능 구현하기

개발환경 : Xcode 12.0.1 1. wigetkit이란? ios14부터 홈 화면에 widget을 넣을 수 있다. app이 가진 정보를 app을 열지 않고도 보여주고(일부) 필요할 경우 app을 실행해서 할 일 할 수 있게 해주는 정도의 기

bmwe3.tistory.com

Widget Configuration을 2가지로 나눌 수 있다.

developer.apple.com/documentation/widgetkit/creating-a-widget-extension

 

Apple Developer Documentation

 

developer.apple.com

StaticConfiguration은 홈에 설정된 위젯의 내용에 대한 변경 기능을 제공하지 않는 것이고

예시.

IntentConfiguration은 위젯 변경 (Edit Widget)을 제공하는 것이다.

예시 - Edit Widget이 보인다.

만들 위젯 혹은 앱 데이터의 성향에 따라서 결정하면 된다.

어떤 Configuration을 설정할지는 "Target"추가 화면에서 "Include Configuration Intent"를 클릭하면 IntentConfiguration가,

클릭을 해제하면 StaticConfiguration가 설정되게 된다.

 

만들 때 무엇을 선택하더라도 변경이 쉬우므로 크게 고민하지 않아도 된다.

차이점은 Widget 생성자와 TimelineProvider가 무엇을 상속받느냐의 일뿐이다.

  StaticConfiguration IntentConfiguration
생성자
TimelineProvider

TimelineProvider

IntentTimelineProvider
intentdefinition file X O

 

IntentConfiguration으로 만든 앱이라면 다음과 같이 intentdefinition file에서 parameter을 추가해줄 수 있다.

해당 parameter는 위젯 편집 으로 진입해서 값을 수정할 수 있게 된다.

by 무위자연 2020. 10. 29. 07:42

개발환경 : Xcode 12.0.1

1. wigetkit이란?

ios14부터 홈 화면에 widget을 넣을 수 있다. app이 가진 정보를 app을 열지 않고도 보여주고(일부) 필요할 경우 app을 실행해서 할 일 할 수 있게 해주는 정도의 기능이다.

애플 공식 가이드 글 : developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/widgets

 

Widgets - System Capabilities - iOS - Human Interface Guidelines - Apple Developer

A widget elevates key content from your app and displays it where people can see it at a glance on iPhone, iPad, and Mac. Useful and delightful, widgets can also help people personalize their iPhone Home screens in unique ways. In iOS 14, iPadOS 14, and ma

developer.apple.com

2. 기존 app에 추가하기 위해서는?

Xcode > File > New > Target > WidgetKit을 선택하면 된다

3. 개발시 UI 구성은 반드시 swiftUI로 구성해야 한다.

이 때 app의 개발환경과는 별도이므로 app은 storyboard, widget은 swiftUI로 구성할 수 있다.

- swiftUI 관련 내용은 다음 블로그 포스팅을 참고 했다.

medium.com/harrythegreat/swiftui-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-1%ED%8E%B8-%EA%B8%B0%EB%B3%B8%EA%B5%AC%EC%A1%B0-11e7b589e6de

 

SwiftUI 튜토리얼 1편 — 기본구조

최근 SwiftUI를 공부하며 정리한 내용들을 복습하고자 블로깅하게되었습니다. Swift UI는 UIKit 위에서 빌드되는 프레임워크로 새로운 방식의 UI 인터페이스를 제공하며 선언형 방식의 구조를 가지고

medium.com

4. widgetkit에서 파일을 추가할 경우 반드시 target membership을 확인한다.

target membership을 설정해야 app의 파일과 widgetkiet의 ***homewidget.swift이외의 파일 내용을 ***homewidget.swift에서 접근할 수 있게 된다. 

target membership은 파일 선택후 file inspector(화면 우측 중앙)에서 변경 가능하다

설정하지 않았을 경우 다음과 같이 scope 에러가 나게 된다

RecordView3가 정의되어 있지만 homewidget에서 RecordView3에 접근할수 없다

5. widget은 timelineProvider가 제공하는 timelineEntry를 가지고 UI를 구성한다.

timelineprovider가 다음 entry를 제공하면 변경이 되게 된다.

5-1 timeline이 시간순으로 변경되는 중에 새로 갱신할 필요가 app에서 발생할 경우 다음과 같이 reload를 요청할 수 있다.

출처 : https://developer.apple.com/documentation/widgetkit/keeping-a-widget-up-to-date

 

Apple Developer Documentation

 

developer.apple.com

6. widget 등록 화면에서의 데이터 보여주기

다음과 같이 homewidget의 preview 데이터를 제공하면 widget 등록시 해당 데이터를 보여주고 사용자에게 어떤 위젯 형태(small, medium, large)를 선택할지 도움을 줄 수 있다.

해당 preview가 적용된 위젯 선택 화면은 다음과 같이 나오게 된다.

 

* one more thing!!

app과 widgetkit이 클래스나 파일을 공유할 때는 target membership이면 되지만 데이터를 공유하기 위해서

app group을 설정해주어야 한다.

Xcode > project 설정 > signing & capabilities > Capability 에서 app group을 설정

설정하면 다음과 같이 나온다

by 무위자연 2020. 10. 25. 07:49

온라인 강의 수강생들이 각자 만든 앱을 자발적으로 발표하고 공유하는 자리를 가졌다

Zoom을 통해서 진행했는데

평소에 소수 인원(3명)으로 zoom으로 공유하다가

연사가 5명, 참관자가 10명이상의 zoom 연결 상태에서 연사만 음소거가 아닌 상태로 발표하니

피드백이 채팅과 이모지(박수, 엄지척) 뿐이니 당황스럽더라

게다가 난 나름 대로 팬시해보일려고 노션으로 준비했는데(+ amplitude, simulator로 시연)

다른 분들은 발표자료가 화려 했다..나도 키노트나 ppt로 했어야 했나...

준비는 8-9분정도로 하려고 했으나 피드백 감지가 어렵다 보니 6:15초 정도에 후다닥 끝나버렸네

그래도 이 경험 자체는 기억할만해서 자료로 남긴다

 

<앱 주소>

https://itunes.apple.com/US/app/id1527099671

 

‎AntFootPrint Managing routines

‎"Easily manage what you don't want to miss every day Like a diligent ant leaving a footprint AntFootPrint helps to manage your routines easily You can select color and alarm sound when you make routines. * main functions. - add, modify, delete your rout

apps.apple.com

www.notion.so/zeno0320/1-c9e894bbb2e542cfababd47738043222

 

데모데이 - 1. 앱 간단하게 설명

앱 (앤트, AntFootPrint)

www.notion.so

 

by 무위자연 2020. 10. 18. 11:03

관련 문서 doc.qt.io/qt-5.14/qsqlquery.html#last

 

QSqlQuery Class | Qt SQL 5.14.2

QSqlQuery Class The QSqlQuery class provides a means of executing and manipulating SQL statements. More... Header: #include qmake: QT += sql Public Types Public Functions Detailed Description QSqlQuery encapsulates the functionality involved in creating, n

doc.qt.io

QSQlQuery는 결과를 return하면 해당 결과는 테이블 형태로 반환하게 된다.

간단하게 select해서 count를 보려면 다음과 같이 처리한다.

 
QSqlQuery fileQuery(LocalDB);
QString queryString = QString("SELECT count(*) FROM file_export where cid = %1 and ccid = %2 and programid = %3")
.arg(caseID).arg(caseItemID).arg(static_cast<int>(enumValue));
 
if (fileQuery.exec(queryString) == false)
return metaDataString;
 
int numberOfRows = 0;
if (fileQuery.next()) {//한번은 next를 해줘야 1번째 결과 행으로 이동한다.
numberOfRows = fileQuery.value(0).toInt();
}
else {
return metaDataString;
}
 

이 쿼리를 db 프로그램에서 select하면 다음과 같이 나오고 0번째가 그 값이 되기 때문이다.

by 무위자연 2020. 9. 23. 14:18

 

1. 구글 admob 이란? 

- 구글에서 제공하는 광고 플랫폼  https://admob.google.com/intl/ko/home/

 

Google AdMob: 모바일 앱 수익 창출

인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.

admob.google.com

admob의 이익

2. 시작하기

2-0. 구글 계정을  만든다.

2-1. 구글 admob에 가입을 한다.

2-2. 광고를 추가한다. 이 때 어떤 형태의 광고를 만들지 정하게 된다(배너, 전면 등) - 여기서는 배너로 추가한다.

2-3. 추가한 광고는 다음과 같이 확인이 가능하다.

 

3. SDK를 확인하고 app에 추가한다.

관련 문서 주소 :  https://developers.google.com/admob/ios/quick-start?hl=ko

 

시작하기  |  iOS  |  Google Developers

iOS 앱을 제작 중인 AdMob 게시자를 위한 모바일 광고 SDK입니다.

developers.google.com

3-1. 2번에서 추가한 광고 타입에 따른 코드를 확인한다. 여기서는 배너타입으로 확인할 예정이다.

https://developers.google.com/admob/ios/banner?hl=ko

 

배너 광고  |  iOS  |  Google Developers

배너 광고는 기기 화면의 상단이나 하단에 있는 앱의 레이아웃 안에 게재됩니다. 사용자가 앱과 상호작용하는 동안 배너가 화면에 표시되며, 일정 시간이 지나면 자동으로 새로 고침될 수 있습�

developers.google.com

3-2. app info list에 광고 정보를 추가한다.

https://developers.google.com/admob/ios/app-transport-security?hl=ko

 

앱 전송 보안  |  iOS  |  Google Developers

ATS(App Transport Security)는 iOS 9에서 도입된 개인정보 보호 기능입니다. 새 앱에서는 기본적으로 이 기능이 사용되며, 보안 연결이 적용됩니다. 이러한 변경에 따라 Xcode 7 이상으로 생성하고 ATS를 사

developers.google.com

3-3. 배너 View를 지정하고 다음과 같이 코드를 입력하면 배너가 로드가 된다.

4. 테스트하기

4-1. 정상적으로 배너가 로드 되는지 확인하기 위해서 test unitID를 입력해서 시뮬레이터에서 확인한다.

 > test mode가 뜨는 광고 배너가 보인다면 정상적으로 로드 테스트가 끝났다.

4-2. 2번에서 생성한 광고 단위의 unitID를 입력해서 시뮬레이터에서 확인한다.

- 시뮬레이터이므로 실제 광고 단위여도 test mode가 뜬다

4-3. 빌드 버전을 실제 단말에 연결해서 확인한다.

- test unitID로 보이는지 확인한다.

- 실제 unitID로는 보이지 않는다!!!

단, 다음과 같이 테스트 단말의 device id를 입력한 경우에만 보인다.

5. 실 광고 unitID를 넣어서 AppStore에 앱을 배포하고 수일을 기다린다.(2~3일?)

- 구글 admob 페이지에서 app store 연결하기를 통해서 사용된 app과 adbmob을 연결 시켜준다.

https://support.google.com/admob/answer/2773509?hl=ko

 

AdMob에서 앱 설정하기 - Google AdMob 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com

- 몇 시간을 기다리면, 다음과 같이 admob이 하단에 보이게 된다.

by 무위자연 2020. 8. 31. 13:35