iOS 빌드 실행 에러로 한동안 iOS 앱 업데이트를 못하고 있다가 에러를 해결하고 오랜만에 iOS 업데이트 신청을 했다. 앱에 큰 문제가 없어 바로 통과할 줄 알았는데 다음과 같은 이유로 거절당했다.
Guideline 4.8 - Design - Sign in with Apple
We noticed that your app uses a third-party login service but does not offer Sign in with Apple. Apps that use a third-party login service for account authentication must offer Sign in with Apple to users as an equivalent option.
Next Steps
To resolve this issue, please revise your app to offer Sign in with Apple as an equivalent login option.
to learn more about the benefits Sign in with Apple offers users and developers.
Please see attached screenshot for details.
이게 무엇인가 하고 찾아보니 2020년 4월 이후로는 다른 소셜 로그인을 제공하는데 애플 로그인을 같이 제공하지 않으면 기존 앱도 업데이트 거절 사유가 된다고 되어있다. 만약 다른 소셜 로그인을 제공하지 않는다면 애플 로그인이 필수는 아니다. 서비스 중인 앱에서 구글 로그인을 제공하고 있어서 애플 로그인을 적용해야 했다.
Apple로 로그인 버튼 추가
기존에 사용하던 버튼 디자인에 애플의 애플 로그인 디자인 가이드에 벗어나지 않도록 버튼을 추가하고 iOS 에서만 애플 로그인이 가능하도록 만들었다. 안드로이드에서 애플 로그인을 사용하려면 좀 더 복잡한 개발 과정을 거쳐야 하고 안드로이드에서 애플 로그인을 사용할 사용자를 고려하기엔 가성비가 좋지 않았다.
애플 로그인 플러그인
구글 로그인 플러그인 처럼 애플 로그인도 플러그인이 있을거라고 생각하고 여러 자료를 찾아보다가 한 블로그에서 좋은 플러그인 두 가지를 찾게 되었다.
위 코드는 사용중인 코드에서 Apple로 로그인 부분만 가져온 코드라서 그대로 사용하면 컴파일 에러가 발생할 수 있습니다.
추가 내용
플러그인을 사용하니 Apple로 로그인 구현은 생각보다 어렵지 않았다. Quick login도 있었지만 테스트 과정에서 Quick login은 필요하지 않다고 판단해서 구현하지 않았다. Apple로 로그인은 있지만 로그아웃은 개발자가 구현할 수 없었다. Apple ID 사용 중단은 유저가 설정에서 Apple ID를 사용하지 않을 앱을 정해 로그아웃해야한다. 그리고 유저의FullName은 처음으로 Apple로 로그인 할 때에만 가져오고 나머지는null값을 가져온다. 만약에 유저가 이메일 숨기기를 통해 Apple로 로그인을 한다면 유저의 이메일은<unique-alphanumeric-string>@privaterelay.appleid.com과 같은 형식을 따르게 된다.
iOS 빌드는 다 되고 실행하는 데 통신이 안돼서 Xcode 로그를 보니 아래와 같은 에러 로그가 보인다 있다.
iOS에서 이제는 https를 강제하기 때문에 http URL로 통신하려고 하면 Runtime에 Error를 뱉는다.
2020-12-28 20:02:53.378574+0900 project[46312:8363659]
You are using download over http.
Currently Unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition,
but it will be removed soon. Please consider updating to https.
2020-12-28 20:02:53.380318+0900 project[46312:8363628]
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
Temporary exceptions can be configured via your app's Info.plist file.
2020-12-28 20:02:53.380351+0900 project[46312:8363628]
Cannot start load of Task <9D5615C0-5B46-4144-9851-1EB6BFDEAF4A>.
<0> since it does not conform to ATS policy
GoogleMobileAds iOS SDK 7.68 이상은 Firebase 7.x 이상에서 지원합니다.
Firebase 업데이트 하세요
Unity: 2019.4.8f1
AdMob v5.4.0
Firebase v6.16.1 (Messaging & Analytics)
Target minimum iOS Version 12.0
Problem
I can't build the project. XCode error:
../Libraries/Plugins/iOS/GADUAdLoader.h:5:9: 'GoogleMobileAds/GoogleMobileAds.h' file not found
When I trying to update pods terminal throw the next error:
[!] CocoaPods could not find compatible versions for pod "GoogleAppMeasurement":
In Podfile:
Firebase/Analytics (= 6.32.2) was resolved to 6.32.2, which depends on
Firebase/Core (= 6.32.2) was resolved to 6.32.2, which depends on
FirebaseAnalytics (= 6.8.2) was resolved to 6.8.2, which depends on
GoogleAppMeasurement (= 6.8.2)
Google-Mobile-Ads-SDK (~> 7.68) was resolved to 7.68.0, which depends on
GoogleAppMeasurement (~> 7.0)
Attempts
Add 'pod 'GoogleAppMeasurement', '7.0'' to Podfile.
Result
CocoaPods could not find compatible versions for pod "GoogleAppMeasurement":
In Podfile:
Firebase/Analytics (= 6.32.2) was resolved to 6.32.2, which depends on
Firebase/Core (= 6.32.2) was resolved to 6.32.2, which depends on
FirebaseAnalytics (= 6.8.2) was resolved to 6.8.2, which depends on
GoogleAppMeasurement (= 6.8.2)
Google-Mobile-Ads-SDK (~> 7.68) was resolved to 7.68.0, which depends on
GoogleAppMeasurement (~> 7.0)
GoogleAppMeasurement (= 7.0)
Uninstall and install cocoapods
Result
Same error
Project Podfile
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/CocoaPods/Specs'
platform :ios, '12.0'
target 'UnityFramework' do
pod 'Firebase/Analytics', '6.32.2'
pod 'Firebase/Core', '6.32.2'
pod 'Firebase/Messaging', '6.32.2'
pod 'Google-Mobile-Ads-SDK', '~> 7.68'
end
How can I resolve this problem?
[Answer]
Google-Mobile-Ads-SDKversion 7.68 is only compatible with Firebase 7.x. If you want to use Firebase 6.x, you need to use 7.67 or earlier.