Вчера я загрузил свое приложение в TestFlight, и через некоторое время Apple отправила мне это предупреждение:
ITMS-90809: Использование API не рекомендуется - Apple перестанет принимать отправку приложений, использующих API UIWebView. См. Https://developer.apple.com/documentation/uikit/uiwebview для получения дополнительной информации.
Дело в том, что я не использую UIWebView в своем приложении, поэтому я попытался обновить свои модули, но все то же самое. Кстати, это моя третья сборка на TestFlight, и это первый раз, когда 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
Так что теперь мне нужно ждать, пока Google исправит их и обновит мои модули?
Ответы:
Проверьте, используете ли вы в своем коде класс UIWebView; если да, замените вашу реализацию на WKWebView, иначе необходимо проверить свои модули.
Зайдите с терминалом в папку вашего проекта и выполните команду:
grep -r "UIWebView" .
Все подходящие пакеты должны быть обновлены. Теперь я застрял, потому что нашел UIWebView в Google AdMob (версия 7.49.0) и жду новую версию от Google.
источник
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
Вы можете изучить каждую из фреймворков в заархивированном приложении, чтобы узнать, относятся ли они к
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
Это, по крайней мере, скажет вам, какая структура является виновником.
источник
UIWebView
, но я очень сомневаюсь, что это произойдет до выхода iOS 13 этой осенью.Я отвечу на свой вопрос, так как у меня есть новости об этом письме. Google сказал мне, что есть несколько обращений по этой проблеме, и они собираются решить ее как можно скорее. Также сегодня мое приложение было одобрено для размещения в AppStore, так что на данный момент это просто предупреждение.
источник
WKWebView
является заменойUIWebView
. Если у вас нетUIWebView
использования в вашем коде, чем, выполнив приведенную ниже команду терминала, вы можете легко узнать, какая библиотека все еще используетUIWebView
ссылку (не пропустите. (Точка)).Из командной строки перейдите в заархивированное приложение, например
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
Обновите эти библиотеки
также ознакомьтесь с этой статьей Medium
источник
UIWebView
модули (например, AFNetworking, ZDCChat), а также проверены обновленные модули, поскольку они уже обновлены для WKWebView, но все ещеgrep -r UIWebView .
дает мне тот же список модулей дляUIWebView
совпадений, а яблоко также выдает предупреждение при отправке приложения в iTunesconnect./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
ZDCChatAPI
эта капсула используетuiwebview
Для проекта с cocoapods:
grep -r UIWebView Pods/
источник
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:
источник
Я решил эту проблему, обновив плагин ionic webview и добавив настройки в config.
Я выполнил следующие шаги:
1. плагин cordova rm cordova-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" />
После выполнения этих шагов мое приложение будет отправлено и позже одобрено на рассмотрение.
источник
Используйте последнюю версию firebase
https://firebase.google.com/support/release-notes/ios
Версия 6.8.1: удалены ссылки на UIWebViewDelegate в соответствии с предупреждением об отправке в App Store (№ 3722).
источник
Если вы строите с Unity 3D , это известная проблема (признанная в журналах изменений), в настоящее время она исправлена для версии 2019.3 (тестируется и переносится).
Проверьте билет здесь https://unity3d.com/unity/whats-new/2019.2.4
источник
Это был долгий процесс, но мне удалось решить вышеупомянутую проблему. Позвольте мне провести вас через процесс и поделиться своими выводами. Во-первых, не обязательно то, что сработало для меня, будет работать и для вас. Вам просто необходимо попробовать все возможные решения. Я следил за некоторыми решениями, опубликованными в разных темах. (Ссылка ниже).
Я пробовал эту команду grep, упомянутую здесь . Были обнаружены определенные библиотеки, например, react-native-fbsdk, react-native-google-sign, react-native-gesture-handler. Поэтому я обновил их все и загрузил сборку, но все равно получил предупреждение. Не сработало
Последнее средство - обновить все библиотеки, что, как я знаю, займет много времени. Так что мое первое предположение было обновление «реагировать-нативный-firebase» до последней версии v6 вопроса . Но у него были некоторые проблемы с отключением уведомления, поэтому я не мог его использовать. Также они упомянули, что их версия 5.5.6 является чистой и не имеет никаких UIWebViewIssues, учитывая, что вы обновили SDK iOS до 6.12. + Подробнее здесь . Это подтолкнуло меня ко второму предположению, которое в моем случае было «react-native-ux-cam». К счастью, они обновили свою библиотеку, удалив все ссылки на UIWebView. Я обновился до последней версии и БУМ, проблема решена. Я отправил свое приложение в Apple, и пока никаких предупреждений нет. Более подробная информация здесь Работала 💥
Надеюсь, это кому-то поможет.
источник
Предыстория
В моем проекте ReactJS + Cordova я загрузил приложение в магазин приложений, и оно было успешным. Вскоре после того, как я получил письмо со ссылкой на
ITMS-90809: Deprecated API Usage
. После нескольких часов (более дней) исследований и нескольких неудачных загрузок я подключился к Apple, используя платный токен разработчика (50 долларов США); в основном они ответили: «Проверьте папку модулей узла» и вернули мой токен, потому что не собирались помогать мне с этой чрезвычайно неоднозначной ошибкой.Предыдущие попытки
wkwebview-engine
иwkwebviewxhrfix
плагиныgrep -r
архивы, исходный код ios и исходный код всего проекта, я нашел МНОГО заметок, но ничего особо не помогло.npm
пакетыcocoapod
стручкиПоследняя попытка
После удаления всех "лишних" плагинов Cordova, пакетов npm и pod'ов я остался с оболочкой приложения, но все еще сталкивался с отказом от яблока. Используя
grep -r
снова, все еще была ссылка на "facebook", которая привела меня к старой копииFBSDK
.Решение
FBSDK
были добавлены вручную вtarget > Build Phases > Link Binary With Libraries
. Также был связанныйcordovaFacebook.m
вtarget > Build Phases > Compile Sources
. После удаления этих старых, не обслуживаемых файлов я смог без проблем загрузить в itunes connect.источник
В моем случае
Firebase/Auth
использовался устаревший API UIWebView, а версия, которую я использовал, была более старой. Итак, я просто обновилFirebase/Auth
модуль с помощью командыpod update 'Firebase/Auth'
Примечание . Чтобы выяснить, в каких фреймворках используется этот API, просто выполните поиск по «UIWebView» (
cmd
+shift
+F
)источник
FB Sdk выше версии 7.16.1 имеет эту проблему. На самом деле у него нет файлов в папке framework.
Эта ошибка удаляется при сборке с использованием FBSDK v7.16.1, но Appstore отклонил приложение из-за устаревшего использования api (UIWebView).
Решаю с помощью FBSDK v7.19.2.
1) Когда вы создаете проект для xcode, он показывает ошибку упоминания, shareKit не найден. Я решил это, скопировав папку facebookSDK из папки framework моей предыдущей сборки (с fbsdk v7.16.1) в то же место текущей папки xcode (frameworks / FacebookSDK ....)
2) Затем откройте свой проект xcode, добавьте файлы из местоположения: Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) в Frameworks в Xcode.
3) Добавьте «$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS» в пути поиска фреймворка в настройки сборки в Xcode.
4) Откройте проект в терминале: введите "grep -r" UIWebView ". , если это показывает какое-либо совпадение с UIWebView, удалите его, открыв файл.
5) Если он показывает совпадение в двоичном файле FBSDKCoreKit. Откройте файл в TextEdit на MAC и найдите и замените все «UIWebView» на «WKWebView».
6) Сохраните его и снова добавьте в Frameworks в Xcode. Создайте и отправьте в магазин приложений.
источник
Когда вы создаете приложение Ionic, вы можете выбрать между Cordova или Capacitor для развертывания собственной мобильной версии. В то время как более поздние версии используют WKWebView автоматически, Cordova по-прежнему использует API UIWebView напрямую или содержит ссылки на них (Capacitor был обновлен, чтобы удалить эти ссылки - см. Ниже).
После отправки приложения Apple ищет в коде приложения строку «UIWebView», а затем генерирует предупреждение об отправке, если оно найдено. Следовательно, в будущем выпуске cordova-ios (библиотеки Cordova iOS) потребуется гарантировать удаление всех ссылок на API UIWebView.
другая мысль. Не знаю, имеет ли это смысл или технически возможно.
Также переместите UIWebView в плагин и заставьте cordova-ios использовать этот или некоторые из плагинов WKWebView. cordova-ios просто содержит код для загрузки веб-просмотра. По умолчанию следующая версия должна загружать Apache WKWebViewEngine (плагин устанавливается по умолчанию в новых приложениях, инструкция по миграции для старых приложений). Пользователи, которым нужен UIWebView, Ionic, форк или другие, могут указать свой собственный, как сейчас.
Таким образом, в Cordova-ios не будет UIWebView, и он по-прежнему будет достаточно гибким, как сегодня.
источник
Я столкнулся с тем же самым для собственного приложения React. Проверьте следующие вещи:
1) Вы используете модуль response-native-webview, а не импортируете его напрямую из react-native (сообщество webview устарело как удаление бережливого ядра в v0.60 и будет удалено в следующем стабильном выпуске). ( проверьте здесь )
2) Также убедитесь, что вы используете какие-либо сторонние библиотеки, которые используют webview, в актуальном состоянии. Если нет, попросите разработчиков библиотеки обновить response-native-webview.
3) Вы готовы приступить к загрузке, пожалуйста, добавьте комментарии, если у кого-то возникнут дополнительные трудности.
Проверьте здесь критические изменения в v0.60
Другой способ избавиться от этого предупреждения: начните передавать useWebKit = {true}, то есть вы вообще используете WKWebView, а не UIWebView. Затем вы можете сделать следующее, чтобы решить проблему - Использование устаревшего API.
Я уже успешно загрузил app.ipa в AppStore без каких-либо предупреждений о разрешении.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
источник
Если кто-то помогает, я запускаю
pod update
терминал, а затем снова архивирую. Это подходит для меня.источник
Мне скрипты не помогли. Мне пришлось просто вручную просмотреть каждую структуру, просмотреть примечания к выпуску и обновить их.
источник
Я избавляюсь от этого, выполнив следующие шаги:
Шаг 1:
Шаг 2:
Шаг 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Затем очистите проект и архив.
NB: если вы используете библиотеку response-native-community / response-native-webview, обновите ее до последней версии, иначе это будет сделано.
источник
Вам следует установить этот плагин Cordova:
https://github.com/apache/cordova-plugin-wkwebview-engine
Затем добавьте
<preference name="WKWebViewOnly" value="true" />
в свой config.xml в раздел iOS.Затем увеличьте версию и повторно загрузите ее.
источник
Чтобы найти, где вы используете
UIWebView
, перейдите в корень вашего проекта в терминале и используйте эту командуgrep -r -F "UIWebView" .
Символ '.' очень важно. Он сообщает системе, что нужно искать строку «UIWebView» в текущей папке и подпапках. Это также будет искать библиотеки cocoapods
источник
Чтобы обновить WebView, устаревший в ios
Это успешно решило мою проблему
платформы cd / ios grep -r UIWebView Pods /
Откройте Podfile и добавьте / замените модуль AFNetworking как
pod 'AFNetworking', '~> 4.0'
Наконец, в обновлении терминального модуля
источник