カテゴリー: iOS

【iOS14】他のアプリを簡単に紹介できるSKOverlay

はじめに

今回はiOS14から使用できるようになった、SKOverlayについて紹介したいと思います。

SKOverlayとは

自分のリリースしている別アプリなどを表示させることができ、ストアに遷移させることでユーザがすぐにアプリ情報にアクセス、インストールが可能になる機能になります。

実装

SKOverlayを実装するにはまず、StoreKitをimportします。

import StoreKit

UIWindowSceneを取得します。

let scene = view.window?.windowScene

表示する情報を設定します、今回表示するアプリは「自分で作る瞬間英作文」になります。

let config = SKOverlay.AppConfiguration(appIdentifier: "1400133600", position: .bottom)

appIdentifierで設定しているIDですが、アプリのページをブラウザで開いた時のURLから取得できます。
今回の「自分で作る瞬間英作文」であれば、ブラウザで開いた時のURLは
https://apps.apple.com/jp/app/id1400133600
になるので、末尾のid「1400133600」を引数に設定しています。

最後にSKOverlayを表示させます。

let overlay = SKOverlay(configuration: config)
overlay.present(in: scene)

すると以下のように表示されます。

表示位置

AppConfigurationのpositionを設定することで表示位置を選択できます。用意されている表示位置は2パターンで「bottom」と「bottomRaised」になり、「bottomRaised」を設定すると以下のような表示になります。

let config = SKOverlay.AppConfiguration(appIdentifier: "1400133600", position: .bottomRaised)

おそらくUITabBarControllerなどフッターにあるコンテンツに被らないように用意されてるものかと思われます。

非表示

SKOverlayはViewControllerではなくUIWindowSceneにpresentするためViewController破棄しても表示され続けます。画面遷移時など適切なタイミングで非表示にする必要があります。

guard let scene = view.window?.windowScene else { return }
SKOverlay.dismiss(in: scene)

delegate

ちなみにSKOverlayはdelegateも用意されており、以下のようなタイミングを検知することができます。

extension ViewController: SKOverlayDelegate {
    // SKOverlayのロードが失敗した時に呼ばれる(不正なappIdentifierなど)
    func storeOverlayDidFailToLoad(_ overlay: SKOverlay, error: Error) {
        
    }
    
    // SKOverlayの表示開始前に呼ばれる
    func storeOverlayWillStartPresentation(_ overlay: SKOverlay, transitionContext: SKOverlay.TransitionContext) {
        
    }
    
    // SKOverlayの表示完了時に呼ばれる
    func storeOverlayDidFinishPresentation(_ overlay: SKOverlay, transitionContext: SKOverlay.TransitionContext) {
    }

    // SKOverlayが非表示開始前に呼ばれる
    func storeOverlayWillStartDismissal(_ overlay: SKOverlay, transitionContext: SKOverlay.TransitionContext) {
    }
    
    // SKOverlayが非表示完了時に呼ばれる
    func storeOverlayDidFinishDismissal(_ overlay: SKOverlay, transitionContext: SKOverlay.TransitionContext) {
        
    }
}

 

さいごに

リンクだけだと味気なかったのが、簡単にインストールが促せる機能ができて使いやすいと思います。レビューへの促しなどStoreKitはいい働きしてますね。

おすすめ書籍

nukky

シェア
執筆者:
nukky
タグ: SwiftiOS

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前