ITMS-90809:非推奨のAPIの使用— Appleは、UIWebViewAPIを使用するアプリの送信の受け入れを停止します


91

昨日、アプリをTestFlightにアップロードしましたが、しばらくするとAppleから次の警告が届きました。

ITMS-90809:非推奨のAPIの使用-Appleは、UIWebViewAPIを使用するアプリの送信の受け入れを停止します。詳細については、https://developer.apple.com/documentation/uikit/uiwebviewを参照してください

アプリでUIWebViewを使用していないので、ポッドを更新しようとしましたが、それでも同じです。ちなみに、これはTestFlightでの3回目のビルドであり、Appleから送信されるのはこれが初めてです。何か案は?

更新

これらは私のポッドです:

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

だから今私はグーグルがそれらを修正して私のポッドを更新するのを待つ必要がありますか?


使用しているポッドと、UIWebViewを使用しているかどうかを確認してください。たとえば、バナーSDKですが、他のSDKも確認することをお勧めします。
Gerharbo

1
@Gerharbo Firebaseポッドのみを使用していますが、その中にUIWebViewが見つかりません。
ニック

コルドバ+ reactjsを使用するもの(または角度)のためにチェックアウトコルドバ、プラグインwkwebviewエンジンコルドバ・プラグインwkwebviewxhrfix
Jacksonkr

回答:


104

コードでUIWebViewクラスを使用しているかどうかを確認してください。はいの場合は実装をWKWebViewに置き換え、そうでない場合はポッドを確認する必要があります。

ターミナルを使用してプロジェクトフォルダに移動し、次のコマンドを実行します。 grep -r "UIWebView" .

一致するすべてのポッドを更新する必要があります。UIWebViewをGoogleAdMob(バージョン7.49.0)で見つけ、Googleからの新しいバージョンを待っているため、行き詰まりました。


23
ターミナルでコマンドを入力すると、「grep:warning:recursive search of stdin」という警告が表示され、30分経っても応答が返されません。何かアイデアはありますか?
DuraiAmuthan.H19年

1
完璧に動作しました。これを使用して、UnityAds.frameworkがUIWebViewを使用していることを確認しました。WKWebViewに更新する必要があります。
アポロSOFTWARE

1
たぶんあなたは以下のような結果を得るでしょう..バイナリファイル/Users/xxx/xxxx/xxxx.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstateが一致します。xcworkspaceとpodinstallを再度削除して解決しました。
ShaoJenChen20年

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
、、、

17
@ DuraiAmuthan.Hは、grepコマンドの最後にピリオド/ピリオド(。)を追加したことを確認します。私は最初に同じ間違いをしました
ウィリー

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

これにより、少なくともどのフレームワークが原因であるかがわかります。


あなたの答えをありがとうそれは大いに役立ちました。質問をさらに情報で更新します。
ニック

だから今私ができる唯一のことはグーグルが問題を解決するのを待つことですか?
ニック

2
はい、待つ必要があります(または、自分で修正してプルリクエストを送信します)。のすべての使用を削除する正確な期限はわかりませんが、iOS13UIWebViewがこの秋にリリースされる前になるかどうかは非常に疑わしいです。
Rudedog

@Rudedogどうすればフレームを修正できますか?まず第一にあなたの答えに感謝します...あなたの答えに従った後、私はUIWebViewを使用している4つのフレームワークを持っているようです>>>>>> Alamofire Cosmos NMSSH Stripe
johnny

2
@johnnyは、各リポジトリのクローンを作成し、UIWebViewを使用する場所を見つけ、それを使用するコードを削除または置換し、変更をメインリポジトリに戻す場合はプルリクエストを送信する必要があります。または、メンテナが自分で修正するのを待つこともできます。前に述べたように、現在Appleはこれについて開発者に警告しているだけで、実際にはバイナリを拒否していません。そのため、アップストリームのメンテナが問題を修正するのを待つ時間があります。
Rudedog

9

このメールについてのニュースがあるので、私は自分の質問に答えます。グーグルは、この問題についていくつかのチケットがあり、彼らはこれをできるだけ早く解決するつもりであると私に言いました。また、今日、私のアプリはAppStoreで承認されたので、当面は単なる警告のようです。


こんにちは、いくつかの解決策を教えていただけますか。私も同じ問題に直面しています。アプリが..だから裁判を打つとも後でも承認されていません
ディネッシュRawat

6

WKWebViewの代わりになりUIWebViewます。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"」を使用します。「grep
マニッシュ

1
Macでは、「grep -rUIWebView」を使用します。プロジェクトパス内(最後にスペースとポイントがあります)
Vins 2010

使用していたすべてのポッド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
SunilTarge20年

ZDCChatAPIこのポッドの使用uiwebview
JawadAli20年

6

cocoapodsを使用したプロジェクトの場合:

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:

3

ionic webviewプラグインを更新し、設定に設定を追加することで、この問題を解決しました。

私は次の手順に従いました。

1.cordovaプラグインrmcordova-plugin-ionic-webview

2.cordovaプラグインは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" />

これらの手順を実行した後、私のアプリが送信され、後でレビューで承認されます。




2

長いプロセスでしたが、なんとか上記の問題を解決することができました。プロセスを順を追って説明し、私の調査結果を共有しましょう。まず最初に、私のために働いたことがあなたのために働く必要はありません。あなたはそこに出されたすべての可能な解決策を試す必要があります。私はさまざまなスレッドに投稿された解決策のいくつかに従いました。(以下にリンク)。

  1. 私がRN0.59を使用していたとき、これらのファイルのコメントがここに記載されているのを見つけまし動作しませんでした
  2. RN 0.61にアップグレードしましたが、これらのファイルが見つかりませんでした。アプリをアップロードしようとしましたが、それでも警告が表示されます。動作しませんでした
  3. 以下のライブラリを最新バージョンに更新しました。動作しませんでした react-native-device-inforeact-native-view
  4. ここに記載されているこのgrepコマンドを試しました。表示された特定のライブラリ、つまり、react-native-fbsdk、react-native-google-sign、react-native-gesture-handlerがありました。そこで、それらすべてをアップグレードしてビルドをアップロードしましたが、それでも警告が表示されました。動作しませんでした

  5. すべてのライブラリを更新する最後の手段であり、これにはかなりの時間がかかることがわかっています。したがって、私の最初の推測は、「react-native-firebase」を最新のv6バージョンの問題に更新することでした。しかし、通知がオンになっていないという問題があったため、使用できませんでした。また、iOS SDKを6.12に更新すると、v.5.5.6はクリーンで、UIWebViewIssuesがないことにも言及しました。+詳細はこちら。それで、これは私の場合は「react-native-ux-cam」であった私の2番目の推測に私を動かしました。幸い、彼らはライブラリを更新して、UIWebViewのすべての参照を削除しました。最新バージョンとBOOMにアップデートしたところ、問題は解決しました。私は自分のアプリをAppleに提出しましたが、これまでのところ警告はありません。詳細情報はこちら 勤務します💥

これが誰かを助けることを願っています。


2

裏話

ReactJS + Cordovaプロジェクトで、アプリをアプリストアにアップロードしましたが、成功しました。を引用するメールを受け取った直後ITMS-90809: Deprecated API Usage。数時間(数日)の調査と複数のアップロードの失敗の後、私は有料の開発者トークン($ 50)を使用してAppleに接続しました。彼らは基本的に「ノードモジュールフォルダを確認してください」と応答し、この非常にあいまいなエラーで私を支援するつもりはなかったので、私のトークンを返金しました。

以前の試み

  • wkwebview-engineおよびwkwebviewxhrfixプラグインを使用するようにcordovaを更新しました
  • grep -rアーカイブ、iOSソース、およびプロジェクトソース全体を使用して、たくさんのメモを見つけましたが、実際には何も役に立ちませんでした。
  • すべてのnpmパッケージを更新しました
  • すべてのcocoapodポッドをクリーンアップして更新しました

最終的な試み

すべての「余分な」cordovaプラグイン、npmパッケージ、およびポッドを削除した後、アプリケーションのシェルが残っていましたが、それでもAppleの拒否に直面していました。grep -rもう一度使用すると、「facebook」への参照がまだあり、古いコピーにつながりましたFBSDK

解決

FBSDKに手動で追加されていましたtarget > Build Phases > Link Binary With Libraries。に関連付けられていcordovaFacebook.mtarget > Build Phases > Compile Sources。これらの古い、メンテナンスされていないファイルを削除した後、問題なくitunesconnectにアップロードすることができました。


1

私の場合、Firebase/Auth非推奨のUIWebView APIを使用していて、使用していたバージョンは古いバージョンでした。そのFirebase/Authため、コマンドを使用してポッドを更新しました。

pod update 'Firebase/Auth'

:このAPIを使用しているフレームワークを把握するには、「UIWebView」(cmd+ shift+ F)を検索するだけです。


私がやったことで、どうやらそれはFirebaseInstanceID 4.2.5(4.2.2)であったと私の問題を解決するdidntのインストールと言い、これはそう
ジュール・リー

1

バージョン7.16.1より前のFBSdkにはこの問題があります。実際には、フレームワークフォルダにファイルはありません。

このエラーは、FBSDK v7.16.1を使用してビルドすると削除されますが、APIの使用量(UIWebView)が低下したため、Appstoreはアプリを拒否しました。

FBSDKv7.19.2を使用して解決します。

1)xcode用のプロジェクトをビルドすると、メンションエラーが表示され、shareKitが見つかりません。以前のビルド(fbsdk v7.16.1を使用)のフレームワークフォルダーから現在のxcodeフォルダー(frameworks / FacebookSDK ....)と同じ場所に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のテキストエディットでファイルを開き、すべての「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には、Webビューをロードするためのコードが含まれています。デフォルトでは、次のバージョンは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

これはiOS固有の問題であり、Androidには同じ問題はありません
slothstronaut 2010

0

私にとって、スクリプトは役に立ちませんでした。各フレームワークを手動で調べてリリースノートを確認し、更新する必要がありました。


0

私は以下の手順に従ってこれを取り除きます-

ステップ1:

xcodeプロジェクトディレクトリで「UIWebView」を検索します

ステップ2:

(RCTWebView.mで)右クリックし、[プロジェクトナビゲータで表示]を選択します

ステップ3:

下にスクロールして、次の4つのファイルのみを削除します。

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

次に、プロジェクトとアーカイブをクリーンアップします。

注意:「react-native-community / react-native-webview」ライブラリを使用する場合は、最新バージョンで更新してください。それ以外の場合は完了です。



0

を使用している場所を見つけるにはUIWebView、ターミナルでプロジェクトルートに移動し、このコマンドを使用します

grep -r -F "UIWebView" .

「」はとても重要です。これは、現在のフォルダとサブフォルダで文字列「UIWebView」を検索するようにシステムに指示します。これにより、cocoapodsライブラリも検索されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.