7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

【SwiftUI】ウィンドウを複数開けなくしたらリジェクトされた👀

Last updated at Posted at 2023-07-18

はじめに

SwiftUIでmacアプリを作成すると、デフォルトではウィンドウを複数開けるようになっています。
ウィンドウを複数開けないようにするには、@mainがついたApp構造体に.commandsをつけて、CommandGroup(replacing: .newItem) {}を追加します。

.commands {
    // ウィンドウグループにこれをつけるとウィンドウを複数開けなくなる
    CommandGroup(replacing: .newItem) {}
}

これでウィンドウを複数開けなくなります。
しかし、このままApp Storeの審査に出すとリジェクトされてしまいます。

リジェクト内容

リジェクトされた内容は以下の通りです。

原文

Guideline 4.0 - Design

We noticed an issue with your app's user interface that contributes to a lower-quality user experience than App Store users expect.

Specifically, we found that when the user closes the main application window there is no menu item to re-open it.

Next Steps

It would be appropriate for the app to implement a Window menu that lists the main window so it can be reopened, or provide similar functionality in another menu item.

Alternatively, if the application is a single-window app, it might be appropriate to save data and quit the app when the main window is closed.

和訳(DeepL翻訳)

ガイドライン4.0 - デザイン

あなたのアプリのユーザーインターフェイスに、App Storeのユーザーが期待するよりも質の低いユーザーエクスペリエンスにつながる問題があることに気づきました。

具体的には、ユーザーがアプリケーションのメインウィンドウを閉じたときに、それを再び開くためのメニュー項目がないことがわかりました。

次のステップ

このアプリは、メイン・ウィンドウを一覧表示し、再度開くことができるウィンドウ・メニューを実装するか、別のメニュー項目で同様の機能を提供するのが適切でしょう。

あるいは、アプリケーションがシングルウィンドウアプリの場合、メインウィンドウが閉じられたときにデータを保存してアプリを終了するのが適切かもしれません。

対応方法

リジェクトを回避するために、ウィンドウを閉じたときにアプリを終了するようにします。

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onDisappear {
                    // ウィンドウが閉じられたらアプリを終了する
                    NSApplication.shared.terminate(self)
                }
        }
        .commands {
            CommandGroup(replacing: .newItem) {}
        }
    }
}

こうすることで、ウィンドウを閉じたときにアプリが終了できます。
これでリジェクトを回避できます。

まとめ

macアプリのリジェクト事例と対応方法を紹介しました。この記事が参考になったという方は、いいねとフォローしていただけると嬉しいです😊

7
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?