Skip to main content

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

Template:OutSystems/OSLanguageSwitcher
Language:

 

 

 

 

 
OutSystems

MABS 6の互換性を破る変更と既知の制限

一般的な問題と解決策については、「モバイルアプリ生成のトラブルシューティング」もご覧ください。

MABS 6によるアプリの作成を開始した後、互換性を破る変更や既知の制限に遭遇する可能性があります。問題と解決方法の詳細については、こちらのドキュメントをご覧ください。

MABS 5と比較した場合、MABS 6で最も重要な変更はWKWebViewの導入です。WKWebViewを利用することで、App Storeへのアプリのパブリッシュに関するAppleの要件に準拠したモバイルアプリを作成できます。これは、iOS 10のサポートがなくなることを意味します。

互換性を破る変更

MABS 6の互換性を破る変更のリストを以下に示します。また、この変更によって生じる可能性のある問題を修正する方法の手順についても説明しています。

OutSystemsサーバーに対するXHR/取得リクエストが機能しない

症状

OutSystemsサーバーに対するXHR/取得リクエストが失敗します。

回避策

XML HTTPリクエストのカスタムJavaScriptノードは、CORSを実装しているサーバーでのみ機能します。iOSアプリはhttps://ではなくoutsystems://から読み込まれるようになったため、document.originoutsystems://ホスト名.ドメインを返します。オリジンとターゲットでプロトコルが異なるため、https://ホスト名.ドメインへのリクエストはすべてクロスオリジンとみなされます。 このため、OutSystemsサーバーで現在実装されていないCORSがWKWebViewによって適用されます。他のサーバーに対するXHR/取得リクエストは、それらのサーバーがCORSを実装しているかどうかによって異なります。

以下の回避策を試行することができます。

  • サーバーアクションを使用します。WKWebViewを備えたMABS 6以降、サーバーアクションの呼び出しはXHRではなくネイティブコードにより実行され、CORS検証が適用されません。
  • サーバーにCORSを実装します。バックエンド構成にアクセスできる場合は、CORSが適切に実装されていることと、アプリケーションのoriginヘッダーの値が許可されていることを確認します。
  • cordova-plugin-advanced-httpなどのCordovaプラグインを使用し、(WKWebView以外の)ネイティブコードを使用してHTTPリクエストを「プロキシ」し、CORSを完全に回避します。

OutSystemsサーバーのCookieにdocument.cookieからアクセスできない

症状

OutSystemsサーバーのCookieにdocument.cookieからアクセスできません。

回避策

MABS 6ではdocument.cookieを利用できないため、Cookieを表示するには内部APIのOutSystemsNative.Http.getCookies()を使用します。

RedirectToURLイベントが失敗する

症状

MABS 6でRedirectToURLイベントが失敗します。

回避策

MABS 6以降のiOSアプリケーションはhttps://ではなくoutsystems://で読み込まれるため、別のOutSystemsアプリへの絶対URLによるリダイレクトは失敗します。

RedirectToURLイベントプロパティ

以下のRedirectToUrlの回避策を試行することができます。

  • MABS 6: iOSの場合はカスタムスキーマoutsystems://を使用し、Androidの場合はhttps://を使用します。
  • MABS 5.X以前: iOSの場合もAndroidの場合もhttps://を使用します。
  • 様々なMABSバージョンやプラットフォームをターゲットにしている場合は、使用中のプラットフォーム(MABS 6以前)を確認して正しいURL(outsystems://またはhttps://)を設定するカスタムロジックを実装します。

また、可能な限り相対URLを使用します。

ベストプラクティスとして、InAppBrowserプラグインを使用してURLを開きます。これにより、現在のアプリのコンテキストが維持されます。InAppBrowserプラグインを使用する場合は、MABSのバージョンにかかわらず、Androidの場合もiOSの場合も常にhttps://を使用する必要があります。

既知の制限

MABS 6の既知の制限を以下に示します。

Webインスペクタでネットワーク情報が表示されない

症状

SafariのWebインスペクタでサーバーアクションのリクエストに関するネットワーク情報が表示されません。

回避策

2020年1月以降、MABS 6にはネットワークインスペクタ機能が含まれます。アプリを再作成し、この機能を使用してiOSでのアプリのネットワークの問題をトラブルシューティングします。

コンテンツセキュリティポリシーを使用すると、iOSで画像がレンダリングされない

症状

MABS 6でモバイルアプリを生成した後、iOSでアプリを実行する際に、一部またはすべての画像、フォント、動画、スクリプト、スタイルシートの各リソースが読み込まれません。Safariで検査時すると、以下のようなエラーメッセージが1つ以上コンソールに表示される場合があります。

Refused to load the image 'http://subdomain.example.com/path/to/image' because it violates the following Content Security Policy directive: "img-src 'self' data: subdomain.example.com blob:".

原因

MABS 6の一部の変更では、モバイルアプリをiOSデバイスでの実行するときにoutsystems://で読み込む必要があるため、そのようなホストからリソースを読み込む際に、それほど厳格ではないコンテンツセキュリティポリシー(CSP)のディレクティブ(img-src 'self' data: subdomain.example.comなど)に違反します。Androidで実行するときには、このような違反は発生しません。MABS 5と同様に、Androidでは引き続きhttps://を使用してアプリケーションを読み込むためです。

回避策

この問題は、モバイルアプリ用のCSP構成を更新し、すべてのURLの式にhttps://のプレフィックスを付けることで解決できます。ドキュメント「コンテンツセキュリティポリシーを適用する」にいくつかの例があります。