Kemarin, saya mengunggah Aplikasi saya ke TestFlight dan setelah beberapa saat Apple mengirimi saya peringatan ini:
ITMS-90809: Penggunaan API yang Tidak Berlaku Lagi - Apple akan berhenti menerima pengiriman aplikasi yang menggunakan API UIWebView. Lihat https://developer.apple.com/documentation/uikit/uiwebview untuk informasi lebih lanjut.
Masalahnya adalah saya tidak menggunakan UIWebView di aplikasi saya jadi saya mencoba memperbarui pod saya tetapi masih tetap sama. Ngomong-ngomong ini adalah build ketiga saya di TestFlight dan ini adalah pertama kalinya Apple mengirimkan ini kepada saya. Ada ide?
Memperbarui
Ini adalah pod saya:
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'
Perbarui 2
Sepertinya saya menemukan kerangka kerja dengan masalah ini.
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
Jadi sekarang apakah saya harus menunggu Google untuk memperbaikinya dan mengupdate pod saya?
Jawaban:
Periksa apakah Anda menggunakan kelas UIWebView dalam kode Anda; jika ya, ganti implementasi Anda dengan WKWebView, jika tidak, perlu periksa Pod Anda.
Pergi dengan terminal ke dalam folder proyek Anda dan jalankan perintah:
grep -r "UIWebView" .
Semua pod yang cocok harus diperbarui. Sekarang saya mandek karena saya menemukan UIWebView di Google AdMob (versi 7.49.0) dan saya menunggu versi baru dari Google.
sumber
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)
, saya masih mendapatkanBinary file Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches
Anda dapat memeriksa setiap kerangka kerja di aplikasi yang diarsipkan untuk melihat apakah ada kerangka yang dirujuk
UIWebView
. Dari baris perintah,cd
ke aplikasi yang diarsipkan, misalnya:cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Sesampai di sana, gunakan
nm
perintah untuk membuang simbol aplikasi Anda dan setiap kerangka aplikasi:nm myapp | grep UIWeb for framework in Frameworks/*.framework; do fname=$(basename $framework .framework) echo $fname nm $framework/$fname | grep UIWeb done
Ini setidaknya akan memberi tahu Anda kerangka kerja mana yang menjadi pelakunya.
sumber
UIWebView
, tetapi saya sangat ragu bahwa itu akan terjadi sebelum iOS 13 dirilis musim gugur ini.Saya akan menjawab pertanyaan saya sendiri karena saya memiliki berita tentang email ini. Google memberi tahu saya bahwa ada beberapa tiket tentang masalah ini dan mereka akan menyelesaikannya secepat mungkin. Juga hari ini aplikasi saya telah disetujui untuk AppStore jadi sepertinya hanya peringatan untuk saat ini.
sumber
WKWebView
adalah penggantinyaUIWebView
. Jika Anda tidak memilikiUIWebView
penggunaan dalam kode Anda selain dengan menjalankan perintah terminal di bawah ini, Anda dapat dengan mudah mengetahui perpustakaan mana yang masih menggunakanUIWebView
referensi (jangan lewatkan. (Titik)).Dari baris perintah, cd ke aplikasi yang diarsipkan, misalnya
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Dan kemudian Jalankan
grep -r UIWebView
ATAU telepon
grep -r UIWebView /Path/To/Project/*
Ini akan memberi Anda Output untuk pencocokan kerangka kerja
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Output untuk pertandingan perpustakaan
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Perbarui Perpustakaan ini
lihat juga Artikel Sedang ini
sumber
UIWebView
(mis. AFNetworking, ZDCChat) dan juga memeriksa pod yang diperbarui karena sudah ditingkatkan untuk WKWebView tetapi masihgrep -r UIWebView .
memberi saya daftar pod yang sama untukUIWebView
pertandingan dan apel juga memberi peringatan saat mengirimkan aplikasi di 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
pod ini menggunakanuiwebview
Untuk proyek dengan cocoapods:
grep -r UIWebView Pods/
sumber
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:
sumber
Gunakan versi firebase terbaru
https://firebase.google.com/support/release-notes/ios
Versi 6.8.1: Referensi yang dihapus ke UIWebViewDelegate untuk mematuhi peringatan App Store Submission (# 3722).
sumber
Jika Anda membangun dengan Unity 3D , ini adalah masalah yang diketahui (diakui di changelogs), saat ini diperbaiki untuk versi 2019.3 (sedang diuji dan di-backport).
Cek tiketnya di sini https://unity3d.com/unity/whats-new/2019.2.4
sumber
Backstory
Pada proyek ReactJS + Cordova saya, saya mengunggah aplikasi ke toko aplikasi dan berhasil. Tak lama setelah saya menerima email yang mengutip
ITMS-90809: Deprecated API Usage
. Setelah berjam-jam (selama beberapa hari) penelitian dan beberapa unggahan yang gagal, saya terhubung dengan Apple menggunakan token pengembang berbayar ($ 50); mereka pada dasarnya menjawab dengan mengatakan "periksa folder modul node Anda" dan mengembalikan token saya karena mereka tidak akan membantu saya dengan kesalahan yang sangat ambigu ini.Sebelumnya Attempts
wkwebview-engine
danwkwebviewxhrfix
plugingrep -r
arsip, sumber ios, dan seluruh sumber proyek, saya menemukan BANYAK catatan tetapi tidak ada yang benar-benar membantu.npm
paketcocoapod
polongPercobaan Terakhir
Setelah menghapus semua plugin cordova "ekstra", paket npm, dan pod, saya masih memiliki shell aplikasi tetapi masih menghadapi penolakan apel. menggunakan
grep -r
lagi masih ada referensi ke "facebook" yang membawa saya ke salinan lama dariFBSDK
.Larutan
FBSDK
telah ditambahkan secara manual ketarget > Build Phases > Link Binary With Libraries
. Ada juga yang terkaitcordovaFacebook.m
ditarget > Build Phases > Compile Sources
. Setelah menghapus file lama yang tidak terpelihara ini, saya dapat mengunggah ke itunes terhubung tanpa masalah.sumber
Saya memecahkan masalah ini dengan memperbarui plugin tampilan web ionik dan menambahkan preferensi di konfigurasi.
Saya mengikuti langkah-langkah berikut:
1. plugin cordova rm cordova-plugin-ionic-webview
2. plugin cordova tambahkan cordova-plugin-ionic-webview @ latest
3. Preferensi yang ditambahkan dalam file konfigurasi di bawah platform ios:
<preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Setelah mengikuti langkah-langkah ini, aplikasi saya dikirim dan kemudian disetujui dalam peninjauan.
sumber
Dalam kasus saya,
Firebase/Auth
menggunakan API UIWebView yang tidak digunakan lagi dan versi yang saya gunakan adalah yang lebih lama. Jadi saya baru saja memperbaruiFirebase/Auth
pod menggunakan perintah,pod update 'Firebase/Auth'
Catatan : Untuk mengetahui kerangka kerja yang menggunakan api ini, cukup cari "UIWebView" (
cmd
+shift
+F
)sumber
Itu adalah proses yang panjang, tetapi saya berhasil menyelesaikan masalah yang disebutkan di atas. Izinkan saya memandu Anda melalui proses dan membagikan temuan saya. Hal pertama yang pertama, tidak perlu apa yang berhasil bagi saya akan berhasil untuk Anda. Anda hanya perlu mencoba setiap solusi yang mungkin tersedia. Saya mengikuti beberapa solusi yang diposting di berbagai utas. (Ditautkan di bawah).
Saya mencoba perintah grep yang disebutkan di sini . Ada library tertentu yang muncul, yaitu react-native-fbsdk, react-native-google-sign, react-native-gesture-handler. Jadi saya mengupgrade semuanya dan mengupload build tetapi masih mendapat peringatan. Tidak berhasil
Upaya terakhir untuk memperbarui semua perpustakaan, yang saya tahu akan memakan banyak waktu. Jadi tebakan pertama saya adalah memperbarui 'react-native-firebase' ke masalah versi v6 terbaru . Namun ada beberapa masalah dengan Notifikasi tidak aktif sehingga saya tidak dapat menggunakannya. Juga mereka menyebutkan bahwa v.5.5.6 mereka bersih dan tidak memiliki UIWebViewIssues yang diberikan Anda memperbarui sdk iOS Anda ke 6.12. + Info selengkapnya di sini . Jadi ini memindahkan saya ke tebakan kedua saya yang dalam kasus saya adalah 'react-native-ux-cam'. Untungnya mereka memperbarui perpustakaan mereka untuk menghapus semua referensi UIWebView. Saya memperbarui ke versi dan BOOM terbaru, masalah telah teratasi. Saya mengirimkan aplikasi saya ke Apple dan sejauh ini tidak ada peringatan. Info lebih lanjut di sini Bekerja 💥
Semoga ini bisa membantu seseorang.
sumber
FB Sdk di atas Versi 7.16.1 mengalami masalah ini. Sebenarnya tidak ada file di folder framework.
Kesalahan ini dihapus ketika Anda membuatnya menggunakan FBSDK v7.16.1, tetapi Appstore ditolak aplikasi tersebut, karena penggunaan api yang disusutkan (UIWebView).
Saya menyelesaikannya dengan menggunakan FBSDK v7.19.2.
1) Ketika Anda membangun proyek untuk xcode, itu menunjukkan kesalahan penyebutan, shareKit tidak ditemukan. Saya menyelesaikannya dengan menyalin folder facebookSDK dari folder framework dari build saya sebelumnya (dengan fbsdk v7.16.1), ke lokasi yang sama dari folder xcode saat ini (frameworks / FacebookSDK ....)
2) Kemudian, buka proyek xcode Anda, tambahkan file dari lokasi: Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) ke dalam Frameworks di Xcode.
3) Tambahkan "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS" ke dalam Framework Search Paths ke dalam pengaturan build di Xcode.
4) Buka Proyek ke Terminal: ketik "grep -r" UIWebView "." , jika ini menunjukkan kecocokan dengan UIWebView, hapus dengan membuka file.
5) Jika itu menunjukkan kecocokan dalam file biner FBSDKCoreKit. Buka file di TextEdit di MAC dan Temukan dan Ganti semua "UIWebView" ke "WKWebView"
6) Simpan dan tambahkan lagi ke Frameworks di Xcode. Bangun dan dorong ke appstore.
sumber
Saat Anda membuat aplikasi Ionic, Anda dapat memilih antara Cordova atau Capacitor untuk menerapkan versi seluler asli. Sementara versi yang lebih baru menggunakan WKWebView secara otomatis, Cordova masih menggunakan API UIWebView secara langsung atau berisi referensi ke sana (Kapasitor telah diperbarui untuk menghapus referensi ini - lihat di bawah).
Setelah aplikasi dikirimkan, Apple mencari kode aplikasi untuk string "UIWebView" lalu menghasilkan peringatan pengiriman jika ditemukan. Oleh karena itu, rilis cordova-ios (pustaka Cordova iOS) di masa mendatang akan diperlukan untuk memastikan bahwa semua referensi ke API UIWebView dihapus.
pikiran lain. Saya tidak tahu apakah itu masuk akal atau mungkin secara teknis.
Pindahkan UIWebView ke plugin juga dan buat cordova-ios menggunakan ini atau beberapa plugin WKWebView. cordova-ios hanya berisi kode untuk memuat tampilan web. Secara default, versi berikutnya harus memuat Apache WKWebViewEngine (Plugin diinstal secara default pada aplikasi baru, Instruksi migrasi untuk aplikasi lama). Pengguna yang membutuhkan UIWebView, Ionic, fork atau lainnya dapat menentukan sendiri seperti sekarang.
Dengan cara itu, UIWebView tidak akan menggunakan cordova-ios dan masih cukup fleksibel seperti saat ini.
sumber
Saya menghadapi hal yang sama untuk aplikasi asli React. Periksa hal-hal di bawah ini:
1) Anda menggunakan modul react-native-webview daripada mengimpornya langsung dari react-native (tampilan web komunitas tidak digunakan lagi sebagai penghapusan lean core di v0.60 dan akan dihapus di rilis stabil berikutnya). ( periksa di sini )
2) Harap verifikasi juga jika Anda menggunakan pustaka pihak ketiga yang menggunakan tampilan web terbaru. Jika tidak, harap minta pengelola perpustakaan untuk meningkatkan versi react-native-webview.
3) Anda siap untuk mengunggah, Silakan tambahkan komentar jika ada yang menemukan kesulitan lagi.
Periksa di sini perubahan yang melanggar di v0.60
Cara lain untuk menghilangkan peringatan ini adalah: mulai meneruskan useWebKit = {true}, artinya, Anda menggunakan WKWebView bukan UIWebView sama sekali. Kemudian Anda dapat melakukan hal berikut untuk menyelesaikan masalah - Penggunaan API yang Tidak Berlaku Lagi.
Sekarang saya telah berhasil mengunggah app.ipa ke AppStore tanpa peringatan izin apa pun.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
sumber
Jika ada yang membantu saya menjalankan
pod update
di terminal dan kemudian mengarsipkan lagi. Itu berhasil untuk saya.sumber
Bagi saya, skrip tidak membantu. Saya harus secara manual melalui setiap kerangka dan melihat catatan rilis, dan memperbaruinya.
sumber
Saya menyingkirkan ini dengan mengikuti langkah-langkah di bawah ini-
Langkah 1:
Langkah 2:
Langkah 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Kemudian bersihkan proyek & arsip.
NB: Jika Anda menggunakan pustaka 'react-native-community / react-native-webview', perbarui dengan versi terbaru jika tidak maka sudah selesai.
sumber
Anda harus menginstal Plugin Cordova ini:
https://github.com/apache/cordova-plugin-wkwebview-engine
Kemudian tambahkan
<preference name="WKWebViewOnly" value="true" />
config.xml Anda, di bawah bagian iOS.Kemudian tingkatkan versinya dan unggah kembali.
sumber
Untuk menemukan di mana Anda menggunakan a
UIWebView
, Pergi ke root proyek Anda di terminal dan gunakan perintah inigrep -r -F "UIWebView" .
The '' sangat penting. Ini memberi tahu sistem untuk mencari string "UIWebView" di folder dan subfolder saat ini. Ini juga akan mencari perpustakaan cocoapods
sumber