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