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

作成日 2019年08月30日  ·  99コメント  ·  ソース: xamarin/Xamarin.Forms

解決

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


親愛なる開発者、

アプリの最近の配信である「xxxx」1.0.11(1.0.11)に関する1つ以上の問題を特定しました。 配信は成功しましたが、次の配信で次の問題を修正することをお勧めします。

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

問題を修正したら、XcodeまたはApplication Loaderを使用して、新しいバイナリをApp StoreConnectにアップロードできます。

宜しくお願いします、

AppStoreチーム

しかし、私はUIWebViewをWKWebView(WKWebViewRenderer)に置き換えたと確信しています。

in-progress iOS 🍎 bug

最も参考になるコメント

こんにちは@ Mikilll94 、私たちはこれに積極的に取り組んでいますが、完全なソリューションはすぐには利用できなくなります。 「完全なソリューション」とは、Xamarin.Formsアプリをストアに送信するたびに、Appleからの警告が停止することを意味します。

警告メッセージを停止するには、現在のWebViewRendererをソースから完全に削除する必要があります。 そのレンダラーは現在デフォルトであり、永遠にソースに含まれているため、これは大きな重大な変更です。 この問題に関連するPRを使用して、デフォルトのレンダラーをWKWebViewRenderer切り替えます。これにより、新しいWKWebViewが効果的に使用されます。 Xamarin.Formsのエンドユーザーは、この変更について何も気付かないはずです。 このスイッチでは、Xamarin.Formsユーザーがコードに必要な変更を加えることができるように、元のWebViewRendererを非推奨としてマークしています。 たとえば、 WebViewRenderer依存するカスタムレンダラーが配置されている場合です。

ただし、 WebViewRendererはまだソースにリンクされているため、これはAppleがアプリのスキャン中に取得するものです。 Xamarin.Formsの最新バージョンであるXamarin.Formsの新しいバージョンでは、 WebViewRenderer完全に削除し、Appleからの警告メッセージを停止する必要があります。

そうは言っても、取り除くべき2つのことがあります。

  1. Appleからのメッセージは当面の警告であり、新しいバージョンの送信を妨げるものは何もありません。それらはAppStoreに問題なく受け入れられるはずです。 これはおそらく、iOS 14が(少なくとも)1年になるまでそうなるでしょう。
  2. 繰り返しになりますが、ソースからWebViewRendererを削除することは、私たちがしたくない大きな重大な変更ですが、現時点では選択の余地はありません。 したがって、これについてユーザーに警告し、最初に新しい実装に徐々に切り替えてから、そのクラスをソースから削除するために、少し時間がかかる必要があります。 これは時間のかかるプロセスですが、iOS14のリリースのかなり前に発生するはずです。

これがこれに関するすべての懸念に対処することを願っています。そうでない場合は、私に知らせてください。 この件に関してご不明な点がございましたら、お気軽にお問い合わせください。

ご理解とご理解のほどよろしくお願いいたします。

全てのコメント99件

私もこの問題を抱えています、私たちは使用しています:Xamarin.Forms 3.6.0.539721

iOSのWebViewRendererはUIWebViewを実装しているため、Formsのすべてのバージョンでこれが取得され、WkWebViewRendererを切り替えてもファイルは保持されます。 ビルド中にそのファイルをリンクする方法があるかどうかはわかりません。

@ swansca79-それは私が恐れていたものです。 あなたが言うように、私たちはそれをリンクできることを望んでいます。

この要件に関するAppleの期限はいつですか? 何も見つかりませんでした...

これは、新規提出か更新かに関係なく、すべてのアプリに影響すると思います。 その場合、古いレンダラーをリンクする意味は何ですか? ソースコードから削除する必要があります。 また、これがiOS13の要件であるかどうかを確認する必要があります...

ここでも同じ問題があります。 Xamarin.Forms4.2.0.709249を使用しています

iOSプロジェクトのAssemblyInfo.csに次の行を追加しましたが、何も変更されません。

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

Appleのアプリ提出期限も知りたいのですが。

ここでも同じ問題があります。
この要求に対するAppleの期限を知っている人はいますか? または、Xamarinがこの更新に取り組んでいる場合

UIWebViewはまだiOS13ベータ版であるため、おそらくiOS14まであります。

Xamarin.Forms.iOSレンダラーフォルダーを見ると、2か月前にWKWebViewRenderが追加されていることがわかります。 そのレンダラーから継承する独自のWebViewを作成して(プロジェクトに最新バージョンのXFがない場合は、コードをコピーして貼り付けることができます)、WebViewのこの問題を修正できると思います。

WkWebViewRenderer.cs

みんな、何か変なものを見つけました。アプリバンドル識別子を変更してアプリストアに再度送信しましたが、アップルから警告メールが届きませんでした。
そして私の状況:3日前、ipaをtestflightに送信した後、アップルから警告の電子メールを受信しませんでした。その後、webviewとは関係のない変更を加えた後、電子メールを受信しました。なぜ次の方法で:
1.UIWebViewRendererをWKWebViewRendererに置き換えてみてください。
2.WebViewを削除します。
3.サードパーティのnugetlib(最近追加しました)を削除します。
しかし、彼らは警告については役に立たない(私はまだ警告メールを受け取る)。
アップルがipaをどのようにチェックしたのかわかりませんが、間違いを犯す可能性はありますか?

最近、この状況がフラッターとリアクションネイティブで発生していることに気づきました(開発者も問題に直面しています)。

@ Carl-これはIonicアプリでも起こりますか

今日、Apple StoreConnectから同じメッセージが届きました。 奇妙なことに、私のアプリケーションにはWebビューがありません。 Xamarinプラグインを調べて、使用されているプラ​​グインがあるかどうかも確認しましたが、UIWebViewを使用していないようです(依存関係の依存関係もあるため、100%確実ではありません)。
アプリケーションでUIWebViewの使用法を特定する方法を知っている人はいますか?

同じことが私にも起こります。 初めてアプリを送信しようとしています

今日、iTunesConnectから同じ警告が表示されました

数日前にも同じエラーが発生しますが、回避策はありますか?

ここで私の答えを確認してください。Xamarin.Forms3.6.xにプロジェクトがあり、いくつかのWebビューを使用しているため、iOS専用のWebView用のカスタムレンダラーを作成し、継承をUIWebViewRendererからWKWebViewRenderer 。 昨日、アプリケーションをストアにアップロードしましたが、警告は表示されませんでした。

同じ問題

@FabriBertaniカスタムレンダリングコードを共有して

同じ問題が発生しますが、アプリでWebビューが使用されません。 AppleがXamarin.iOSライブラリで使用状況を検出していると思います。

これに対する解決策や回避策はありますか? アプリをアップロードしたときにも発生しました。 また、 WebViewsも使用していません。これは、XamarinライブラリのUIWebViewが原因であるとです

制御できないUIWebViewを使用するパッケージがないと仮定すると、これで十分です。 次に、通常のXFWebViewの代わりにカスタムレンドラーを使用します

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

同じ問題ですが、誰かがこれに関する更新を持っていますか?

こんにちは、みなさん! 報告と調査に感謝します。

これを追跡しており、 WkWebViewレンダラーはすでにしばらくの間配置されています。 私はそのレンダラーをデフォルトにし、 UIWebViewものを非推奨にするPRを進めました。 これで、このエラーは消えるはずです。

チームの他のメンバーからのPRに関するレビューとフィードバックを期待していますが、これはすぐに解決されることを願っています。

こんにちは@jfversluis修正を古いバージョンのXamarinFormsに適用できる可能性はありますか?
3.4.0.1009999を使用していますが、Xamarin.Formsの最新バージョンにアップグレードするのは大変な労力になります。

@ngoquocこれを以前のバージョンにバックポートする可能性がありますが、3.4に戻すことには懐疑的です。申し訳ありません。 アップグレードするのに手間がかかりすぎるのはなぜですか? その領域を調査する価値があるかもしれません:)

@jfversluis非常に速い返信をありがとう:D
新しいバージョンにアップグレードする価値があることには絶対に同意しますが、状況は私たちの計画されたリリース期限に本当に近いです。 また、多くのレガシー依存関​​係(XF 3.xまでしかサポートしていません)と、新しいバージョンの重大な変更の使用法があります。

@ngoquoc問題ありません! 完全に理解しました! 次のリリースでは、アップグレードを探すのが賢明だと思います。 間もなく非推奨または非推奨になるAPIが他にもある可能性があります。 アップグレードエクスペリエンスを向上させるためにできることがあれば、お問い合わせください。

うまくいけば、3.4でこの問題の修正を適用できます。 4.xへのアップグレードは絶対に計画に含まれており、サポートが必要な場合はチームに連絡します(できれば:Dではありません)。 本当にありがとうございます!

@ngoquocいずれにせよ、上記のように、ipaをアップロードできますが、iOS13ではこのクラスはまだ存在します。
だから、これはしばらくの間機能します

@KSemenenko 「警告」アプリをAppleストアにも公開できるということですか?
その場合は、すばらしいです。落ち着いて、WKWebViewへの切り替えをもう少し延期することができます:D
私の唯一の懸念は、Appleがそのようなアプリケーションを警告付きで承認するかどうかです。
非推奨に関する公開情報をここで見つけましたが、正式な期限/ Appleストアレビューポリシーが指定されていません: https

@ngoquoc歴史的に、はい、彼らは今のところそれらのアプリをまだ承認します。 警告は基本的に「ねえ、今のところあなたのアプリを承認しますが、将来は承認しないので、できるだけ早く切り替える必要があります」と言っています。 彼らがそれをエラーに切り替えることを決定する前にあなたが公開する限り、あなたは良いです。

ありがとう。 今すぐアプリを送信してみて、Appleがレビューしてから数日後に結果を返します:)

@ngoquoc昨日、ipaをAppStoreにアップロードできました。

からコピー
https://github.com/xamarin/Xamarin.Forms/pull/7367#issuecomment -527558598

私の現在の考えは、これらのレンダラーがリンクされていない理由を理解することです(これは私が少し取り組んできました)。 RenderWithによってレンダラーがリンクアウトされない場合、私はそれを考えていません。フォワーダー全体が何らかの目的を果たします(右?)

その場合、デフォルトのタイプを切り替えて(このPRのように)、WebViewRendererをそのままにしておくことができます。WebViewRendererに戻す必要がある場合は、エクスポートを追加できますが、使用していない場合は、リンクされることを願っています。でる。

私が見つけた理由の1つは、プラットフォームアセンブリの両方に
アセンブリレベルで指定されたPreserveAttributeは、アセンブリにすべてのタイプを保持させるように見えます

プラットフォームプロジェクトにダミークラスを追加してテストしました。PreserveAttributeを使用するとクラスは残りますが、それがないとPreserveAttributeはなくなります。

レンダラーはまだすべて固執しています:-)しかし、それは赤ちゃんのステップです

CheckboxRendererDesignerクラスを使用して簡単なテストを実行しました(実際にはどこでも使用されていないため)

そして、これらのコード行を両方とも削除すると
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

その後、リンクされます。

これらのフォワーダープロジェクトでのRenderWithの意図された目的のようです
https://github.com/xamarin/Xamarin.Forms/blob/bcf1d857f70c2d521fdbf59bd73445c7e77fe1fc/Stubs/Xamarin.Forms.Platform.cs#L112

期待されていた十分に弱い接続を提供していません

チェックボックス(フォーム要素)自体がリンクされていないため、これが発生しているように見えます。これにより、 RenderWith属性がレンダラーを維持します。

CheckboxRendererDesignerを変更して、存在しないクラスの属性を指定した場合
`` `C#
[RenderWith(typeof(CheckBoxRenderer))]
内部クラス_CheckBoxRenderer {}

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

`` `

それからそれはリンクされます...

したがって、チェックボックスをリンクする方法を理解する必要があります

これを行うことで警告が消えるのを見た人はいますか?

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

@PureWeen

うまくいきませんでした。レンダラーとアセンブリファイルのエントリの両方がありますが、それでも警告が表示されます。

この警告メールには、WKWebViewRendererを追加するだけでは不十分だということですか?

@PureWeen

うまくいきませんでした。レンダラーとアセンブリファイルのエントリの両方がありますが、それでも警告が表示されます。

その場合、UIWebViewを使用する他のパッケージがあるかもしれませんが、私はその回避策を使用するだけで、AppStoreから警告を受け取りません:)

こんにちは@ngoquocまだレビュープロセスで運がありますか?

「警告」に関係なく、レビューのために送信した場合、アプリの期限に間に合うかどうかを知りたいだけです。

AppleがIPAファイルを拒否するためにこの理由をいつ見なし始めるかを知る必要があると思います。 彼らがこれを公に発表しないのではないかと心配しています。

今日、私は自分のアプリがアップルレビューに合格したという手紙を受け取りました
だから今のところそれは動作します:)

アプリのレビューは通常どおり機能します。 私の新しいアプリは正常に公開されました。 たぶん、将来のリリースのための単なる警告です。

通常、警告は単なる警告であり、多くの時間を与えます。 グーグルの場合、彼らはあなたに約2年を与えます。 ここでの私の仮定は、警告は、iOS 14から削除する予定であり(私の推測)、本当に使用をやめてほしいということです。 ただし、スイッチを切り替えた場合、またはデフォルトでオンになっている場合は、とにかく使用しません。 したがって、スイッチを切り替えてエラーにしない限り、古いデバイスをサポートする必要がある人もいるため、エラーになるとは思いません。

さて、これが何が起こっているのかを確認するために私がしたことです。

最新の安定したXamarin.FormsパッケージとWebViewのみを表示するアプリを使用してAppleにアップロードしたダミーアプリを作成しました。 アップロードしてすぐに、この警告が表示されました。 警告が毎回表示されることを確認し、警告が表示されないときに問題が修正されたことを確認するために、バージョン番号以外に変更のない別のバイナリを作成しました。 警告メッセージが再び届きました。 これで確認できます。警告の受信を停止すると、明らかに問題は修正されます。

次に、 @ FabriBertaniここで提供した正確なコードを使用してカスタムレンダラーを実装しました。 メッセージはまだ来ました。 したがって、これは解決策ではないようです。

次に、このブランチを取得してWebRendererを削除し、UIWebViewへのすべての参照を効果的に削除しました。 これは望ましい効果をもたらしました。 Appleはもう私に警告を送っていません。

これはすべて、コードでUIWebViewを参照している限り(UIWebViewRendererがまだ配置されている限り)、Appleがそれを検出し、最終的にアプリの受け入れを停止するという事実を示しているようです。 最大の下位互換性を得るには、リンカがWebViewRendererを使用しなくなったときに削除しない理由を調査する必要があります。 それを修正すれば、私のPRは理にかなっており、この問題を完全に修正する必要があります。

ジェームズ(および他の人)が述べたように、それは今のところ単なる警告なので、メッセージを受け取ったとしても、この時点では心配する必要はなく、機能します。 しかしもちろん、Appleが古いUIWebViewAPIの許可をやめることを決定したときのために準備する必要があります。

したがって、iOSチームに確認したところ、NSObjectから継承したものはリンクアウトされないようです。したがって、RenderWithがレンダラーをリンクアウトするという約束はiOSで機能したことがないと確信しています。

レンダラーを完全に削除して全員を壊す必要があることを考えると

または、別のNugetといくつかのタイプの転送で巧妙になります

私も同じ問題を抱えています。 これに関する更新はありますか?

こんにちは@ Mikilll94 、私たちはこれに積極的に取り組んでいますが、完全なソリューションはすぐには利用できなくなります。 「完全なソリューション」とは、Xamarin.Formsアプリをストアに送信するたびに、Appleからの警告が停止することを意味します。

警告メッセージを停止するには、現在のWebViewRendererをソースから完全に削除する必要があります。 そのレンダラーは現在デフォルトであり、永遠にソースに含まれているため、これは大きな重大な変更です。 この問題に関連するPRを使用して、デフォルトのレンダラーをWKWebViewRenderer切り替えます。これにより、新しいWKWebViewが効果的に使用されます。 Xamarin.Formsのエンドユーザーは、この変更について何も気付かないはずです。 このスイッチでは、Xamarin.Formsユーザーがコードに必要な変更を加えることができるように、元のWebViewRendererを非推奨としてマークしています。 たとえば、 WebViewRenderer依存するカスタムレンダラーが配置されている場合です。

ただし、 WebViewRendererはまだソースにリンクされているため、これはAppleがアプリのスキャン中に取得するものです。 Xamarin.Formsの最新バージョンであるXamarin.Formsの新しいバージョンでは、 WebViewRenderer完全に削除し、Appleからの警告メッセージを停止する必要があります。

そうは言っても、取り除くべき2つのことがあります。

  1. Appleからのメッセージは当面の警告であり、新しいバージョンの送信を妨げるものは何もありません。それらはAppStoreに問題なく受け入れられるはずです。 これはおそらく、iOS 14が(少なくとも)1年になるまでそうなるでしょう。
  2. 繰り返しになりますが、ソースからWebViewRendererを削除することは、私たちがしたくない大きな重大な変更ですが、現時点では選択の余地はありません。 したがって、これについてユーザーに警告し、最初に新しい実装に徐々に切り替えてから、そのクラスをソースから削除するために、少し時間がかかる必要があります。 これは時間のかかるプロセスですが、iOS14のリリースのかなり前に発生するはずです。

これがこれに関するすべての懸念に対処することを願っています。そうでない場合は、私に知らせてください。 この件に関してご不明な点がございましたら、お気軽にお問い合わせください。

ご理解とご理解のほどよろしくお願いいたします。

@jfversluis
この素晴らしい答えをありがとう:)

@jfversluisご回答ありがとうございます
WebViewRendererをソースから削除する方法を教えてください。

@NehalOsamaは、このXamFormsリポジトリのクローンを作成し、Platforms.iOSプロジェクトからWebViewRenderer.csファイルを削除し、すべての参照をWKWebViewRendererを指すように変更して、独自のDLLを構築する唯一の方法です。アプリでそれを使用します。

私はこれに対して強くお勧めします。 これを行うと、リリースするバージョンにアップグレードできないため、カスタムで行われた変更を失うことなく、バグ修正などを受け取ることはありません。 または、アップグレードするたびにこのプロセスを繰り返す必要があります。

あなたが私に尋ねても構わないのなら; 待ってみませんか? Appleからのメッセージは単なる警告であり、Appleが実際にアプリを拒否し始める前にこれを実行します。 この時点で心配することは何もありません。

@jfversluis
どうもありがとう、参照と警告を削除しても、その理由は、クライアントがWebkitを使用して別のアプリケーションと統合するように要求しているためです
https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -527294907として作成しました、
しかし、カスタムレンダラーがUIWebViewではなくWKWebViewRendererであることを確認するにはどうすればよいですか?!
それらの間に明らかな違いはありますか、それともクライアントにそれを証明できるものはありますか?!

私たちが正しく仕事をしていれば、それらの間に違いは見られないはずです😉

彼らがどれだけの証拠を必要とするかはわかりません。 インスペクターまたはUITestのものを調べて、生成されている実際のタイプを掘り下げることができます。 ただし、最も簡単な方法は、作成したカスタムレンダラーにブレークポイントを設定し、それがヒットするかどうかを確認することです。 含まれている場合は、 WKWebViewが使用されています。 さらに、ネイティブプラットフォームから特定のページをロードする小さなメカニズムをカスタムレンダラーに実装することもできます。ここでも、ブレークポイントを設定して、 UIWebViewではなくWKWebViewを使用することを確認できます。 UIWebView

カスタムレンダラーを作成せずにすべての通常のWebViewコントロールをWKWebViewRendererに切り替えて、継承の代わりにWebView使用する場合は、この行をに追加できます。 iOSプロジェクトのAssemblyInfo.cs

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

このため、私のアプリのバイナリは本日拒否されました。 私はすでに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

この受動的な言語(「受け入れを停止する」)にもかかわらず、私のバイナリは処理されず、リリースで利用可能になりませんでした。

これは今や重要です。 クライアントのアプリの新しいバージョンをリリースできません。

この修正のETAは何ですか?

こんにちは@joehanna報告してくれてありがとう。 絶対によろしいですか? メッセージ自体は、配信が成功したことを示しており、この問題が最初に開かれたときと何かが異なると考える理由はありません。 このようなメッセージを送信した後、Appleがバイナリ全体を処理するまでには少し時間がかかります。

あなたのコメントは約1時間前のものだと思いますが、今では開発者ポータルに表示されるはずです。 それが本当に通過しなかったことを確認できますか?

また

私のバイナリは処理されず、リリースで利用できるようになりました。

これをどのように確認しましたか? アプリの定義、[アクティビティ]の[すべてのビルド]の下に移動すると、表示されませんか?

image

迅速な返信をありがとう@jfversluis。 確認メールを受け取っていません。また、利用可能なビルドにも表示されません。 処理のバックログがある可能性があると思いますか? 私の経験では、バイナリは20分以内に処理されます。 しばらくしてからもう一度確認し、報告します。

ああ、それはあなたがそこで触れている良い点です。 iOS 13が登場し、そのために多くのビルドを提出する人々には、追加のアクティビティがあるかもしれません。 上に表示されているダミーアプリの新しいバージョンを作成し、それも送信しました。これは、何が起こるかを確認して確認するためです。

何かがわかり次第更新します。

とにかく報告してくれてありがとう!

@joehanna最初に警告が表示され、数分以内に2番目の画像が表示されました。 したがって、ビルドで何が起こっているのかわかりませんが、 UIWebView使用法とは関係がないようです

image

image

ついにやってきた。 ドラマでごめんなさい。 そんなに長くかかることはありませんでした。 フォローアップしていただきありがとうございます。

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

SDK_Bug

この問題は、コンパイラが不要なクラスファイルまたはライブラリを削除していないためです。
Xamarin開発チームは、最新のアップル開発ポリシーを参照する必要があります。

@ jfversluisXamarin.iOSプロジェクトでも同じ問題が発生しています。 このスレッドはXamarin.Formsの下にありますが、根本的な原因は同じですか? 修正はXamarin.iOSとXamarin.Formsの両方に対応する予定ですか?

ありがとうございました!
CompaNova LLC

@dmitrymalいくつかの原因があります

Xamarin.iOSが原因を解決し、その上に構築して問題を解決します

いくつかの解決策に取り組んでおり、進捗状況に応じてこの問題を更新します

なぜこのスレッドはまだs / unverifiedのタグが付けられているのですか?

いいえ、 @ taublastではありません🤡

この修正はしばらくの間オフであり、現在緊急ではないことを感謝していますが、修正が完了すると、以前のXFバージョンにバックポートされますか? 3.4に組み込まれているアプリの大規模なスイートがあり、さまざまな依存関係の問題のため、XF4.0以降にアップグレードしようとすると常に失敗します。

@ 1888games最終的な修正がどうなるかにもよりますが、それは非常にありそうもないと思います。

https://github.com/xamarin/Xamarin.Forms/pull/7367がマージされましたが、これはパズルの一部にすぎないため、警告が消えることを期待しないでください

Xamarin.FormsSDKおよびXamarin.IOSSDK内でリンカーの修正が必要になります

では、XamarinFormsのどのバージョンでこれが修正されていますか?

@ s-bhavin-shah、これを修正して永久に片付けるには、複数の段階と手順を実行する必要があります。 したがって、これは現時点では特定のXamarin.Formsバージョンでは修正されていません。 繰り返しになりますが、現時点では心配する必要はありません。 Appleからのメッセージは今のところ単なる警告であり、これからしばらくの間警告になるでしょう。

警告がこの理由でAppleがアプリを拒否するようになるまでに、私たちは準備ができていることを確認します。 この号では最新情報をお届けします。 ここで起こったことは、リンカーが実際に使用されていないXamarinオブジェクトを(コア)削除する方法を見つけたことです。 さらに、私のPRが統合され、 WKWebViewRendererがデフォルトになります。

それが整ったら、基本的に最後のステップは「iOSリンク」ソリューションをリリースすることです。 その場合、 WKWebViewRendererがデフォルトになり、コードでWebViewRendererが使用されなくなると、Appleに送信される結果のバイナリから削除されます。 そうは言っても; iOSリンクソリューションのリリースは、口で言うほど簡単ではなく、もう少し時間がかかります。

ここでの利点は、おそらく完全な変更変更ソリューションを使用する必要はないということですが、徐々にすべての人をこのソリューションに移行することができます。

これが現時点であなたのすべての質問に答えることを願っています。 そうでない場合は、私に知らせてください!

UIWebViewを非推奨にしてWkWebViewに置き換える場合は、この問題を考慮する必要があります。
https://github.com/xamarin/Xamarin.Forms/issues/8028

UIWebViewをWkWebViewに置き換えるだけで、人々のアプリを壊すことができます

@ Mikilll94ポイントは有効ですが、単純な事実は、AppleがまだUIWebViewを使用しているバイナリを拒否し始めるということです。 したがって、Xamarinが何もしなかったとしても、Appleは(おそらく今後9か月以内に)変更を加えずにアプリを更新できないため、とにかく重大な変更になります。

@ cabal95
そのとおり。

しかし、私はWkWebViewに非常に重要で多くの開発者に影響を与える問題があり、現時点では回避策がないことを示したかったのです。

同じ問題! 完璧な回避策はありますか?

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

こんにちは@samirgcofficialあなたの調査結果を報告してくれてありがとう。 https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment -542363338:私たちがずっと参照しているコメントを一番上に見ましたか?

それは現在の状況をかなり説明するはずです:)

概要:現在、回避策や解決策はありません。現在取り組んでいます。 ただし、Appleからのこのメッセージは単なる警告であり、この警告メッセージだけで問題なくアプリを送信できるはずです。

ご不明な点がございましたら、お気軽にお問い合わせください。

@jfversluis @samirgcofficial
私の経験によると、AppleはUIWebViewをバイナリで表示するアプリを受け入れなくなりました。 XamarinアプリをAppStoreに送信できなくなりました。 したがって、これは警告メッセージであるだけでなく、非常に重要な問題です。
一方、アプリを公開する方法について解決策がある場合は、その方法を教えてください。

@JawadJaberはい、それは深刻な問題です! テストフライト用にアプリストアでアプリの外部テストを行うことができません。 ただし、アプリの内部テストは可能であり、このWebViewが内部テストに影響を与えることはありません。
シナリオは、テストフライトでは実行できない外部リンクと共有を生成することでした。 解決策はありますか?

@JawadJaber Appleから、警告だけでなくバイナリを拒否したという別のメッセージが表示された場合は、スクリーンショットなどを投稿して詳細を確認してください。 私は金曜日にAppleにバイナリを正常に送信しましたが、警告メール以外の問題はありませんでした。

バイナリを送信するだけで、警告メールのみが届きました

@ JawadJaber @ samirgcofficialこの理由でバイナリが拒否されたと思う理由を教えてください。 これ以外はまだ警告だと考える理由はありません。 多くの人がこれを確認しており、この問題が発生してから電子メールメッセージの警告テキストは変更されていません。

これが非常に重要な問題であることに同意します。そのため、私たちは解決策に懸命に取り組んでおり、現時点で可能な限り明確で透明性があります。

このスレッドの前半に、自分のバイナリが拒否されたと思った人がいましたが、処理に少し時間がかかりました。 これはあなたにも当てはまるのでしょうか?

わかりました。Appleで正常に動作していることを認めます。
しかし、3週間前に拒否され、App Storeサポートチームに連絡したところ、同じことを言われました(彼らのポリシー)。
しかし、今は機能しています。 Appleはこの場合のポリシーを変更したばかりだと思います。 ありがとう@ jfversluis@ martijn00 @ cabal95

わかりました。アプリストアチームから、すべてのユーザーがアプリにアクセスすることを制限し、特定の地域の人々がTWILOを使用してOTP検証を行えるようにするという別のメッセージを受け取りました。 制限を除外する必要があります。アプリは現在ベータテスト中です:)。 それで全部です。 みんな、ありがとう。

同じ問題

私たちのアプリは絶対に大丈夫だと顧客に説明するのはかなり難しいです、それは単なる警告などです((

@YuliaLoykoを完全に理解しています。 残念ながら、私たちはできるだけ速く動いています。

4.4を待っています

@ prasannamca1107明確にするために、そしてあなたの希望を上げないために。 これは4.4では修正されません。 ここではXamarin.iOSの変更にも依存しています。これは、Xamarin.Formsチームだけで修正することはできません。

明るい面では、私は機能する修正を見たので、私が述べたように、私たちはそれに取り組んでいますが、すべてが揃い、あなたの手にそれを置くことができるまでにはしばらく時間がかかります。

これまでのところ、まだ心配することは何もありませんが、Appleからのメッセージはまだ単なる警告です!

xamarinフォーラムのスレッドをこのリンクが機能するはずだと思いました。

私が試したのと同じ警告はありません

@softsan 、共有してくれてありがとう! 残念ながら、それは現在のところ解決策ではありません。 現時点では、(簡単な)解決策はありません。 私が強くお勧めする唯一の方法は、ソリューションからUIWebViewRendererを削除して独自のXamarin.Formsパッケージを構築することです。

私たちはまだ解決策に懸命に取り組んでいます、心配はありません! :)

先週の金曜日に新しいアプリを送信しました。同じ警告が表示されましたが、それは警告でした。
アプリは承認され、問題なくアプリストアにリストされます。

@ jfversluis@ softsanWebView用に独自のレンダラーを作成しました。これはWKWebViewを返します。 コードをテストしてストアに公開しましたが、まだ警告が表示されます。 私のレンダラーはレンダラーの典型的なパターンに従いますが、関連するコードの簡単なスニペットを次に示します。

if(Control == 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 = new WKWebView(cgRect、config)
{{
NavigationDelegate = new WKNavigationDelegate()
};

                    SetNativeControl(_wKWebView);
                }

私のコードにはWebブラウザを使用する場所が1つしかなく、このコードをデバッグしてデータ型を調べ、正しいことを確認しましたが、Appleからエラーを受け取りました。 レビューチームにレビューの競合を送信しました。返信をお待ちしています。

@seanstilsonそれは

AppleはおそらくUIWebViewへの参照があると単にあなたに言うでしょう。 コードではなく、アプリ内のXamarin.Formsコードを介して。

これを言ったこと; これが原因でAppleがバイナリの受け入れを実際に停止する前に、いずれかの方法で修正するようにします。

申し訳ありませんが、UIWebViewRendererの構築に関する以前の投稿を見逃しました
バイナリ@jfversluisに、私の悪い。 返信ありがとうございます!

11時54分AMジェラルドVersluisの木、2019年11月14日には[email protected]
書きました:

@seanstilsonhttps ://github.com/seanstilsonそれは役に立たないでしょう。 なので
この号の前半で示したように、カスタムレンダラーを作成した場合でも
WKWebViewを使用すると、UIWebViewRendererは引き続きに含まれます。
Xamarin.Formsバイナリは、現在の動作方法のためです。 私たちは取り組んでいます
それを変えるが、私たちがそうするまで、これを変えるためにあなたができることは何もない
現時点では。

AppleはおそらくUIWebViewへの参照があると単にあなたに言うでしょう。 ない
コード内ですが、Xamarin.Formsコードを介してアプリ内に残ります。

これを言ったこと; 前に何らかの方法で修正するようにします
このため、Appleは実際にバイナリの受け入れを停止します。


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/xamarin/Xamarin.Forms/issues/7323?email_source=notifications&email_token=AMVYZVVKIGZKMMH5XOS2QATQTWGF5A5CNFSM4ISLFU32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXH
または購読を解除する
https://github.com/notifications/unsubscribe-auth/AMVYZVUT5A73R4SXSQFRDMDQTWGF5ANCNFSM4ISLFU3Q

@seanstilsonはそれについて心配しないでください。 ここにはたくさんのアクションがあります、私はあなたが何かを逃していると想像することができます:)

友だち、Xamarin.iOSチームからの結果を待っている間、この問題をロックしてから先に進みます。 このようにして、この問題を適切に追跡することができ、これに遭遇した人々は、ここですべての会話を行う必要がなく、最も関連性の高い情報を直接見つけることができます。 何か新しい報告があるときはいつでも、私たちは間違いなくそうします。

何が起こっているかの良い要約については、ここでこのコメントを読んでください: https

現時点での最新の進捗状況は、 https

その要点は、Appleが実際にこのためにアプリを拒否し始める前に、下位互換性のある方法で問題に取り組んでおり、何らかの方法で準備ができているということです。

今のところ、唯一のことは、Appleから警告メッセージを受け取ることです。これは今のところ無視しても問題ありません。

何卒ご理解とご協力を賜りますようお願い申し上げます。

これに関する小さな更新:#8001は、提案された修正への最初のステップとしてマージされました。 ただし、これは、この問題が次のバージョンでまだなくなるという意味ではありません。

前に述べたように、これを機能させるには、Xamarin.iOSで変更する必要があるものもあります。 彼らがそうするときはいつでも、このコード(4.5から始まる)と一緒に正しいXamarin.iOSバージョン、これは最終的になくなります。

完全に明確にするために:Xamarin.Formsのバージョン4.5だけでは、この問題は修正されません。 完全な修正が間近に迫っているときはいつでも、私はこれを再び更新することを確実にします。

ありがとう!

Appleは UIWebViewを廃止する計画をより明確にする短い声明を発表しました。 最も重要な部分はこれだと思います:

App Storeは、2020年4月以降、UIWebViewを使用した新しいアプリと、2020年12月以降、UIWebViewを使用したアプリの更新を受け付けなくなります。

つまり、それが何であれ、解決策を考え出す時間はまだあるということです。 その間、私たちは私たちの好ましい解決策を検討してきました。 Xamarin.iOSチームと協力して、下位互換性を維持しながら警告をトリガーしないアプリをストアに送信することができました。 つまり、(現在の)レガシーWebViewRenderer削除しないということです。 いくつかの要因に基づいて、それが解決策であるかどうかをまだ決定していますが、まだ取り組んでおり、準備ができていることを確認します。 少なくとも今、私たちはいつ準備ができるかを知っています😄あなたの忍耐に感謝します!

みなさん、素晴らしいニュースです! すぐに使用できるようにするための最終的な修正があります。

それはあなたの側で少しの作業を必要とします、私は現在それが何であるかを説明する少しのドキュメントに取り組んでいます。 心配しないでください、それほど複雑ではありません!

それがライブで、すべてのビットが利用できるときはいつでも、ここに投稿します。 確固たる約束はありませんが、4月の締め切りのかなり早くそしてかなり前になるはずです。

繰り返しになりますが、これに固執していただきありがとうございます!

解決策はここにあります!

すべてのビットが整っている、解決時間! TL; DR:すべてはこのドキュメントのここに記載されてい

安定したチャネルで最新のVisualStudio(Mac用)を使用していることを確認してください。これにより、正しい方向に進むことができます。 現時点では、Xamarin.Forms4.5-pre1プレビューリリースを使用する必要があります。 これがすべての人にとって選択肢ではないかもしれないことを理解していますが、安定したパッケージは締め切りのかなり前に出ますのでご安心ください。 Stable4.5は2月中旬から下旬に予定されています。

最後に、iOSの追加のmtouch引数設定に--optimize=experimental-xforms-product-typeフラグを設定すると、Appleによる非推奨の警告を取り除く必要があります。 もちろん、 UIWebViewへの独自の参照がない場合は🙂

できるだけ早くお試しいただきたいと思います。 フォームプレビューパッケージに基づいて実際の新しいバージョンをストアにリリースするのではなく、少なくともビルドをアップロードして、このソリューションが正しく機能することを確認してください。 いつでも、4.5安定パッケージに更新して、自信を持って新しいバージョンをリリースできます。

このソリューションで何かに遭遇した場合は、直接私に連絡するか(gerald.versluis [ロングテール付き] microsoft.com)、リポジトリで新しい問題を開いてください。 もちろん、正のフィードバックも常に高く評価されています😉

ありがとうございました!

このページは役に立ちましたか?
0 / 5 - 0 評価