App Transport Security(ATS)への対応 - united-adstir/AdStir-Integration-Guide-iOS GitHub Wiki
AdStirのSDKは、v2.5.10よりApp Transport Securityに対応しております。
AdStir SDKのv2.5.10以降では、自動的にAdStirからのリクエストをすべてSSLを用いて行います。 デベロッパー様は、最新版のSDKに差し替えて頂くだけで、特別な改修は必要ありません。 ただし、弊社以外がリリースしているSDKを含む場合においてはその限りではございませんので、各広告メニュー毎のドキュメントに記載の注釈を必ずご覧下さい。
ATSが有効なiOS9以降のOSでは、すべてのネットワーク通信がSSL経由で行われる必要があります。 そのため、AdStirがATSに対応していても、対応提携ネットワークやデベロッパー様が用意されたカスタムネットワークのタグがSSLに対応していない場合、広告の配信が正常に行われません。
デベロッパー様の用意されたカスタムネットワークの広告タグにつきましては、AdStirのシステムはSSLに対応しているものとして配信いたします。 ですが、前述の通りSSLに対応していない広告タグはiOS9以降の端末では正常に広告が表示されないため、SSLに対応した広告タグに差し替えていただく必要がございます。
ただし、万が一非対応の広告タグが配信され、広告が正常に表示できなかった場合などには、AdStirの広告在庫検知機能により、自動的にAdStir CPCの広告が配信されますので、収益機会の損失を抑えることができます。
動画リワード広告やメディエーションSDKをご利用の場合、同時に利用されるネットワークのSDKによっては、ATSに対応していない場合がございます。 その際、それらのネットワークの広告を表示するためには、ATSを無効化する必要があります。 詳しくは、動画リワード広告やフルスクリーンインタースティシャル広告の場合には該当のドキュメントを、メディエーションSDKの場合は、ご契約されているネットワークに、お問い合わせください。
独自にWebViewを作成して掲載する場合、下記のいずれかに対応する必要があります。
- 掲載するページがhttpsであること
より正確には、JavaScriptで
window.location.protocol
を評価した結果が"http:"
の文字列となること - 呼び出しパラメータのadstir_vars.secureにtrueが設定されていること
具体的には、下記のような記述になっていれば、ATSに対応が可能です。
<script type="text/javascript">
var adstir_vars = {
ver : "4.0",
app_id : "MEDIA-9876abcd", // 適切なパラメータに変更してください
ad_spot : 99, // 適切なパラメータに変更してください
center : false,
secure : true // このパラメータを追加する
};
</script>
<script type="text/javascript" src="https://js.ad-stir.com/js/adstir.js?20130527"></script>
メディエーションSDKを利用されている場合、ATSには対応しておりません。 iOS9以降で動作させるアプリを作成される場合には、下記のATSの無効化が必要です。
v2.5.10以降のAdStir SDKは、設定を変更することでSSL通信を無効化できます。 ただし、特別な事情が無い限り、この設定はお勧めいたしません。
■Objective-Cの場合
[AdstirConfig setSSLModeEnabled:NO];
■Swiftの場合
AdstirConfig.setSSLModeEnabled(false)
ビルド時の設定によりATSを無効化するには、下記の手順を実行します。 プロジェクト内にある、Info.plistファイルをSource Codeモードで開き、下記の記述を追加します。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
この設定は、iOS9から強化されたセキュリティを無効にする方法であるため、最終手段としてお使いいただく事をお勧めいたします。