Guideline 1.3 - Safety - Kids Category

# はじめに
[みんなの命を守ろう大作戦](https://apps.apple.com/us/app/%E3%81%BF%E3%82%93%E3%81%AA%E3%81%AE%E5%91%BD%E3%82%92%E5%AE%88%E3%82%8D%E3%81%86%E5%A4%A7%E4%BD%9C%E6%88%A6/id1548242204)というアプリをリリースしました。
小学校３年生の児童が医療従事者の実際の声を授業で聞き、コロナ禍で自分たちができることを考えて、それをアプリとするべく企画、デザインに必要なイラストを作りアプリ化したものです。

この授業の内容は[こちら](https://www.kyobun.co.jp/news/20210205_06/)を参照してください。

話は戻りますが、このアプリをリリースする上で知ったことを共有します。
このアプリは、年齢制限の箇所に子供向けに制作９〜１１歳としてリリースしました。
（こちらは当初そうしていなかったのですが、概要欄に「これは小学校３年生のクラスのみんながプロのデザイナー、プログラマー、ミュージシャンと共同開発したアプリ」と記載したため審査指摘されてそうなりました。）

その時に「Guideline 1.3 - Safety - Kids Category」のリジェクトされてその対策がユニークだったので共有します。

# リジェクト本文とその対策
下記のような指摘と共にリジェクトされてしまいました。
おそらくWebViewが入っており今までの活動記録が見えるように今後していくホームページを表示している箇所が原因のようです。
要点は「**You must also ensure that the parental gate cannot be disabled.**」（また、ペアレンタルゲートを無効にできないようにする必要があります。）とあり検索するとこのような記事が出てきました。

- [子供向け教育iPhoneアプリの審査が通らなかった時の解決法](https://kawaidesu.hatenablog.com/entry/2014/06/06/100758)

この記事によると原因機能を簡単に発動できないように親による承認ができるような仕組みを導入する必要があるそうです。

【原文】

```
Guideline 1.3 - Safety - Kids Category


You have selected the Kids category for your app, but it includes links out of the app or engages in commerce without first obtaining parental permission.

Next Steps

To resolve this issue, please update your app to add a parental gate before the user can leave the app or engage in commerce. You must also ensure that the parental gate cannot be disabled.

Resources

For more information on parental gates, please review the Kids Apps resource page.
```

# 対策

[こちらの記事](https://kawaidesu.hatenablog.com/entry/2014/06/06/100758)同様に足し算をさせることにしました。
このアプリはSwftUIでほぼできているためこのような感じに実装しました。

必要な変数を宣言します。

```Swift
    @State private var isShowingAlert = false
    @State private var alertInputText = ""
    @State private var alertMessage = ""
    @State private var alertCheckResult = ""
    @State private var isShowAppAbout = false
```

ボタンの箇所をこのようにします。今回は、[【SwiftUI】TextField付きAlertを表示する](https://www.yururiwork.net/%E3%80%90swiftui%E3%80%91textfield%E4%BB%98%E3%81%8Dalert%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/)にある`TextFieldAlertView`を使わせていただきました。

```Swift
                    Button(action: {
                        let num1 = Int.random(in: 10..<100)
                        let num2 = Int.random(in: 10..<100)
                        alertMessage = "\(num1) + \(num2) = ?"
                        alertCheckResult = "\(num1 + num2)"
                        isShowingAlert = true
                    }) {
                        Text("アプリ紹介")
                            .font(.system(size: 20, weight: .black, design: .default))
                            .foregroundColor(Color(hex: "707070"))
                            .padding()
                            .frame(width: buttonLargeSize)
                            .background(Color.white)
                            .border(Color(hex :"707070"), width: 1)
                    }
                    TextFieldAlertView(
                        text: $alertInputText,
                        isShowingAlert: $isShowingAlert,
                        placeholder: "答え",
                        isSecureTextEntry: false,
                        title: "あなたは大人ですか？",
                        message: alertMessage,
                        leftButtonTitle: "Cancel",
                        rightButtonTitle: "OK") {
                    } rightButtonAction: {
                        if alertInputText.hasPrefix(alertCheckResult) {
                            isShowAppAbout = true
                        }
                        alertInputText = ""
                    }
                    NavigationLink(
                        destination: AboutView(),
                        isActive: $isShowAppAbout,
                        label: {
                            //empty
                        })
```

# 最後に
[みんなの命を守ろう大作戦](https://apps.apple.com/us/app/%E3%81%BF%E3%82%93%E3%81%AA%E3%81%AE%E5%91%BD%E3%82%92%E5%AE%88%E3%82%8D%E3%81%86%E5%A4%A7%E4%BD%9C%E6%88%A6/id1548242204)は、ほぼSwiftUIで作成したアプリとなっています。
初めてSwiftUIアプリをリリースできてうれしく思います。リリースは児童の担任の先生が行っていますが貴重な体験ができました。
微力ながらプログラミング授業にも参加できました。児童が将来この活動から開発者になりたいって思うことがあれば嬉しく思います。