
iOSアプリ内で他のアプリを自然に紹介し、App Storeへの誘導までをシームレスに行いたいときに便利なのが SKOverlay
です。
現在のアプリの上に別のアプリのプロモーションを自然に表示できるため、自社製品のクロスプロモーションやキャンペーン展開などに広く活用されています。
この記事では、SKOverlay
の基本的な使い方から、引数の意味、注意点までをわかりやすく丁寧に解説します。
SKOverlayとは?
SKOverlay
は、アプリの画面上に小さなApp Storeのバナー(自分の他のアプリ)を表示するための仕組みです。
ユーザーは今開いているアプリを閉じることなく、その場で別のアプリをインストールしたりApp Storeの詳細ページを見たりできます。
たとえば:
- ゲームアプリをプレイ中に「関連ゲームをおすすめするカード」を画面下に表示する
- ニュースアプリで「自社の別アプリをダウンロード」できる導線を出す
こうした場面で SKOverlay
を使えば、自然にApp Storeとつながり、ユーザー体験を損なわずに自分の他のアプリを紹介できます。
基本的な使い方
最もシンプルな SKOverlay
の表示例は以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
import StoreKit func showOverlay() { let config = SKOverlay.AppConfiguration(appIdentifier: "1234567890", position: .bottom) let overlay = SKOverlay(configuration: config) if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene { overlay.present(in: scene) } } |
このコードでは、App Store上のアプリID(App Store Connect の Apple ID)を指定して、画面の下に カードのような小さなバナー を重ねて表示しています。
overlay.present(in:)
で現在の画面(UIWindowScene
)に対して重ねて表示されます。
具体例:SwiftUIでの使い方
SKOverlay
は UIKit ベースのAPIですが、SwiftUI でも UIApplication.shared.connectedScenes
を通じて呼び出すことで利用できます。
ポイントは 「SKOverlay 自体はUIKitクラスだが、SwiftUIのコード内から問題なく呼び出せる」 という点です。
SwiftUIアプリでも裏側では UIWindowScene
が動作しているため、そのシーンを取得して overlay.present(in:)
に渡せば、同じように画面下部のバナー(オーバーレイ)を表示できます。
例えば、SwiftUI のボタンからオーバーレイを表示する処理は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import SwiftUI import StoreKit struct ContentView: View { var body: some View { Button("別のアプリを紹介") { let config = SKOverlay.AppConfiguration(appIdentifier: "1234567890", position: .bottom) let overlay = SKOverlay(configuration: config) // UIWindowScene を取得してオーバーレイを表示 if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene { overlay.present(in: scene) } } } } |
このコードでは、
- AppConfigurationを作成して「どのアプリを」「どこに表示するか」を設定
- SKOverlayオブジェクトを生成
- 現在アクティブな UIWindowScene を取得
- overlay.present(in:) を呼び出して表示
という流れになっています。
SwiftUI でもこのように @MainActor
コンテキスト内(UIスレッド上)であれば問題なく活用できます。
つまり、UIKitに依存する処理ではありますが、SwiftUIアプリからも自然に統合して利用できるのが特徴です。
具体例:全画面表示やトリガー設定も可能
SKOverlay
は画面下部に小さなカード(オーバーレイ)を表示するだけでなく、SKOverlay.AppClipConfiguration
を使って、フルスクリーン表示に切り替えることもできます。
たとえば、ゲームのクリア時や特定のイベント終了時に全画面で別アプリを紹介する、といった使い方が可能です。
ユーザーの没入感を保ちながら強調したいときに有効です。
さらに、オーバーレイの表示位置は SKOverlay.Position
を指定することで調整できます。
.bottom
: 画面下部に固定表示(デフォルト).bottomRaised
: 下部から少し浮いた位置に表示(UIが重ならないようにしたい場合に便利)
1 2 3 4 5 |
let config = SKOverlay.AppConfiguration( appIdentifier: "1234567890", position: .bottomRaised ) |
これには SKOverlay.Configuration(campaignToken: ...)
を利用します。
例えば、広告キャンペーンや特定プロモーションに紐づけて表示する仕組みを構築できます。
このように SKOverlay
では「通常のカード表示」「位置調整」「フルスクリーン表示」「キャンペーン連携」といった柔軟な表現ができるため、アプリの文脈に応じたプロモーション演出を実装できます。
SKOverlayを使うときの注意点
SKOverlay
は便利な仕組みですが、使い方を誤るとユーザー体験を損なったり、思った通りに表示されなかったりすることがあります。
そのため、以下のポイントに注意して実装することが大切です。
-
App IDの指定ミスに注意
Apple ID(10桁の数値)を使う必要があります。バンドルIDを指定しても動作しません。 -
UIWindowScene が nil の場合は表示されない
シーンベースのアプリ構造が前提です。特にマルチウィンドウ対応アプリでは、どのシーンに表示するかを明示的に指定する必要があります。 -
ユーザーのApp Store設定によっては表示されないこともある
機能制限やファミリー共有の設定によっては、オーバーレイが表示されない場合があります。 -
SKOverlay はユーザーが自分で閉じることができるUIです。
開発者が「絶対に閉じられないようにする」といった制御はできません。 -
短時間に何度も表示しないように制御が必要
ユーザー体験を阻害しないように、表示の頻度はしっかり管理しましょう。例えば、特定の画面遷移時だけに限定したり、表示済みフラグを設けて制御するのが効果的です。
これらの点を意識して実装すれば、SKOverlay
を安全かつ自然にユーザー体験へ組み込むことができます。
アプリのプロモーションに活用する際は、単なる宣伝ではなく「ユーザーにとって有益な情報」として提示できるよう心がけると良いでしょう。
まとめ
今回は iOS の SKOverlay
について詳しく解説しました。
SKOverlay
はアプリ内で他のアプリを自然に紹介できる仕組み- App StoreのアプリIDを指定して、オーバーレイ形式で表示
SKOverlay.AppConfiguration
を用いて構成をカスタマイズ可能- SwiftUI でも問題なく利用可能(
UIApplication.shared.connectedScenes
経由) - 表示形式(下部・浮かせる・フルスクリーン)も調整できる
自分の他のアプリを紹介しいたい場合やアプリ連携を行いたい場合に、ユーザー体験を損なわずに導線を追加できる非常に強力な手段です。
App Store審査にも通りやすい公式手段なので、積極的に活用してみましょう。