Xamarin.forms: ITMS-90809: Penggunaan API yang Tidak Berlaku Lagi - Apple akan berhenti menerima pengiriman aplikasi yang menggunakan API UIWebView

Dibuat pada 30 Agu 2019  ·  99Komentar  ·  Sumber: xamarin/Xamarin.Forms

LARUTAN

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows#uiwebview -deprecation-and-app-store-rejection-itms-90809


Pengembang yang terhormat,

Kami mengidentifikasi satu masalah atau lebih dengan pengiriman baru-baru ini untuk aplikasi Anda, "xxxx" 1.0.11 (1.0.11). Pengiriman Anda berhasil, tetapi Anda mungkin ingin memperbaiki masalah berikut pada pengiriman Anda berikutnya:

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.

Setelah Anda memperbaiki masalahnya, Anda dapat menggunakan Xcode atau Application Loader untuk mengunggah biner baru ke App Store Connect.

Salam Hormat,

Tim App Store

Tapi saya yakin saya mengganti UIWebView dengan WKWebView (WKWebViewRenderer).

in-progress iOS 🍎 bug

Komentar yang paling membantu

Hai @ Mikilll94 , kami sedang mengerjakan ini secara aktif, namun solusi lengkap tidak akan tersedia dalam waktu dekat. Dengan "solusi lengkap" yang saya maksud adalah peringatan akan berhenti datang dari Apple setiap kali Anda mengirimkan aplikasi Xamarin.Forms ke toko.

Untuk menghentikan pesan peringatan kita perlu menghapus WebViewRenderer dari sumber sepenuhnya. Karena penyaji itu adalah default sekarang dan telah ada di sumbernya sejak lama, ini adalah perubahan besar yang merusak. Dengan PR yang terkait dengan masalah ini kami mengalihkan penyaji default ke WKWebViewRenderer yang secara efektif akan menggunakan WKWebView . Pengguna akhir Xamarin.Forms seharusnya tidak memperhatikan apa pun tentang perubahan ini. Dengan sakelar ini, kami juga menandai WebViewRenderer sebagai usang untuk memberikan pengguna Xamarin.Forms kemungkinan untuk membuat perubahan yang diperlukan dalam kode mereka. Misalnya jika mereka memiliki perender khusus yang mengandalkan WebViewRenderer .

Namun, karena WebViewRenderer masih ditautkan di sumbernya, ini masih sesuatu yang diambil Apple saat memindai aplikasi Anda. Dalam versi Xamarin.Forms yang lebih baru, yang paling awal versi 4.5, kami akan menjatuhkan WebViewRenderer seluruhnya dan dengan itu pesan peringatan dari Apple harus berhenti.

Karena itu, ada dua hal yang harus diambil:

  1. Pesan dari Apple hanyalah peringatan untuk saat ini, tidak ada yang menghentikan Anda untuk mengirimkan versi baru dan mereka harus diterima di App Store dengan baik. Ini mungkin akan terus berlanjut sampai iOS 14 yang memberi kita (setidaknya) satu tahun.
  2. Sekali lagi, menghapus WebViewRenderer dari sumber adalah perubahan besar yang tidak ingin kami lakukan, tetapi kami tidak punya pilihan saat ini. Oleh karena itu, kami perlu meluangkan waktu untuk memperingatkan pengguna tentang hal ini dan secara bertahap beralih ke implementasi baru terlebih dahulu dan baru kemudian menghapus kelas tersebut dari sumber. Ini adalah proses yang panjang tetapi harus dilakukan sebelum iOS 14 dirilis.

Saya harap ini menjawab semua kekhawatiran Anda tentang hal ini, jika tidak, beri tahu saya. Saya dengan senang hati menjawab pertanyaan apa pun yang mungkin Anda miliki tentang ini.

Terima kasih atas pengertian dan kesabaran Anda!

Semua 99 komentar

Saya mendapatkan masalah ini juga, kami menggunakan: Xamarin.Forms 3.6.0.539721

Setiap versi Formulir akan mendapatkan ini karena WebViewRenderer di iOS mengimplementasikan UIWebView, dan file tetap ada bahkan jika Anda mengalihkan WkWebViewRenderer. Saya tidak tahu apakah ada cara untuk menautkan file itu selama pembuatan.

@ swansca79 - itulah yang saya takuti. Saya berharap kami dapat menghubungkannya seperti yang Anda katakan.

Berapa batas waktu Apple untuk persyaratan ini? Saya tidak dapat menemukan ...

Saya menduga ini memengaruhi semua aplikasi terlepas dari apakah itu kiriman baru atau pembaruan. Jika itu masalahnya, lalu apa gunanya menautkan perender lama? Ini harus dihapus dari kode sumber. Juga, kita perlu mencari tahu apakah ini adalah persyaratan iOS 13 atau tidak ...

Masalah yang sama disini. Saya menggunakan Xamarin.Forms 4.2.0.709249

Saya menambahkan baris berikut di AssemblyInfo.cs dari proyek iOS tetapi itu tidak mengubah apa pun:

[assembly: ExportRenderer(typeof(WebView), typeof(Xamarin.Forms.Platform.iOS.WkWebViewRenderer))]

Saya ingin mengetahui tenggat waktu Apple untuk pengiriman aplikasi juga.

Masalah yang sama disini.
Ada yang tahu tenggat waktu Apple untuk permintaan ini? Atau jika Xamarin sedang mengerjakan pembaruan ini

UIWebView masih dalam versi beta iOS13, jadi mungkin memiliki hingga iOS14.

Jika Anda melihat folder renderers Xamarin.Forms.iOS, Anda akan melihat bahwa mereka menambahkan WKWebViewRender 2 bulan yang lalu. I Asumsikan bahwa Anda dapat membuat WebView Anda sendiri yang mewarisi dari perender tersebut (jika Anda tidak memiliki versi XF terakhir pada proyek Anda, Anda dapat menyalin / menempelkan kode) untuk memperbaiki masalah ini dengan WebView Anda

WkWebViewRenderer.cs

Teman-teman, saya menemukan sesuatu yang aneh, saya mengubah pengenal bundel aplikasi dan mengirimkannya ke toko aplikasi lagi, dan saya tidak menerima email peringatan dari apple.
Dan situasi saya: tiga hari yang lalu, saya tidak menerima email peringatan dari apple setelah mengirimkan ipa ke testflight, dan kemudian saya menerima email tersebut setelah saya membuat beberapa perubahan yang tidak ada hubungannya dengan webview, kemudian saya mencoba mencari kenapa dengan cara berikut:
1. Coba ganti UIWebViewRenderer dengan WKWebViewRenderer;
2. Hapus WebView;
3. Hapus lib nuget pihak ketiga (saya tambahkan baru-baru ini);
Tetapi mereka tidak berguna tentang peringatan itu (saya masih menerima email peringatan).
Saya tidak tahu bagaimana ipa diperiksa oleh apel, apakah ada kemungkinan mereka membuat kesalahan?

Saya perhatikan bahwa situasi ini muncul dengan flutter dan react-native baru-baru ini. (Pengembang juga menemui masalah.)

@ Carl-Wen ini juga terjadi dengan aplikasi Ionic

Saya mendapat pesan yang sama dari Apple Store Connect hari ini. Hal yang aneh adalah aplikasi saya tidak memiliki tampilan web di dalamnya. Saya juga mencoba melihat plugin Xamarin untuk melihat apakah ada yang menggunakan, tetapi sepertinya tidak ada yang menggunakan UIWebView (meskipun tidak 100% yakin karena ada juga dependensi dependensi).
Adakah yang tahu bagaimana mengidentifikasi penggunaan UIWebView dalam aplikasi?

Hal yang sama terjadi pada saya. Pertama kali mencoba mengirimkan aplikasi

Saya mendapat peringatan yang sama dari iTunesConnect hari ini

Saya juga mendapatkan kesalahan yang sama beberapa hari yang lalu, apakah ada solusi?

Silakan periksa jawaban saya di sini, saya memiliki proyek di Xamarin.Forms 3.6.x dan menggunakan beberapa tampilan web, jadi saya telah membuat perender khusus untuk WebView hanya untuk iOS dan mengubah warisan dari UIWebViewRenderer menjadi WKWebViewRenderer . Kemarin saya mengunggah aplikasi ke toko dan tidak menerima peringatan apapun.

masalah yang sama

@FabriBertani Bisakah Anda membagikan kode render kustom Anda?

Saya mengalami masalah yang sama, tetapi aplikasi saya TIDAK menggunakan Tampilan Web apa pun. Saya berasumsi Apple mendeteksi penggunaan di perpustakaan Xamarin.iOS.

Apakah Anda punya solusi atau solusi untuk yang satu ini? Juga terjadi ketika kami mengunggah aplikasi kami. Kami juga tidak menggunakan WebView dan tampaknya @dhewitson benar karena UIWebView di pustaka Xamarin.

Dengan asumsi Anda tidak memiliki paket apa pun yang menggunakan UIWebView yang tidak dapat Anda kendalikan, ini sudah cukup. Kemudian gunakan saja rendrer kustom Anda, bukan WebView XF biasa

namespace YourAppNameSpace
{
    public class CustomWebView : WebView
    {
    }
}
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace YourAppNameSpace.iOS
{
    public class CustomWebViewRenderer : WkWebViewRenderer
    {
    }
}

Masalah yang sama, apakah ada yang memperbarui ini?

Hai semuanya! Terima kasih telah melaporkan dan penelitian Anda.

Kami melacak ini dan penyaji untuk WkWebView sudah ada untuk sementara waktu. Saya telah melanjutkan PR yang membuat penyaji itu sebagai default dan menghentikan UIWebView one. Dengan itu, kesalahan ini akan hilang.

Saya mengharapkan beberapa ulasan dan umpan balik tentang PR saya dari anggota tim lainnya, tetapi mudah-mudahan ini akan segera diselesaikan.

Hai @jfversluis, apakah mungkin perbaikan dapat diterapkan ke versi XamarinForms yang lebih lama?
Saya menggunakan 3.4.0.1009999 dan akan sangat merepotkan untuk meningkatkan ke versi terbaru Xamarin.Forms.

@ngoquoc kami mungkin

@jfversluis terima kasih untuk balasan secepat kilat: D
Saya sangat setuju bahwa itu layak untuk ditingkatkan ke versi yang lebih baru, tetapi situasinya sangat dekat dengan tenggat waktu rilis yang kami rencanakan. Dan kami memiliki banyak dependensi lama (yang hanya mendukung hingga XF 3.x) serta penggunaan perubahan yang dapat merusak versi yang lebih baru.

@ngoquoc Tidak masalah! Saya mengerti sepenuhnya! Untuk rilis Anda berikutnya, saya pikir itu bijaksana untuk mencari peningkatan. Mungkin ada lebih banyak API yang akan dihentikan atau segera dihentikan. Jika ada yang dapat kami lakukan untuk membuat pengalaman peningkatan versi Anda lebih baik, harap hubungi kami!

Semoga kami dapat menerapkan perbaikan masalah ini di 3.4. Meningkatkan ke 4.x mutlak ada dalam rencana kami dan kami akan menghubungi tim jika kami membutuhkan bantuan (mudah-mudahan tidak: D). Sangat menghargai dukungan Anda!

@ngoquoc Bagaimanapun, seperti yang tertulis di atas, saat Anda dapat mengunggah ipa Anda, dan di iOS13 kelas ini masih ada.
Jadi, ini akan berhasil untuk beberapa waktu

@KSemenenko maksud Anda aplikasi "memperingatkan" juga dapat diterbitkan ke toko Apple?
Jika demikian, bagus, kita bisa tenang dan menunda peralihan ke WKWebView untuk beberapa waktu lagi: D
Satu-satunya kekhawatiran saya adalah apakah Apple menyetujui aplikasi tersebut dengan peringatan.
Saya menemukan informasi yang dipublikasikan tentang penghentian di sini, tetapi tidak ada tenggat waktu resmi / kebijakan tinjauan toko Apple yang ditentukan: https://developer.apple.com/documentation/uikit/uiwebview

@ngoquoc Secara historis, ya, mereka masih akan menyetujui aplikasi tersebut untuk saat ini. Peringatan itu pada dasarnya mengatakan "hei, kami akan menyetujui aplikasi Anda untuk saat ini, tetapi di masa mendatang kami tidak akan melakukannya, jadi Anda harus beralih secepatnya". Selama Anda mempublikasikan sebelum mereka memutuskan untuk mengubahnya menjadi kesalahan, Anda baik-baik saja.

Terima kasih. Saya akan mencoba mengirimkan aplikasinya sekarang dan kembali kepada kalian dengan hasilnya mungkin dalam beberapa hari setelah Apple meninjaunya :)

@ngoquoc kemarin saya sudah bisa upload ipa ke AppStore.

Disalin dari
https://github.com/xamarin/Xamarin.Forms/pull/7367#issuecomment -527558598

Pemikiran saya saat ini adalah mencari tahu mengapa penyaji itu tidak terhubung (yang telah saya kerjakan sedikit). Jika RenderWith tidak mengakibatkan Renderer ditautkan maka saya tidak berpikir itu dan semua Forwarder memiliki tujuan apa pun (bukan?)

Dalam hal ini kita dapat mengganti jenis default (seperti dalam PR ini) dan kemudian membiarkan WebViewRenderer masuk. Jika orang perlu kembali ke WebViewRenderer mereka dapat menambahkan Ekspor untuk itu tetapi jika orang tidak menggunakannya maka mudah-mudahan itu akan ditautkan di luar.

Salah satu alasan yang saya temukan adalah bahwa rakitan platform kami memiliki ekstensi
PreserveAttribute ditentukan di tingkat perakitan yang terlihat memaksa perakitan untuk mempertahankan semua jenis

Saya menguji dengan menambahkan kelas dummy ke proyek platform kami dan dengan PreserveAttribute kelas tetap ada tetapi tanpa itu PreserveAttribute menghilang.

Para penyaji masih bertahan :-) tetapi ini adalah langkah kecil

Saya menjalankan pengujian cepat dengan kelas CheckboxRendererDesigner (karena tidak benar-benar digunakan di mana pun)

Dan jika saya menghapus kedua baris kode ini
https://github.com/xamarin/Xamarin.Forms/blob/d56942c5bee0a7c56255febc8bbcc6bc33d5e1cb/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs#L128

https://github.com/xamarin/Xamarin.Forms/blob/bcf1d857f70c2d521fdbf59bd73445c7e77fe1fc/Stubs/Xamarin.Forms.Platform.cs#L112

Kemudian itu akan dihubungkan.

Sepertinya tujuan dari RenderWith pada proyek forwarder ini
https://github.com/xamarin/Xamarin.Forms/blob/bcf1d857f70c2d521fdbf59bd73445c7e77fe1fc/Stubs/Xamarin.Forms.Platform.cs#L112

Tidak memberikan koneksi yang cukup lemah seperti yang diharapkan

Sepertinya ini terjadi karena Kotak centang (elemen formulir) itu sendiri tidak ditautkan yang kemudian menyebabkan atribut RenderWith menjaga Renderer tetap ada.

Jika saya mengubah CheckboxRendererDesigner untuk mengaitkan beberapa kelas yang tidak ada
`` C #
[RenderWith (typeof (CheckBoxRenderer))]
kelas internal _CheckBoxRenderer {}

[RenderWith(typeof(CheckBoxDesignerRenderer))]
internal class _CheckBoxRendererIsMyNameo { }

``

Kemudian itu akan ditautkan ...

Jadi perlu mencari cara untuk menautkan Kotak Centang

Apakah orang lain melihat peringatan itu hilang dengan melakukan ini?

https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -527294907

@Bayu_joo

Tidak berfungsi untuk saya, saya memiliki perender dan entri di file assembly dan masih mendapatkan peringatan.

Apakah maksud Anda menambahkan WKWebViewRenderer saja tidak cukup untuk email peringatan ini?

@Bayu_joo

Tidak berfungsi untuk saya, saya memiliki perender dan entri di file assembly dan masih mendapatkan peringatan.

Dalam hal ini mungkin Anda memiliki paket lain yang menggunakan UIWebView, saya hanya menggunakan solusi itu dan tidak mendapatkan peringatan dari App Store :)

Hai @ngoquoc, sudah beruntung dengan proses peninjauannya?

hanya ingin tahu apakah tenggat waktu aplikasi kita akan terpenuhi jika mengajukan untuk ditinjau terlepas dari 'peringatan'.

Saya kira kita perlu tahu kapan Apple akan mulai mempertimbangkan alasan ini untuk menolak file IPA. Saya khawatir mereka tidak akan mengumumkan hal ini kepada publik.

Hari ini saya menerima surat bahwa aplikasi saya, saya lulus review apel
jadi untuk saat ini berhasil :)

Peninjauan aplikasi berfungsi seperti biasa. Aplikasi baru saya baru saja dipublikasikan secara normal. Mungkin hanya peringatan untuk rilis di masa mendatang.

Biasanya peringatan hanyalah peringatan dan memberi Anda banyak waktu. Dalam kasus Google, mereka memberi Anda waktu sekitar 2 tahun. Asumsi saya di sini adalah bahwa peringatan tersebut memberi tahu Anda bahwa mereka akan menghapusnya dari iOS 14 (tebakan saya) dan bahwa mereka benar-benar ingin Anda berhenti menggunakannya. Meskipun jika Anda membalik sakelar atau jika aktif secara default, Anda tidak akan menggunakannya. Jadi kecuali mereka membalik tombol dan membuatnya menjadi kesalahan, yang menurut saya tidak akan mereka lakukan karena beberapa orang masih perlu mendukung perangkat yang lebih lama.

Oke, jadi inilah yang saya lakukan untuk memverifikasi apa yang sedang terjadi.

Membuat aplikasi dummy yang saya unggah ke Apple dengan paket Xamarin.Forms stabil terbaru dan aplikasi hanya menampilkan WebView. Segera setelah saya mengunggahnya, saya mendapat peringatan ini. Untuk memverifikasi bahwa peringatan keluar setiap waktu, dan dengan demikian untuk memverifikasi kita dapat berasumsi bahwa ketika peringatan tidak datang, kami telah memperbaiki masalah, saya telah membuat biner lain tanpa perubahan selain nomor versi. Pesan peringatan datang lagi. Jadi itu menegaskan: setiap kali Anda berhenti menerima peringatan, tampaknya masalahnya sudah diperbaiki.

Kemudian saya melanjutkan dan menerapkan perender khusus dengan kode persis seperti yang disediakan @FabriBertani di sini . Pesan itu tetap datang. Jadi ini sepertinya bukan solusi.

Saya kemudian mengambil cabang ini dan baru saja menghapus WebRenderer dan secara efektif menghapus semua referensi ke UIWebView. Ini memiliki efek yang diinginkan. Apple sekarang tidak lagi mengirimi saya peringatan.

Semua ini tampaknya menunjukkan fakta bahwa selama kita mereferensikan UIWebView dalam kode kita (baca: selama UIWebViewRenderer masih ada) Apple akan mendeteksinya dan pada akhirnya akan berhenti menerima aplikasi. Untuk mendapatkan kompatibilitas mundur yang maksimal, kita perlu menyelidiki mengapa linker tidak menghapus WebViewRenderer saat tidak digunakan lagi. Jika kita memperbaikinya , PR saya masuk akal dan harus memperbaiki masalah ini untuk selamanya.

Seperti yang James (dan lainnya) sebutkan, itu hanya peringatan untuk saat ini, jadi meskipun Anda mendapatkan pesannya, pada titik ini tidak ada yang perlu dikhawatirkan dan itu akan berhasil. Tapi tentu saja kita perlu bersiap ketika Apple memutuskan untuk berhenti mengizinkan API UIWebView yang lama.

Jadi setelah memeriksa dengan tim iOS, sepertinya apa pun yang diwarisi dari NSObject tidak akan pernah ditautkan sehingga janji RenderWith untuk menautkan penyaji, saya cukup yakin tidak pernah bekerja di iOS

Mengingat bahwa kita hanya perlu menghapus perender sepenuhnya dan menghancurkan semua orang

Atau menjadi licik dengan nuget terpisah dan beberapa jenis penerusan

Saya juga memiliki masalah yang sama. Ada pembaruan tentang ini?

Hai @ Mikilll94 , kami sedang mengerjakan ini secara aktif, namun solusi lengkap tidak akan tersedia dalam waktu dekat. Dengan "solusi lengkap" yang saya maksud adalah peringatan akan berhenti datang dari Apple setiap kali Anda mengirimkan aplikasi Xamarin.Forms ke toko.

Untuk menghentikan pesan peringatan kita perlu menghapus WebViewRenderer dari sumber sepenuhnya. Karena penyaji itu adalah default sekarang dan telah ada di sumbernya sejak lama, ini adalah perubahan besar yang merusak. Dengan PR yang terkait dengan masalah ini kami mengalihkan penyaji default ke WKWebViewRenderer yang secara efektif akan menggunakan WKWebView . Pengguna akhir Xamarin.Forms seharusnya tidak memperhatikan apa pun tentang perubahan ini. Dengan sakelar ini, kami juga menandai WebViewRenderer sebagai usang untuk memberikan pengguna Xamarin.Forms kemungkinan untuk membuat perubahan yang diperlukan dalam kode mereka. Misalnya jika mereka memiliki perender khusus yang mengandalkan WebViewRenderer .

Namun, karena WebViewRenderer masih ditautkan di sumbernya, ini masih sesuatu yang diambil Apple saat memindai aplikasi Anda. Dalam versi Xamarin.Forms yang lebih baru, yang paling awal versi 4.5, kami akan menjatuhkan WebViewRenderer seluruhnya dan dengan itu pesan peringatan dari Apple harus berhenti.

Karena itu, ada dua hal yang harus diambil:

  1. Pesan dari Apple hanyalah peringatan untuk saat ini, tidak ada yang menghentikan Anda untuk mengirimkan versi baru dan mereka harus diterima di App Store dengan baik. Ini mungkin akan terus berlanjut sampai iOS 14 yang memberi kita (setidaknya) satu tahun.
  2. Sekali lagi, menghapus WebViewRenderer dari sumber adalah perubahan besar yang tidak ingin kami lakukan, tetapi kami tidak punya pilihan saat ini. Oleh karena itu, kami perlu meluangkan waktu untuk memperingatkan pengguna tentang hal ini dan secara bertahap beralih ke implementasi baru terlebih dahulu dan baru kemudian menghapus kelas tersebut dari sumber. Ini adalah proses yang panjang tetapi harus dilakukan sebelum iOS 14 dirilis.

Saya harap ini menjawab semua kekhawatiran Anda tentang hal ini, jika tidak, beri tahu saya. Saya dengan senang hati menjawab pertanyaan apa pun yang mungkin Anda miliki tentang ini.

Terima kasih atas pengertian dan kesabaran Anda!

@bayu_joo
Terima kasih atas jawaban yang brilian ini :)

@jfversluis Terima kasih atas jawaban Anda
Tolong Bisakah Anda memberi tahu saya cara menjatuhkan WebViewRenderer dari sumber?

@NehalOsama satu-satunya cara untuk melakukannya adalah dengan mengkloning repositori XamForms ini, hapus file WebViewRenderer.cs dari proyek Platforms.iOS, ubah semua referensi untuk menunjuk ke WKWebViewRenderer dan buat DLL Anda sendiri dan gunakan itu di aplikasi Anda.

Saya akan sangat merekomendasikan hal ini . Melakukan ini berarti Anda tidak dapat meningkatkan ke versi yang akan kami rilis, jadi Anda tidak akan pernah menerima perbaikan bug atau apapun tanpa kehilangan perubahan yang dibuat khusus. Atau, Anda perlu mengulangi proses ini lagi untuk setiap kali Anda ingin meningkatkan.

Jika Anda tidak keberatan saya bertanya; kenapa tidak menunggu? Pesan dari Apple hanyalah peringatan dan kami akan melakukannya dengan baik sebelum Apple benar-benar mulai menolak aplikasi. Tidak ada yang perlu dikhawatirkan saat ini.

@bayu_joo
Terima kasih banyak, Terlepas dari penghapusan referensi dan peringatan, alasannya adalah klien kami mendesak kami untuk mengintegrasikan dengan aplikasi lain menggunakan webkit
Saya dibuat sebagai https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -527294907,
tetapi bagaimana cara memastikan bahwa perender khusus saya adalah WKWebViewRenderer bukan UIWebView ?!
Apakah ada perbedaan yang jelas antara mereka atau apapun yang dapat membuktikan hal itu kepada klien ?!

Ini adalah poin di mana Anda seharusnya tidak melihat perbedaan di antara mereka jika kami melakukan pekerjaan kami dengan benar 😉

Saya tidak yakin berapa banyak bukti yang mereka butuhkan. Anda bisa menggali dengan inspektur atau hal-hal UITest untuk menggali jenis sebenarnya yang sedang ditelurkan. Cara termudah adalah dengan hanya mengatur breakpoint di custom renderer yang telah Anda buat dan melihat apakah itu berhasil. Jika ya, WKWebView sedang digunakan. Selain itu, Anda dapat menerapkan sedikit mekanisme di perender khusus yang memuat halaman tertentu dari platform asli, sekali lagi Anda dapat memasukkan breakpoint dan memverifikasi bahwa itu akan menggunakan WKWebView daripada UIWebView .

Jika Anda ingin mengalihkan semua kontrol WebView ke WKWebViewRenderer tanpa harus membuat perender khusus dan cukup menggunakan WebView alih-alih warisan, Anda dapat menambahkan baris ini ke AssemblyInfo.cs dalam proyek iOS Anda:

[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(Xamarin.Forms.Platform.iOS.WKWebViewRenderer))] .

Biner aplikasi saya ditolak hari ini karena ini. Saya sudah menggunakan WkWebViewRenderer

Dear Developer,
We identified one or more issues with a recent delivery for your app, [REDACTED]. 
Your delivery was successful, but you may wish to correct the following issues in 
your next delivery:ITMS-90809: Deprecated API Usage - Apple will stop accepting 
submissions of apps that use UIWebView APIs.
See https://developer.apple.com/documentation/uikit/uiwebview for more information.

After you’ve corrected the issues, you can use Xcode or Application Loader to upload
a new binary to App Store Connect.
Best regards,
The App Store Team

Terlepas dari bahasa pasif ini ("akan berhenti menerima"), biner saya tidak diproses dan tersedia untuk rilis.

Ini sekarang kritis. Saya tidak bisa merilis versi baru dari aplikasi klien saya.

Apa ETA untuk perbaikan ini?

Hai @joehanna, terima kasih telah melaporkan. Apakah Anda benar-benar yakin? Pesan itu sendiri mengatakan bahwa pengiriman berhasil dan tidak ada alasan untuk berasumsi bahwa ada yang berbeda dari saat masalah ini pertama kali dibuka. Diperlukan beberapa waktu sebelum Apple memproses seluruh biner setelah mengirim pesan seperti ini.

Saya melihat komentar Anda dari sekitar satu jam yang lalu, itu seharusnya muncul di portal Pengembang sekarang. Apakah Anda dapat memverifikasi bahwa itu benar-benar tidak berhasil?

Juga

biner saya tidak diproses dan tersedia untuk rilis.

bagaimana Anda memverifikasi ini? Jika Anda masuk ke definisi aplikasi, lalu Aktivitas, di bawah Semua Versi, Anda tidak melihatnya?

image

Terima kasih atas balasan cepat Anda @jfversluis. Saya belum menerima email konfirmasi dan juga tidak muncul di build yang tersedia. Saya kira mungkin ada backlog pemrosesan? Menurut pengalaman saya, biner diproses dalam waktu kurang dari 20 menit. Saya akan memeriksanya lagi sebentar lagi dan melaporkannya kembali.

Ah, itu poin bagus yang Anda sentuh di sana. Mungkin ada beberapa aktivitas tambahan dengan iOS 13 yang masuk dan orang-orang mengirimkan banyak build untuk itu. Saya baru saja membuat versi baru dari aplikasi dummy yang dapat Anda lihat di atas dan mengirimkannya juga, hanya untuk memverifikasi dan melihat apa yang terjadi.

Saya akan mengabari Anda segera setelah saya melihat sesuatu.

Bagaimanapun, terima kasih atas laporannya!

@joehanna saya mendapat peringatan pertama dan dalam beberapa menit saya mendapat gambar kedua. Jadi, tidak yakin apa yang terjadi dengan bangunan Anda, tetapi tampaknya tidak terkait dengan penggunaan UIWebView

image

image

Itu akhirnya berhasil. Maaf untuk dramanya. Belum pernah selama itu. Terima kasih telah menindaklanjutinya.

Screen Shot 2019-09-23 at 1 54 55 PM

SDK_Bug

Masalahnya adalah karena kompilator tidak menghapus file kelas atau perpustakaan yang tidak diinginkan.
Tim Pengembangan Xamarin perlu mengacu pada kebijakan pengembangan apel terbaru.

@jfversluis Kami mengalami masalah yang sama dengan proyek Xamarin.iOS. Sementara utas ini berada di bawah Xamarin.Forms, apakah akar penyebabnya sama? Apakah perbaikan akan mengatasi Xamarin.iOS dan Xamarin.Forms?

Terima kasih!
CompaNova LLC

@dmitrymal ada beberapa penyebab

Xamarin.iOS akan menyelesaikan perjuangan mereka dan kemudian kita akan membangun di atasnya untuk menyelesaikan masalah kita

Kami memiliki beberapa solusi yang sedang dikerjakan dan kami akan memperbarui masalah ini saat kami membuat kemajuan

Kenapa utas ini masih diberi tag s / belum diverifikasi?

Tidak, ini bukan @tublast 🤡

Meskipun saya menghargai perbaikan ini untuk sementara waktu dan saat ini tidak mendesak, ketika selesai akankah itu di-back-port ke versi XF sebelumnya? Kami memiliki paket besar aplikasi yang dibangun di 3.4 dan karena berbagai masalah ketergantungan selalu gagal saat mencoba meningkatkan ke XF 4.0 atau lebih tinggi.

@ 1888games Saya pikir itu sangat tidak mungkin, juga tergantung pada apa perbaikan akhirnya nantinya.

https://github.com/xamarin/Xamarin.Forms/pull/7367 telah digabungkan tetapi itu hanya sebagian dari teka-teki jadi jangan berharap peringatan itu menghilang

Ini masih akan membutuhkan perbaikan linker di dalam Xamarin.Forms SDK dan Xamarin.IOS SDK

Jadi versi XamarinForms apa yang telah memperbaikinya?

@ s-bhavin-shah, kita perlu melalui beberapa tahap dan langkah untuk memperbaikinya dan menyimpannya untuk selamanya. Oleh karena itu, hal ini tidak diperbaiki dalam versi Xamarin.Forms tertentu saat ini. Saya hanya ingin menegaskan kembali bahwa tidak ada alasan untuk khawatir pada saat ini. Pesan dari Apple hanyalah peringatan untuk saat ini dan akan menjadi peringatan untuk beberapa waktu yang akan datang.

Pada saat peringatan menjadi Apple menolak aplikasi karena alasan ini, kami akan memastikan untuk siap. Kami akan terus mengabari Anda tentang masalah ini. Apa yang terjadi sekarang adalah kami menemukan cara untuk membuat linker benar-benar menghapus objek Xamarin (inti) yang tidak digunakan. Selain itu, PR saya digabungkan yang akan membuat WKWebViewRenderer sebagai default.

Dengan itu, pada dasarnya langkah terakhir adalah merilis solusi "iOS menghubungkan". Ketika itu terjadi, WKWebViewRenderer menjadi default dan WebViewRenderer tidak lagi digunakan dalam kode Anda akan mengakibatkan dikeluarkan dari biner yang dihasilkan yang dikirim ke Apple. Yang telah dibilang; merilis solusi penautan iOS lebih mudah diucapkan daripada dilakukan dan akan membutuhkan lebih banyak waktu.

Keuntungannya di sini adalah bahwa kita mungkin tidak harus menggunakan solusi perubahan menyeluruh, tetapi kita dapat secara bertahap mentransisikan semua orang ke solusi ini.

Semoga ini bisa menjawab semua pertanyaan Anda saat ini. Jika tidak, tolong beritahu saya!

Saat menghentikan UIWebView dan menggantinya dengan WkWebView, Anda harus mempertimbangkan masalah ini
https://github.com/xamarin/Xamarin.Forms/issues/8028

Anda dapat merusak aplikasi orang jika Anda hanya mengganti UIWebView dengan WkWebView

@ Mikilll94 Meskipun intinya valid, fakta sederhananya adalah bahwa Apple akan mulai menolak binari yang masih menggunakan UIWebView. Jadi, bahkan jika Xamarin tidak melakukan apa pun, itu akan menjadi perubahan yang menghancurkan karena Apple (mungkin dalam 9 bulan ke depan) tidak akan membiarkan Anda memperbarui aplikasi Anda tanpa melakukan perubahan itu.

@cabangetek
Betul sekali.

Namun saya ingin menunjukkan bahwa ada masalah dengan WkWebView yang sangat penting dan akan memengaruhi banyak pengembang dan saat ini belum ada solusi untuk itu.

Masalah yang Sama! Adakah pekerjaan yang sempurna?

Screen Shot 2019-10-25 at 7 18 59 AM

Halo @samirgcofficial, terima kasih telah melaporkan temuan Anda. Apakah Anda melihat komentar yang kami maksudkan di atas: https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -542363338?

Itu seharusnya menjelaskan cukup banyak status saat ini :)

Ringkasan: saat ini tidak ada solusi atau solusi, kami sedang mengusahakannya. Tetapi pesan dari Apple ini hanyalah peringatan dan Anda harus dapat mengirimkan aplikasi Anda tanpa masalah, hanya pesan peringatan ini.

Jika ada pertanyaan, beri tahu saya!

@jfversluis @samirgcofficial
Sesuai pengalaman saya, Apple tidak lagi menerima aplikasi apa pun yang menampilkan UIWebView dalam binernya. Kami tidak dapat lagi mengirim aplikasi Xamarin kami ke App Store. Jadi, ini bukan hanya pesan peringatan, ini adalah masalah yang sangat penting.
Jika di sisi lain Anda memiliki solusi tentang cara mempublikasikan aplikasi kami, beri tahu kami caranya?

@JawadJaber Ya, Ini masalah serius! Saya tidak dapat melakukan pengujian eksternal aplikasi saya di App Store untuk uji terbang. Tetapi pengujian internal aplikasi dimungkinkan dan WebView ini tidak pernah memengaruhi pengujian internal.
Skenario adalah untuk menghasilkan link dan share eksternal yang tidak dapat dilakukan di Test Flight. Ada solusi?

@JawadJaber jika Anda mendapatkan pesan berbeda dari Apple yang mengatakan mereka menolak biner Anda daripada hanya memperingatkan, silakan posting tangkapan layar atau sesuatu untuk memberikan detail lebih lanjut. Saya berhasil mengirimkan biner ke Apple pada hari Jumat tanpa masalah selain email peringatan.

Saya baru saja mengirimkan biner dan saya mendapat peringatan e-mail saja

@JawadJaber @samirgcofficial dapatkah Anda memberi tahu saya mengapa menurut Anda biner Anda ditolak karena alasan ini? Kami tidak punya alasan untuk berpikir apa pun selain ini masih peringatan. Banyak orang yang mengkonfirmasi hal ini dan teks peringatan di pesan email tidak berubah sejak masalah ini dibuat.

Kami setuju bahwa ini adalah masalah yang sangat penting, itulah sebabnya kami bekerja keras mencari solusi dan kami sejelas dan transparan mungkin saat ini.

Sebelumnya di utas ini ada orang lain yang mengira binernya ditolak tetapi pemrosesan hanya membutuhkan waktu sedikit lebih lama. Mungkinkah ini juga yang terjadi pada Anda?

Oke, saya akui sekarang ini berfungsi dengan baik dengan Apple.
Meskipun, 3 minggu yang lalu ditolak, dan saya menghubungi tim dukungan App Store dan mereka mengatakan hal yang sama (kebijakan mereka).
Tapi sekarang itu berhasil. Saya pikir Apple baru saja mengubah kebijakan mereka untuk kasus ini. Terima kasih @jfversluis , @ martijn00 @ cabal95

Oke, saya mendapat pesan lain dari tim app store bahwa saya membatasi semua pengguna untuk mengakses aplikasi dan mengizinkan orang wilayah tertentu untuk verifikasi OTP menggunakan TWILO. Saya harus mengecualikan batasan itu saja dan aplikasi sedang dalam uji beta sekarang :). Itu saja. Terimakasih semuanya.

masalah yang sama

cukup sulit untuk menjelaskan kepada pelanggan bahwa aplikasi kita benar-benar baik-baik saja, itu hanya peringatan, dll ((

Saya sangat mengerti @YuliaLoyko. Sayangnya kami bergerak secepat yang kami bisa.

menunggu 4.4

@ prasannamca1107 hanya untuk memperjelas dan tidak terlalu berharap. Ini tidak akan diperbaiki di 4.4. Kami juga bergantung pada perubahan di Xamarin.iOS di sini, ini tidak dapat diperbaiki hanya oleh tim Xamarin.Forms.

Sisi baiknya, saya telah melihat perbaikan yang berfungsi, jadi seperti yang saya sebutkan: kami sedang mengerjakannya, tetapi akan memakan waktu cukup lama sebelum semuanya berbaris dan kami dapat meletakkannya di tangan Anda.

Sejauh ini masih belum ada yang perlu dikhawatirkan, pesan dari Apple tersebut masih berupa peringatan!

Saya mengikuti utas di forum xamarin dan menemukan tautan ini yang menurut saya berfungsi.

tidak ada peringatan yang sama yang saya coba

@softsan , terima kasih telah berbagi! Sayangnya, itu bukanlah solusi saat ini. Saat ini, belum ada solusi (mudah). Satu-satunya hal yang dapat Anda lakukan, yang sangat saya rekomendasikan , adalah membuat paket Xamarin.Forms Anda sendiri dengan UIWebViewRenderer yang dihapus dari solusi.

Kami masih bekerja keras mencari solusi, jangan khawatir! :)

Saya mengirimkan aplikasi baru Jumat lalu, saya mendapat peringatan yang sama tetapi hanya itu: Peringatan.
Aplikasi disetujui dan terdaftar di toko aplikasi tanpa masalah.

@jfversluis , @softsan Saya menulis renderer saya sendiri untuk WebView, yang mengembalikan WKWebView. Saya telah menguji kode dan memublikasikannya ke toko dan masih menerima peringatan. Penyaji saya mengikuti pola khas untuk penyaji tetapi berikut adalah cuplikan singkat dari kode yang relevan:

jika (Kontrol == null)
{
_contentController = new WKUserContentController ();
var frame = UIApplication.SharedApplication.Delegate.GetWindow (). Bounds;
var cgRect = new CoreGraphics.CGRect (frame.X, frame.Y, frame.Width, frame.Height);
var config = new WKWebViewConfiguration {UserContentController = _contentController};
_wKWebView = WKWebView baru (cgRect, config)
{
NavigationDelegate = new WKNavigationDelegate ()
};

                    SetNativeControl(_wKWebView);
                }

Hanya ada satu tempat di kode saya yang menggunakan browser web dan saya telah men-debug kode ini dan memeriksa tipe datanya dan memverifikasi bahwa itu benar namun saya menerima kesalahan dari Apple. Saya telah mengirimkan pertentangan ulasan ke tim peninjau dan menunggu tanggapannya.

@seanstilson itu tidak akan berguna. Seperti yang ditunjukkan sebelumnya dalam masalah ini, meskipun Anda membuat perender khusus yang menggunakan WKWebView, UIWebViewRenderer akan tetap disertakan dalam biner Xamarin.Forms karena cara kerjanya saat ini. Kami sedang berusaha mengubahnya, tetapi sampai kami melakukannya, tidak ada yang dapat Anda lakukan untuk mengubahnya saat ini.

Apple mungkin hanya akan memberi tahu Anda bahwa ada referensi ke UIWebView. Bukan di kode Anda, tetapi melalui kode Xamarin.Forms masih di dalam aplikasi Anda.

Setelah ini berkata; kami akan memastikan untuk memperbaikinya dengan satu atau lain cara sebelum Apple benar-benar berhenti menerima binari karena ini.

Maaf saya melewatkan posting sebelumnya tentang UIWebViewRenderer yang sedang dibangun
ke dalam biner @jfversluis , saya buruk. Terima kasih atas tanggapannya!

Pada Kamis, 14 November 2019 pukul 11:54 Gerald Versluis [email protected]
menulis:

@seanstilson https://github.com/seanstilson itu tidak akan berguna. Sebagai
ditunjukkan sebelumnya dalam masalah ini, bahkan jika Anda membuat perender khusus itu
menggunakan WKWebView, UIWebViewRenderer akan tetap disertakan dalam file
Xamarin.Forms binari karena cara kerjanya sekarang. Kami sedang mengerjakan
mengubah itu, tetapi sampai kita melakukannya, tidak ada yang dapat Anda lakukan untuk mengubah ini
pada saat ini.

Apple mungkin hanya akan memberi tahu Anda bahwa ada referensi ke UIWebView. Tidak
dalam kode Anda, tetapi melalui kode Xamarin.Forms masih di dalam aplikasi Anda.

Setelah ini berkata; kami akan memastikan untuk memperbaikinya dengan satu atau lain cara sebelumnya
Apple benar-benar berhenti menerima binari karena ini.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/xamarin/Xamarin .
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/AMVYZVUT5A73R4SXSQFRDMDQTWGF5ANCNFSM4ISLFU3Q
.

@seanstilson jangan khawatir tentang itu. Ada banyak aksi di sini, saya bisa membayangkan Anda melewatkan sesuatu :)

Hai teman-teman, kami akan mengunci masalah ini untuk saat ini sementara kami menunggu hasil dari tim Xamarin.iOS sebelum kami dapat melanjutkan. Dengan cara ini kami akan dapat melacak masalah ini dengan benar, dan orang-orang yang mengalami hal ini akan dapat menemukan info yang paling relevan secara langsung daripada harus melalui semua percakapan di sini. Kapanpun ada sesuatu yang baru untuk dilaporkan, kami pasti akan melakukannya.

Untuk ringkasan yang bagus tentang apa yang terjadi, silakan baca komentar ini di sini: https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -532228577

Kemajuan terbaru saat ini dapat ditemukan di sini: https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -542363338

Intinya adalah: kami sedang menangani masalah ini dengan cara yang kompatibel ke belakang dan kami akan siap, dengan satu atau lain cara, sebelum Apple benar-benar mulai menolak aplikasi karena ini.

Saat ini, satu-satunya hal adalah Anda mendapatkan pesan peringatan dari Apple yang dapat diabaikan dengan aman untuk saat ini.

Terima kasih untuk pengertian dan kesabaran Anda!

Pembaruan kecil ini: # 8001 telah digabungkan sebagai langkah pertama untuk perbaikan yang diusulkan. Namun, ini tidak berarti masalah tersebut akan hilang dalam versi yang akan datang.

Seperti yang telah kami sebutkan sebelumnya, ada juga sesuatu yang perlu diubah di Xamarin.iOS agar ini berfungsi. Kapanpun mereka akan melakukannya, versi Xamarin.iOS yang tepat bersama dengan kode ini (mulai dari 4.5), ini akhirnya akan hilang.

Untuk menjadi sangat jelas: versi 4.5 dari Xamarin.Forms saja TIDAK akan memperbaiki masalah ini. Setiap kali perbaikan penuh ada di cakrawala, saya pasti akan memperbarui ini lagi.

Terima kasih!

Apple telah merilis pernyataan singkat di mana mereka memberikan kejelasan lebih lanjut tentang rencana mereka untuk menghentikan UIWebView . Saya pikir bagian terpenting adalah ini:

App Store tidak lagi menerima aplikasi baru yang menggunakan UIWebView mulai April 2020 dan pembaruan aplikasi menggunakan UIWebView mulai Desember 2020.

Itu berarti kita masih punya waktu untuk menemukan solusi, apapun itu. Sementara itu, kami telah mencari solusi pilihan kami. Bersama dengan tim Xamarin.iOS kami telah berhasil mengirimkan aplikasi ke toko yang tidak memicu peringatan namun tetap kompatibel dengan versi sebelumnya. Itu berarti tidak membatalkan warisan (sekarang) WebViewRenderer . Kami masih memutuskan apakah itu solusi _the_ berdasarkan beberapa faktor, tetapi kami masih mengerjakannya dan akan memastikan kami siap. Setidaknya sekarang kami tahu kapan harus siap 😄terima kasih atas kesabaran Anda!

Berita bagus semuanya! Ada perbaikan terakhir yang harus segera Anda gunakan.

Itu memang membutuhkan sedikit pekerjaan di pihak Anda, saat ini saya sedang mengerjakan sedikit dokumentasi yang menjelaskan apa itu. Jangan khawatir, tidak serumit itu!

Kapan pun itu ditayangkan dan semua bit tersedia untuk Anda juga, saya akan mempostingnya di sini. Tidak ada janji yang pasti, tetapi harus segera dan jauh sebelum batas waktu April.

Sekali lagi, terima kasih telah tetap bersama kami dalam hal ini!

Solusi ada di sini!

Semua bit ada di tempatnya, saatnya solusi! TL; DR: semua dijelaskan dalam bagian dokumentasi ini di sini .

Pastikan Anda menggunakan Visual Studio (untuk Mac) terbaru di saluran stabil, yang akan menempatkan Anda di jalur yang benar. Saat ini, Anda perlu menggunakan rilis pratinjau Xamarin.Forms 4.5-pre1. Saya memahami bahwa ini mungkin bukan pilihan untuk Anda semua, tetapi yakinlah, paket stabil akan keluar jauh sebelum tenggat waktu. Stable 4.5 direncanakan pertengahan hingga akhir Februari.

Terakhir, letakkan bendera --optimize=experimental-xforms-product-type ke dalam pengaturan argumen mtouch tambahan iOS Anda dan Anda harus menyingkirkan peringatan penghentian oleh Apple. Jika Anda tidak memiliki referensi sendiri ke UIWebView tentu saja 🙂

Saya ingin meminta Anda untuk mencobanya secepat mungkin. Mungkin tidak akan merilis versi baru yang sebenarnya ke toko berdasarkan paket pratinjau Formulir, tetapi setidaknya unggah versi untuk memverifikasi bahwa solusi ini berfungsi dengan benar. Kapan pun Anda melakukannya, Anda dapat memperbarui ke paket 4.5 stable dan merilis versi baru dengan percaya diri.

Jika Anda mengalami sesuatu dengan solusi ini, jangan ragu untuk menghubungi saya secara langsung (gerald.versluis [a with a long tail] microsoft.com) atau buka masalah baru di repositori. Tentu umpan balik positif selalu dihargai juga 😉

Terima kasih lagi!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat