ITMS-90809 : 더 이상 사용되지 않는 API 사용 — Apple은 UIWebView API를 사용하는 앱 제출을 더 이상받지 않습니다.


91

어제 내 앱을 TestFlight에 업로드했고 잠시 후 Apple이 다음 경고를 보냈습니다.

ITMS-90809 : 더 이상 사용되지 않는 API 사용-Apple은 UIWebView API를 사용하는 앱 제출을 더 이상받지 않습니다. 자세한 내용은 https://developer.apple.com/documentation/uikit/uiwebview 를 참조하십시오.

문제는 내 앱에서 UIWebView를 사용하지 않아서 pod를 업데이트하려고했지만 여전히 똑같은 것입니다. 어떤 아이디어?

최신 정보

다음은 내 포드입니다.

pod 'Firebase/Core'
pod 'Firebase/Firestore'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
pod 'SVProgressHUD'
pod 'SPPermission/Camera'
pod 'SPPermission/PhotoLibrary'
pod 'Mantis'
pod 'SwiftKeychainWrapper'
pod 'SwiftyOnboard'
pod 'Fabric'
pod 'Crashlytics'

업데이트 2

문제가있는 프레임 워크를 찾은 것 같습니다.

Binary file ./Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon matches
Binary file ./Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics matches
Binary file ./Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision matches

이제 Google이 문제를 해결하고 포드를 업데이트 할 때까지 기다려야합니까?


사용중인 포드와 UIWebView를 사용하는지 확인합니다. 예를 들어 배너 SDK이지만 다른 SDK도 확인하고 싶을 수 있습니다.
Gerharbo

1
@Gerharbo 나는 Firebase 포드 만 사용하고 그 안에서 UIWebView를 찾을 수 없습니다.
Nick

cordova + reactjs (또는 angular)를 사용하는 경우 cordova-plugin-wkwebview-enginecordova-plugin-wkwebviewxhrfix
Jacksonkr

답변:


102

코드에서 UIWebView 클래스를 사용하는지 확인하십시오. 그렇다면 구현을 WKWebView로 바꾸고 그렇지 않으면 포드를 확인해야합니다.

터미널을 사용하여 프로젝트 폴더로 이동하고 다음 명령을 실행하십시오. grep -r "UIWebView" .

일치하는 모든 포드를 업데이트해야합니다. 이제 Google AdMob (버전 7.49.0)에서 UIWebView를 발견하고 Google의 새 버전을 기다리고있어 막혔습니다.


22
터미널에 명령을 입력하면 "grep : warning : recursive search of stdin"이라는 경고가 표시되고 30 분 후에도 응답이 없습니다. 아이디어가 있습니까?
Durai Amuthan.H

1
완벽하게 작동했습니다. 나는 이것을 사용하여 UnityAds.framework가 UIWebView를 사용하고 있음을 알았습니다. WKWebView로 업데이트해야합니다.
Apollo SOFTWARE

1
아마도 아래와 같은 결과를 얻을 것입니다 .. 바이너리 파일 /Users/xxx/xxxx/xxxx.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate 일치합니다. xcworkspace를 삭제하고 pod를 다시 설치하여 문제를 해결했습니다.
ShaoJen Chen

2
아직도이 @WilliamNardo를 얻습니까? 수정하기 위해 예정된 릴리스를 지나서 업데이트했지만 : " 7.55.0 Removed all references to UIWebView. UIWebView is no longer supported.",, Installing Google-Mobile-Ads-SDK 7.56.0 (was 7.53.1)여전히 다음과 같이 표시됩니다.Binary file Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches
10623169

14
@ DuraiAmuthan.H grep 명령 끝에 마침표 / 마침표 (.)를 추가했는지 확인합니다. 나는 처음에 같은 실수를했다
Wheelie

68

보관 된 앱의 각 프레임 워크를 검사하여 UIWebView. 명령 줄 cd에서 보관 된 앱으로 이동합니다. 예 :

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app

여기에서 nm명령을 사용 하여 앱 및 각 앱 프레임 워크의 기호를 덤프합니다.

nm myapp | grep UIWeb
for framework in Frameworks/*.framework; do
  fname=$(basename $framework .framework)
  echo $fname
  nm $framework/$fname | grep UIWeb
done

이것은 적어도 어떤 프레임 워크가 범인인지 알려줄 것입니다.


많은 도움이 된 답변에 감사드립니다. 추가 정보로 질문을 업데이트하겠습니다.
Nick

이제 내가 할 수있는 유일한 일은 Google이 문제를 해결할 때까지 기다리는 것입니까?
Nick

2
예, 기다려야합니다 (또는 직접 수정하고 풀 요청을 제출). 정확한 기한이 UIWebView.
Rudedog

@Rudedog 프레임을 어떻게 고칠 수 있습니까? 내가있는 UIWebView >>>>>> Alamofire 코스모스 NMSSH 스트라이프를 사용하는 4 프레임 워크를 가지고있는 것처럼 보인다 답을 수행 한 후에도 우선은 ... 답변 주셔서 감사합니다
조니

2
@johnny 각 리포지토리를 복제하고 UIWebView를 사용하는 위치를 찾아서이를 사용하는 코드를 제거하거나 교체하고 변경 사항을 기본 리포지토리로 되돌리려면 풀 요청을 제출해야합니다. 또는 관리자가 스스로 고칠 때까지 기다릴 수도 있습니다. 앞서 언급했듯이 지금 Apple은 개발자에게이 문제에 대해 경고하고 실제로 바이너리를 거부하지 않으므로 업스트림 유지 관리자가 문제를 해결할 때까지 기다릴 시간이 있습니다.
Rudedog 19 년

9

이 이메일에 대한 소식이 있으므로 제 질문에 답하겠습니다. Google은이 문제에 대한 여러 티켓이 있으며 가능한 한 빨리이 문제를 해결할 것이라고 말했습니다. 또한 오늘 내 앱이 AppStore 용으로 승인되었으므로 당분간은 경고 일뿐입니다.


안녕하세요, 몇 가지 해결책으로 안내해 주시겠습니까? 저도 같은 문제에 직면 해 있습니다. 앱이 승인되지 않았는데도 맞고 시련이있을 수 있습니다 ..
Dinesh Rawat

6

WKWebViewUIWebView. UIWebView아래 터미널 명령을 실행하는 것보다 코드에 사용 이 없다면 어떤 라이브러리가 여전히 UIWebView참조를 사용하고 있는지 쉽게 알 수 있습니다 (. (점)을 놓치지 마세요).

명령 줄에서 보관 된 앱으로 cd합니다. 예 :

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app

그리고 실행

grep -r UIWebView

또는 전화

 grep -r UIWebView /Path/To/Project/*

그러면 프레임 워크 일치에 대한 출력이 제공됩니다.

./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)

라이브러리 일치 출력

Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches

이 라이브러리 업데이트

pod update

매체 기사 도 확인하십시오.


"grep -r -F"UIWebView "를 사용하십시오." istead "grep -r UIWebView"
Manish

1
Mac에서는 "grep -r UIWebView"를 사용합니다. 프로젝트 경로 (끝에 공백과 점 포함)
Vins

사용 UIWebView하던 모든 포드 (예 : AFNetworking, ZDCChat)를 이미 업그레이드하고 업데이트 된 포드를 확인했습니다. WKWebView 용으로 이미 업그레이드되었지만 여전히 일치 grep -r UIWebView .항목에 대해 동일한 포드 목록을 UIWebView제공하며 Apple은 iTunesconnect에 앱을 제출하는 동안 경고도 표시합니다
Sunil

./Pods/Target Support Files/AFNetworking/AFNetworking-umbrella.h:#import "UIWebView+AFNetworking.h" Binary file ./Pods/ZDCChat/ZDCChatAPI.framework/ZDCChatAPI matches Binary file ./Pods/ZDCChat/ZDCChat.framework/ZDCChat matches Binary file ./Pods/.git/index matches
Sunil Targe

ZDCChatAPI이 포드에서 사용uiwebview
Jawad Ali

5

코코아 포드가있는 프로젝트의 경우 :

grep -r UIWebView Pods/ 

4
brew install ripgrep 
cd Pods
rg UIWebView
YoutubePlayer-in-WKWebView/README.md
10:- using WKWebView instead of UIWebView.

TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h
166: to emulate the link detection behaviour of UIWebView.

TwitterKit/iOS/TwitterKit.framework/Headers/Twitter.h
28:     * either UIWebView or SFSafariViewController depending on iOS

TwitterKit/iOS/TwitterKit.framework/Headers/TWTRTweet.h
84: *  Suitable for loading in a `UIWebView`, `WKWebView` or passing to Safari:



2

배경 이야기

내 ReactJS + Cordova 프로젝트에서 앱 스토어에 앱을 업로드했고 성공했습니다. 다음과 같은 이메일을받은 직후ITMS-90809: Deprecated API Usage . 몇 시간 (일에 걸쳐)의 조사와 여러 번의 업로드 실패 후 유료 개발자 토큰 ($ 50)을 사용하여 Apple에 연결했습니다. 그들은 기본적으로 "당신의 노드 모듈 폴더를 확인하십시오"라고 대답했고,이 매우 모호한 오류로 나를 도와주지 않을 것이기 때문에 내 토큰을 환불했습니다.

이전 시도

  • wkwebview-enginewkwebviewxhrfix플러그인 을 사용하도록 Cordova 업데이트
  • 사용 grep -r 소스, 그리고 전체 프로젝트 소스 IOS, 아카이브에, 나는 메모를 많이하지만, 정말 도움이 아무 것도 발견했다.
  • 모두 업데이트 npm 패키지
  • 모두 정리 및 업데이트 cocoapod 포드

마지막 시도

모든 "추가"cordova 플러그인, npm 패키지 및 포드를 제거한 후 응용 프로그램의 셸이 남아 있지만 여전히 사과 거부에 직면했습니다. grep -r다시 사용 하면 "페이스 북"에 대한 참조가있어 FBSDK.

해결책

FBSDK에 수동으로 추가되었습니다 target > Build Phases > Link Binary With Libraries. 관련된도 있었다 cordovaFacebook.m에서 target > Build Phases > Compile Sources. 이 오래되고 유지되지 않는 파일을 제거한 후 문제없이 iTunes에 업로드 할 수있었습니다.


2

ionic webview 플러그인을 업데이트하고 구성에 기본 설정을 추가하여이 문제를 해결했습니다.

나는 다음 단계를 따랐다.

1. Cordova 플러그인 rm cordova-plugin-ionic-webview

2. cordova plugin add cordova-plugin-ionic-webview @ latest

3. ios 플랫폼의 구성 파일에 기본 설정 추가 :

<preference name="WKWebViewOnly" value="true" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

이 단계를 수행하면 내 앱이 제출되고 나중에 검토에서 승인됩니다.


1

제 경우에는 Firebase/Auth더 이상 사용되지 않는 UIWebView API를 사용 하고 있었고 사용하던 버전은 이전 버전이었습니다. 그래서 방금 Firebase/Auth명령을 사용하여 포드를 업데이트했습니다 .

pod update 'Firebase/Auth'

참고 :이 API를 사용하는 프레임 워크를 확인하려면 "UIWebView"( cmd+ shift+ F)를 검색하십시오.


이것이 내가 무슨 짓을하고 분명히 설치는 4.2.5을 FirebaseInstanceID 말한다 그래서 (4.2.2 WAS)와 내 문제 해결 didnt는
쥘 리

1

긴 과정 이었지만 위에서 언급 한 문제를 해결할 수있었습니다. 프로세스를 안내하고 내 결과를 공유하겠습니다. 먼저, 저에게 효과가 있었던 것이 필요하지 않습니다. 가능한 모든 솔루션을 시도해야합니다. 다양한 스레드에 게시 된 솔루션 중 일부를 따랐습니다. (아래 링크).

  1. 내가 RN 0.59에있을 때 여기에 언급 된 파일 주석을 발견 했습니다 .작동하지 않았다
  2. RN 0.61로 업그레이드했지만이 파일을 찾지 못했습니다. 앱 업로드를 시도했지만 여전히 경고가 표시됩니다.작동하지 않았다
  3. 다음 라이브러리를 최신 버전으로 업데이트했습니다. 작동하지 않았다 react-native-device-info react-native-view가
  4. 여기에 언급 된 이 grep 명령을 시도했습니다 . react-native-fbsdk, react-native-google-sign, react-native-gesture-handler와 같은 특정 라이브러리가 나타났습니다. 그래서 나는 그들 모두를 업그레이드하고 빌드를 업로드했지만 여전히 경고를 받았습니다. 작동하지 않았다

  5. 모든 라이브러리를 업데이트하는 마지막 수단은 많은 시간이 걸릴 것이라는 것을 알고 있습니다. 그래서 내 첫 번째 추측은 'react-native-firebase'를 최신 v6 버전 문제 로 업데이트하는 것이 었습니다 . 하지만 알림이 켜지지 않아서 사용할 수없는 문제가있었습니다. 또한 그들은 그들의 v.5.5.6이 깨끗하고 UIWebViewIssues 당신이 당신의 아이폰 OS가 6.12로 SDK 업데이트 제공하지 않음을 언급했다. + 더 많은 정보를 여기 . 그래서 이것은 제 경우에 'react-native-ux-cam'인 두 번째 추측으로 저를 움직였습니다. 운 좋게도 UIWebView의 모든 참조를 제거하기 위해 라이브러리를 업데이트했습니다. 최신 버전과 BOOM으로 업데이트했는데 문제가 해결되었습니다. 내 앱을 Apple에 제출했는데 지금까지 경고가 없었습니다. 더 많은 정보는 여기 근무 💥

이것이 누군가를 돕기를 바랍니다.


1

버전 7.16.1 이상의 FB Sdk에는이 문제가 있습니다. 실제로 프레임 워크 폴더에 파일이 없습니다.

이 오류는 FBSDK v7.16.1을 사용하여 빌드 할 때 제거되지만 Appstore는 감가 상각 된 API 사용 (UIWebView)으로 인해 앱을 거부했습니다.

FBSDK v7.19.2를 사용하여 해결했습니다.

1) xcode 용 프로젝트를 빌드 할 때 멘션 오류, shareKit not found가 표시됩니다. 이전 빌드 (fbsdk v7.16.1 사용)의 프레임 워크 폴더에서 facebookSDK 폴더를 현재 xcode 폴더 (frameworks / FacebookSDK ....)의 동일한 위치에 복사하여 문제를 해결합니다.

2) 그런 다음 xcode 프로젝트를 열고 Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) 위치에서 파일을 Xcode의 Frameworks에 추가합니다.

3) 프레임 워크 검색 경로에 "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS"를 Xcode의 빌드 설정에 추가합니다.

4) 터미널로 프로젝트 열기 : "grep -r"UIWebView "를 입력하십시오." , UIWebView와 일치하는 항목이 있으면 파일을 열어 제거하십시오.

5) FBSDKCoreKit의 바이너리 파일에서 일치하는 경우. MAC의 TextEdit에서 파일을 열고 모든 "UIWebView"를 "WKWebView"로 찾아 바꾸기

6) 저장하고 Xcode에서 프레임 워크에 다시 추가합니다. 빌드하고 앱 스토어로 푸시합니다.


0

Ionic 앱을 빌드 할 때 Cordova 또는 Capacitor 중에서 선택하여 네이티브 모바일 버전을 배포 할 수 있습니다. 최신 버전은 WKWebView를 자동으로 사용하지만 Cordova는 여전히 UIWebView API를 완전히 사용하거나 이에 대한 참조를 포함합니다 (Capacitor는 이러한 참조를 제거하도록 업데이트되었습니다 – 아래 참조).

앱 제출시 Apple은 앱 코드에서 "UIWebView"문자열을 검색 한 다음 발견되면 제출 경고를 생성합니다. 따라서 UIWebView API에 대한 모든 참조를 제거하려면 cordova-ios (Cordova iOS 라이브러리)의 향후 릴리스가 필요합니다.

또 다른 생각. 그게 말이되는지 기술적으로 가능한지 모르겠습니다.

UIWebView도 플러그인으로 이동하고 cordova-ios가이 플러그인 또는 일부 WKWebView 플러그인을 사용하도록합니다. cordova-ios에는 webview를로드하는 코드 만 포함되어 있습니다. 기본적으로 다음 버전은 Apache WKWebViewEngine (새 앱에 기본적으로 설치되는 플러그인, 이전 앱에 대한 마이그레이션 지침)을로드해야합니다. UIWebView, Ionic, 포크 등이 필요한 사용자는 지금처럼 자신의 것을 지정할 수 있습니다.

그런 식으로 UIWebView는 cordova-ios에 없으며 오늘날처럼 충분히 유연합니다.


0

React 네이티브 앱에서도 똑같이 직면했습니다. 아래 사항을 확인하십시오.

1) react-native에서 직접 가져 오는 대신 react-native-webview 모듈을 사용하고 있습니다 (커뮤니티 webview는 v0.60에서 린 코어 제거로 사용되지 않으며 다음 안정 릴리스에서 제거 될 예정입니다). ( 여기에서 확인 )

2) webview를 사용하는 타사 라이브러리가 최신인지 확인하십시오. 그렇지 않은 경우 라이브러리 관리자에게 react-native-webview를 업그레이드하도록 요청하십시오.

3) 업로드하러 가셔도 좋습니다. 더 어려운 점이 있으면 댓글을 달아주세요.

v0.60의 주요 변경 사항을 여기에서 확인하십시오.

이 경고를 제거하는 또 다른 방법은 useWebKit = {true} 전달을 시작하는 것입니다. 즉, UIWebView가 아닌 ​​WKWebView를 사용하고 있습니다. 그런 다음 다음을 수행하여 문제를 해결할 수 있습니다. 사용되지 않는 API 사용.

  1. Libraries / RNCWebView.xcodeproj / RNCUIWebView.h 、 RNCUIWebView.m 、 RNCUIWebViewManager.h 、 RNCUIWebViewManager.m 제거
  2. Libraries / React.xcodeproj / React / Views / RCTWebView.h 、 RCTWebView.m 、 RCTWebViewManager.h 、 RCTWebViewManager.m 제거

이제 권한 경고없이 이미 app.ipa를 AppStore에 성공적으로 업로드했습니다.

<WebView
 style={{flex: 1, backgroundColor: Colors.white}}
 useWebKit={true}
 startInLoadingState={true}
 source={{uri: 'my http url'}}
/>```

0

누군가 도와 주면 pod update터미널에서 실행 한 다음 다시 보관합니다. 그것은 나를 위해 작동합니다.


iOS 앱에는 적용되지만 Android 또는 기타 모바일 앱에는 도움이되지 않습니다.
Jacksonkr

이것은 안드로이드 같은 문제가없는, 아이폰 OS의 특정 문제입니다
slothstronaut

0

저에게는 스크립트가 도움이되지 않았습니다. 수동으로 각 프레임 워크를 살펴보고 릴리스 노트를보고 업데이트해야했습니다.


0

나는 아래 단계에 따라 이것을 제거합니다.

1 단계:

xcode 프로젝트 디렉토리에서“UIWebView”검색

2 단계:

RCTWebView.m에서 마우스 오른쪽 버튼을 클릭하고“Reveal In Project Navigator”를 선택합니다.

3 단계 :

아래로 스크롤하여 다음 4 개의 파일 만 삭제합니다.

 1. RCTWebView.h
 2. RCTWebView.m
 3. RCTWebViewManager.h
 4. RCTWebViewManager.m

그런 다음 프로젝트 및 아카이브를 정리하십시오.

NB : 'react-native-community / react-native-webview' 라이브러리를 사용하는 경우 최신 버전으로 업데이트하십시오. 그렇지 않으면 완료됩니다.



0

를 사용하는 위치를 찾으 UIWebView려면 터미널의 프로젝트 루트로 이동하여이 명령을 사용하십시오.

grep -r -F "UIWebView" .

'.' 매우 중요합니다. 현재 폴더 및 하위 폴더에서 "UIWebView" 문자열을 검색하도록 시스템에 지시합니다 . 이것은 cocoapods 라이브러리도 검색합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.