簡體   English   中英

WebView沒有在Xamarin Forms for IOS中顯示任何內容

[英]WebView is not showing anything in Xamarin Forms for IOS

我是這種開發的新手。 我正在Visual Studio 2017中為IOS開發Xamarin Forms。我工作的公司需要該應用程序將特定url的html內容顯示到WebView中。 我這樣做了,我使用了可以很好顯示內容的不同URL進行了測試,但是在http URL中使用IP時,它什么也沒有顯示。 這樣的事情(顯然我用X代替了真正的Ip):

HTTP://XX.XX.XX.XX:9090 /銀行/ initAppn1.start()

據我所知,出於安全原因,Apple限制在URL中使用IP(最重要的是,如果應用程序將部署在商店中,則最為重要),並且當使用諸如HTTP之類的不安全協議時,文檔指出:“自版本9開始,iOS僅允許您的應用程序默認情況下與實現最佳實踐安全性的服務器進行通信。必須在Info.plist中設置值以啟用與不安全服務器的通信”。 為了使特定的域能夠根據文檔繞過ATS要求,我在info.plist中這樣做:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>UIDeviceFamily</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationPortraitUpsideDown</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>MinimumOSVersion</key>
    <string>6.0</string>
    <key>CFBundleDisplayName</key>
    <string>TestMobile</string>
    <key>CFBundleIdentifier</key>
    <string>com.yourcompany.TestMobile</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>CFBundleIconFiles</key>
    <array>
        <string>Icon-60@2x.png</string>
        <string>Icon-76.png</string>
        <string>Icon-76@2x.png</string>
        <string>Default.png</string>
        <string>Default@2x.png</string>
        <string>Default-568h@2x.png</string>
        <string>Default-Portrait.png</string>
        <string>Default-Portrait@2x.png</string>
        <string>Icon-Small-40.png</string>
        <string>Icon-Small-40@2x.png</string>
        <string>Icon-Small.png</string>
        <string>Icon-Small@2x.png</string>
    </array>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen.storyboard</string>
    <key>CFBundleShortVersionString</key>
    <string></string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>XXX.XX.XX.XX:9090</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
        </dict>
    </dict>
</dict>
</plist>

我什么都沒顯示! 之后,我嘗試僅使用IP地址來刪除域中的端口,但我也無法正常工作。

之后,我嘗試允許這樣的任意負載:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

什么都顯示!

目前,出於基礎架構原因,客戶端未提供帶有IP的URL的域名,但IP僅用於測試。

有人告訴我,他使用URL中的IP開發了類似的應用程序,並且應用程序正常工作。

順便說一句,在瀏覽器中使用url非常完美!

請您幫忙! 謝謝

我找到了解決方案。 一方面,如果應用程序將在應用程序商店中發布,則不得使用IP,因為IP6兼容性會導致IP被拒絕,這就是我的情況,否則,它可以僅將IP用於內部分發。 另一方面,通過使用不安全的URL(Http),必須將NSExceptionDomains和NSExceptionDomains配置為NSAppTransportSecurity到info.plist中,該URL中沒有根據文檔提供的端口: https : //developer.apple.com/library/content/documentation/General/參考/ InfoPlistKeyReference /用品/ CocoaKeys.html

因此,我使用了沒有端口和NSExceptionDomains的域名,僅此而已。 謝謝!

通過使用:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

您將禁用ATS,它會在“應用程序審查”過程中拒絕您的應用程序,而沒有正當理由。

如您所說,正確的方法是使用NSExceptionDomains字典,其中填充了無法通過HTTPS協議訪問的URL。 禁用Web視圖的ATS的另一種方法是使用密鑰:

NSAllowsArbitraryLoadsInWebContent

如果啟用,則將禁用對來自Web視圖的請求的所有ATS限制。 這樣一來,您的應用可以使用可以顯示任意內容的嵌入式瀏覽器,而無需為其他URL禁用ATS。

參考

我在高空搜尋答案。 原來是高度和寬度的要求

“與大多數其他Xamarin.Forms視圖不同,WebView要求在包含在StackLayout或RelativeLayout中時指定HeightRequest和WidthRequest。如果未能指定這些屬性,則WebView將不會呈現。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM