다른 라이브러리 문제가 생겨 lock파일을 버리고 새로 업데이트좀 했더니

구글 signin라이브러리가 에러를 내뱉는다.

signIn(with) 이 없단다

이 무슨 개소린가 하고 공식 문서를 살펴보지만 안보인다 swiftUI 문서가 생기기전에 만들어놓은 소스들이라 그런가 싶다

공식문서에서 말해주는데로 다시 짜본다

 

https://developers.google.com/identity/sign-in/ios/reference/Classes/GIDSignIn#-signinwithpresentingviewcontroller:hint:additionalscopes:completion:

func signIn(withPresenting presentingViewController: UIViewController, hint: String?, additionalScopes: [String]?) async throws -> GIDSignInResult

 

이게
GIDSignIn.sharedInstance.signIn(with: config, presenting: vc) { user, error in }

 

config설정과 presentingvc설정을 해줘야한다.

config를 넣어서 하는 함수는 보이지 않는다

sharedInstance.configuration 항목이 셋업도 할 수 있는거 같아 여기에 넣어줬다

GIDSignIn.sharedInstance.configuration = .init(clientID: clientID)

GIDSignIn.sharedInstance.signIn(withPresenting: vc){ result, error in

//에러처리 로그인 실패 처리

// result는 GIDSignInReuslt 라 기존에 idToken을 뽑아내려면 좀더 들어가야있더라

let idToken = result.user.idToken.tokenString

// idToken이 기존에는 그냥 String으로 줬는데 IDToken이라는게 또 따로있더라

// 로그인 성공 처리

}

cocoapod으로 Snapkit 5.6.0 버전을 다운받아 사용중이였는데

작업 pc변경이후 계속 모듈을 찾을 수 없다는 빌드 에러가 떠서 곤란하게되었다.

실제로 다운받은 파일을 확인해보면 pod으로 받은 다른 파일들은 확인되나 Snapkit만이 폴더만 생성되고 라이브러리의 정보만 담은 파일이 있을뿐 실 코드들이 없다.

이 문제때문에 우선적으로 많이 하는 해결책으로

clean build folder를 돌려보았고.

pod로 받는 파일들을 새롭게 받아보아보았고

DerivedData 폴더를 비워보았으나 역시나 되지 않는다.

 

이런 문제로 사용한 해결방법 아래와같다

1. pod repo update ( podsepc 업데이트 ) 

2. clean build folder ( 기본 단축키 cmd + shift + k )

3. Podfile.lock 삭제

4. Pods폴더 삭제

5. DerivedData 폴더 내부 비움 ( 설정된 DerivedData 폴더의 경로는 xcode의 Preferences... -> Locations 에서 Derived Data 항목으로 알 수 있다.

6. pod install

이제 다시 Pods의 Snapkit 폴더를 찾아보면 무사히 코드들이 다운받아졌음을 알 수 있다

 

 

https://gist.github.com/mbleigh/9c8680cf319ace2f506f57380da66e7d

 

Firebase Hosting Fetch All Files

Firebase Hosting Fetch All Files. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

기존 소스는 없는데 뭐가 올라갔는지 기억도 안나는 상황에서 해보면 재미납니다

사용법은 간단

 

npx https://gist.github.com/mbleigh/9c8680cf319ace2f506f57380da66e7d <site_name>

<site_name> 부분에 자기의 프로젝트 네임을 넣으면된다!

프로젝트 네임 == 사이트네임인 이유는 기본 url이기 때문 커스텀한 프로젝트는 모르겠다.

 

노드로 구성되어 있어서 아마 노드를 설치후에 터미널에서 입력해야할거같다.

 

GADErrorCode

/// The ad request is invalid. The localizedFailureReason error description will have more
/// details. Typically this is because the ad did not have the ad unit ID or root view
/// controller set.
InvalidRequest = 0,

/// The ad request was successful, but no ad was returned.
NoFill = 1,

/// There was an error loading data from the network.
NetworkError = 2,

/// The ad server experienced a failure processing the request.
ServerError = 3,

/// The current device's OS is below the minimum required version.
OSVersionTooLow = 4,

/// The request was unable to be loaded before being timed out.
Timeout = 5,

/// The mediation response was invalid.
MediationDataError = 7,

/// Error finding or creating a mediation ad network adapter.
MediationAdapterError = 8,

/// Attempting to pass an invalid ad size to an adapter.
MediationInvalidAdSize = 10,

/// Internal error.
InternalError = 11,

/// Invalid argument error.
InvalidArgument = 12,

/// Received invalid response.
ReceivedInvalidResponse = 13,

/// A mediation ad network adapter received an ad request, but did not fill. The adapter's error
/// is included as an underlyingError.
MediationNoFill = 9,

/// Will not send request because the ad object has already been used.
AdAlreadyUsed = 19,

/// Will not send request because the application identifier is missing.
ApplicationIdentifierMissing = 20,

GADPresentationErrorCode

/// Ad isn't ready to be shown.
AdNotReady = 15,

/// Ad is too large for the scene.
AdTooLarge = 16,

/// Internal error.
Internal = 17,

/// Ad has already been used.
AdAlreadyUsed = 18,

/// Attempted to present ad from a non-main thread.
NotMainThread = 21,

/// A mediation ad network adapter failed to present the ad. The adapter's error is included as an
/// underlyingError.
Mediation = 22,

 

 

에러 도메인

"com.google.admob"

링크드 리스트

스택

이진 트리

그래프

 

스위프트로 구현이 잘되려나?

'글 쓸 애들' 카테고리의 다른 글

Array 조작  (0) 2022.05.18
URL.isDirectory  (0) 2022.05.16
애플 공홈 튜톨  (0) 2022.05.13
네비게이션의 스와이프 백제스쳐가 동작하지 않는다.  (0) 2022.05.04
Alamofire parameters encoding에 대하여  (0) 2022.05.04

나의 생활패턴 상 별 쓸일도 없는 애플워치...

그래서 그동안 그런이유를 되네며 구입을 미루고 있었는데 

평소와같이 잠안오는 새벽, 무엇에 홀렸는지 구매를 해버렸다

여타 다르기능을 테스트해보며 노는데 이상하게도 맥북 잠금해제는 되지않는다.

아이폰으로 설정을 맞췄기에 동일한 애플계정일텐데 왜 되지 않을까 했는데 이게 바로 자동으로 되는게 아니라 해당 기능에 대한 설정을 해줘야한다더라...

일단 해당 기능을 풀기위해서는 아래의 준비가 필요하다

1. 기기 : 맥북 - 아이폰 - 애플워치

2. 1번의 기기에서 동일한 계정으로 활성화 되어있어야한다

3. 세 기기 모두 블루투스가 켜져있어야한다.

 

애플홈페이지에서 안내하고있는 기능 활성화 방법은 아래와 같다

자동 잠금 해제를 설정하는 방법

기기가 자동 잠금 해제 기능을 사용하기 위한 시스템 요구 사항을 충족하고 다음과 같이 설정되어 있는지 확인합니다.

Mac에서 macOS Ventura 및 이후 버전을 사용하는 경우:

  1. Apple 메뉴() > 시스템 설정을 선택합니다.
  2. 사이드바에서 'Touch ID 및 암호'(또는 Mac 모델에 따라 '로그인 설정')를 클릭합니다.
  3. 오른쪽의 Apple Watch 섹션에서 Apple Watch에 대한 잠금 해제 설정을 켭니다.

이전 버전의 macOS를 사용하는 경우:

  1. Apple 메뉴() > 시스템 환경설정을 선택합니다.
  2. '보안 및 개인 정보 보호'를 클릭합니다.
  3. 'Apple Watch로 앱 및 Mac 잠금 해제' 또는 'Apple Watch로 Mac을 잠금 해제하도록 허용'을 선택합니다.

 

솔직히 하나하나 단계 따지면 귀찮으니 아래같이 하는게 편하다

1. 맥북 설정앱 -> 검색란에서 watch를 검색한다\

맥북의 설정앱에서 watch를 검색한 모습

2. 들어가서 켜준다!

 

그동안 차본 시계는 고등학교시절 수능을 위한 시계와 훈련소에서 썻던 길거리 만원짜리 시계 그리고 자대에서 사용했던 지샥시계 뿐인 손목에 뭘 차고다니지 않던 필요에 의해서만 손목에 뭔갈 착용했던 나여서 그런가 괜시리 손목이 신경쓰인다.

 

이전 시큐리티기능을 사용하지 않고 따로 히든텍스트라든 변수를 정의해줘서 비밀번호 가리고 보이고하는 기능을 구현해놨었다

해당 스크린을 테스트하기위해 테스트코드를 짜놨었는데....

 

이번 최신 버전을 배포하던중 텍스트필드에 중대한 버그가 발견되어 텍스트필드의 시큐리티 기능을 이용하는 방식으로 전환했다

그리고.. 그 이후로 UI테스트코드를 통과하지 못하고있다

도저히 잘못된점을 모르겠어서 뷰를 하나하나 스택쌓아가듯이 찾아 나아가보지만 여전히 해당 아이디를 가진 텍스트필드를 찾을 수 없다고 오류를 뱉고있었다.

 

나의 이 멍청한 시도를 다른이는 하지 않기를 기도하며 문제점을 여기에 적는다

나는 해당 부분을 이렇게 정의하며 찾아보고있었다.

- 라인2 오류 -

let loginvcContentView = app.otherElements["loginvcScrollViewContentView"]
let pwTextField = loginvcContentView.textFields["loginvcPwTextField"]

UITest에 대해 누가 알려주지 않아 거의 그냥 막코딩이라 변수이름이라던가 방법은 그냥 넘어가줬으면 좋겠다

문제는 loginvcContentView에서 찾는 엘레먼트 타입이였다.

텍스트필드에

textField.isSecureTextEntry = true

라고 정의를 해주면 textFields로는 찾을 수 없고

아래와 같이 해줘야한다.

let loginvcContentView = app.otherElements["loginvcScrollViewContentView"]
let pwTextField = loginvcContentView.secureTextFields["loginvcPwTextField"]

그렇다 

저 속성하나 켜줬다고 textField가 아닌 secureTextFields로만 찾을 수 있게되었다.

망할

 

'iOS > swift' 카테고리의 다른 글

No such module ~~ 설치되지 않는 Snapkit 문제  (0) 2023.04.12
ios - Admob 에러코드 메모  (0) 2023.03.21
Alamofire.AFError Code  (0) 2022.10.06
Block Based KVO, iOS - contentSize  (0) 2022.09.27
Date 끼리의 비교  (0) 2022.08.04

+ Recent posts