Uno Platform 2.0(プレリリース版)のWebViewコントロール
今回のサンプルアプリは、SQLiteデータベースに格納してあるWebページのデータを画面上部のリストに一覧表示するとともに、データを選択したときにそのWebページを画面下部のWebViewコントロールで表示しています(次の画像)。
このWebViewコントロールは、iOS/Androidでは使用上の注意事項があります。また、WebASMではWebViewコントロールがまだ提供されていないので、自作することになりました。
iOSでのWebViewコントロール
iOSでは、既定でWebViewコントロールが表示できるURLはhttpsだけです。既定ではhttpを表示できないのです。httpも表示するには、info.plistに次のようにNSAppTransportSecurityプロパティを追加します(次のコードと画像)。
<?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>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
</dict>
</plist>
iOS 10以降では、上のようにNSAllowsArbitraryLoadsInWebContentをtrue(Yes)にすればhttpも表示できるようになりますが、App Storeへの提出が制限されます。また、iOS 9ではNSAllowsArbitraryLoadsを使いますが、App Storeでの審査はより厳しくなると思われます。
AndroidでのWebViewコントロール
Androidも、iOSと同様に既定ではWebViewコントロールでhttpを表示できません。httpも表示するには、AndroidManifest.xmlのapplicationタグにusesCleartextTraffic属性を追加します(次のコード)。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="UF16" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28" />
<application android:label="UF16"
android:usesCleartextTraffic="true"></application>
</manifest>
