1
1

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 3 years have passed since last update.

Guideline 1.3 - Safety - Kids Category

Posted at

はじめに

みんなの命を守ろう大作戦というアプリをリリースしました。
小学校3年生の児童が医療従事者の実際の声を授業で聞き、コロナ禍で自分たちができることを考えて、それをアプリとするべく企画、デザインに必要なイラストを作りアプリ化したものです。

この授業の内容はこちらを参照してください。

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

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

リジェクト本文とその対策

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

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

【原文】

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.

対策

こちらの記事同様に足し算をさせることにしました。
このアプリはSwftUIでほぼできているためこのような感じに実装しました。

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

    @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を表示するにあるTextFieldAlertViewを使わせていただきました。

                    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
                        })

最後に

みんなの命を守ろう大作戦は、ほぼSwiftUIで作成したアプリとなっています。
初めてSwiftUIアプリをリリースできてうれしく思います。リリースは児童の担任の先生が行っていますが貴重な体験ができました。
微力ながらプログラミング授業にも参加できました。児童が将来この活動から開発者になりたいって思うことがあれば嬉しく思います。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?