MABS 6.0の互換性を破る変更と既知の制限
一般的な問題と解決策については、「モバイルアプリ生成のトラブルシューティング」もご覧ください。
MABS 6.0 Beta 1リリースによるアプリの作成を開始した後、互換性を破る変更や既知の制限に遭遇する可能性があります。これらの詳細と一部の問題の修正方法を以下に示します。
MABS 6.0での最大の変更は、WKWebViewの導入です。WKWebViewを利用することで、Apple App Storeの受け入れ要件に準拠したモバイルアプリを作成できます。これは、iOS 10のサポートがなくなることも意味します。
互換性を破る変更
MABS 6.0 Beta 1の互換性を破る変更と問題の修正方法を以下に示します。
OutSystemsサーバーに対するXHR/取得リクエストが機能しない
症状
OutSystemsサーバーに対するXHR/取得リクエストが失敗します。
回避策
XML HTTPリクエストのカスタムJavaScriptノードはCORSを実装しているサーバーでのみ機能します。iOSアプリは https://
ではなくoutsystems://
から読み込まれるようになったため、 document.origin
はoutsystems://hostname.domain
を返します。オリジンとターゲットでプロトコルが異なるため、https://hostname.domain
へのリクエストはすべてクロスオリジンと見なされます。このため、OutSystemsサーバーで現在実装されていないCORSがWKWebViewによって適用されます。他のサーバーに対するXHR/取得リクエストは、それらのサーバーがCORSを実装しているかどうかによって異なります。
以下の回避策を試行することができます。
- サーバーアクションを使用します。WKWebViewを備えたMABS 6.0以降、サーバーアクションの呼び出しはXHRではなくネイティブコードにより実行され、CORS検証が適用されません。
- サーバーにCORSを実装します。バックエンド構成にアクセスできる場合は、CORSが適切に実装されていることと、アプリケーションのoriginヘッダーの値が許可されていることを確認します。
- cordova-plugin-advanced-httpなどのCordovaプラグインを使用し、(WKWebView以外の)ネイティブコードを使用してHTTPリクエストを「プロキシ」し、CORSを完全に回避します。
OutSystemsサーバーのCookieにdocument.cookieからアクセスできない
症状
OutSystemsサーバーのCookieにdocument.cookie
からアクセスできません。
回避策
MABS 6.0ではdocument.cookie
を利用できないため、Cookieを表示するには内部APIを使用します。OutSystemsNative.Http.getCookies()
.
RedirectToURLイベントが失敗する
症状
MABS 6.0でRedirectToURLイベントが失敗します。
回避策
MABS 6.0以降のiOSアプリケーションはhttps://
ではなくoutsystems://
で読み込まれるため、別のOutSystemsアプリへの絶対URLによるリダイレクトは失敗します。
以下の回避策を試行することができます。
- MABS 6.0: iOSの場合はカスタムスキーマ
outsystems://
を使用し、Androidの場合はhttps://
を使用します。 - MABS 5.X以前: iOSの場合もAndroidの場合も
https://
を使用します。 - 様々なMABSバージョンやプラットフォームをターゲットにしている場合は、使用中のプラットフォーム(MABS 6.0以前)を確認して正しいURL(
outsystems://
またはhttps://
)を設定するカスタムロジックを実装します。 - 可能な限り相対URLを使用します。
- ベストプラクティスとして、InAppBrowserプラグインを使用してURLを開きます。これにより、現在のアプリケーションのコンテキストが維持されます。
既知の制限
MABS 6.0 Beta 1の既知の制限を以下に示します。
Webインスペクタでネットワーク情報が表示されない
症状
SafariのWebインスペクタでサーバーアクションのリクエストに関するネットワーク情報が表示されません。
回避策
現在、回避策はありません。OutSystemsのロードマップでは、このトラブルシューティングの代替機能の提供を予定しています。Webインスペクタのその他の機能は利用できます。