Creating Parental Control

このチュートリアルでは3つの一般的なペアレンタルコントロールについて説明します。Lua プログラミングの知識が若干必要です。

Childrens's Online Privacy Protection Act,またはCOPPAの変更によって,以下のようなアプリケーションには、子供向けのセキリティへの配慮が必要です。

  • 外部のコンテンツへのアクセス(ウェブサイトや,レビューやレイティング,Facebookの"いいね"など)
  • ユーザーが未成年であるとき,ユーザーの情報を収集したり、アプリケーション内での無許可でのアイテム購入.

これらは非常に重要です。これらの要求は、ユーザーの両親にサービスを提供したいと考えている開発者は対処を行わければいけません。子供が成人向けのコンテンツにアクセスするのを避けるためには,ペアレンタルコントロールやセキュリティ設定が必要です.

Moms With Apps websiteでは様々なサイトでの対応例についての記事が投稿されています.参考例として読むことを強く推奨します

例えば簡単な計算を行うだけのアプリだったら,ペアレントルコントロールは必要ありません.しかし、ウェブサイトへのリンクを貼るような外部への誘導があった時点で,アプリストアの子供向けアプリとしてのガイドラインを守る必要があります。


ジェスチャーによるコンテンツへのアクセス

アプリ内課金やアプリ設定、外部リンクへのアクセスする時に、"特有"のジェスチャを設定しておくというものです。

Justin's World(Nosy Crow)ではこのオプションを使用しています:

Interactionsのツールセットのピンチやスワイプといったコマンドがあります。ボタンへのタッチは、指一つで行えますが、ピンチ(Pinch)のような動作には2本の指を使う必要があります。上記の例では,指一つでの通常のスワイプ(もしくはドラッグ)では、機能が動作しません。指一つの動作は、どんな子供でも出来てしまうので,try and errorを繰り返しているうちに、ボタンが動作してしまいます。

では,Kwikで指2つで行う動作を有効にする方法について解説します。

ドラッグを複数の指で動作するようにしたり,ドラッグ完了したらparent controlを解除するように設定を変更します。

draggingのluaファイルを手動で編集する必要があります./components/pageXXX/layer_drag.luaをテキストエディターで開きます。

singlemultiに変更してください

Before

function _M:allListeners(UI)
    ...
     _K.MultiTouch.activate( dragLayer, "move", "single", {} )
    ...
end

After

function _M:allListeners(UI)
    ...
     _K.MultiTouch.activate( dragLayer, "move", "multi", {} )
    ...
end

注意 スワイプ(Swipe)は複数の指での動作に対応していません


クイズを通してのコンテンツへのアクセス

このアプローチの仕方はとても一般的な方法です.与えられた問題とユーザーの回答に応じて,アクセスが解除されます.直接答えを入力するテキスト入力のモードや,複数の選択肢の一つを選択する形式などが利用が可能です。

77Sparxは大人であるかどうかを,算数の問題で検証します.

もし複数の選択性の問題を使う場合,Creating a Quiz tutorialをご覧ください.基本は一緒です.


時間を利用したジェスチャーでのコンテンツへのアクセス

これは最近一般的になってきた方法です.決められた時間の間、ボタンを押し続ける,もしくはスワイプするというものです.例では press the button for 5 seconds ボタンを5秒間押し続ける方法が採用されています。Rocket GamelabsのチームがKwikでこのアプローチの仕方を最初に導入しました.

外部コードを利用した仕組みが必要です。

  • Variables(変数)
    • timed as number
    • message as formula
  • Button press
    • timed = 0
    • Timer every 1 second
  • Action for Timer
      if layer.type == "press" then
          if timed == 5 or message == "Released" then
              message = "Release"
              timed = 0
          else
              timed = timed + 1
              message = timed .."s"
          end
      else -- release
          if message == "Released" then
              action for unlocking the parental control, for instance goto Page
          else
              timed = 0
              message = timed .."s"
          end
          cancel timer
      end
    
  • button lua に onRelease = onTimeBtnEventRelease を追加

    components/pageXXX/layer_button.lua

    Before

      local function onEvent(self)
          if layer..enabled == nil or layer..enabled then
              layer..type = "press"
          -- (layer.)
              self.scene:dispatchEvent({name="__", layer=layer.})
          end
      end
      layer. = widget.newButton {
          id          = "",
          defaultFile = _K.imgDir..imagePath,
          overFile    = _K.imgDir..".",
          width       = imageWidth,
          height      = imageHeight,
          onRelease   = onEvent
      }
    

    After

      local function onEvent(self)
          if layer..enabled == nil or layer..enabled then
              layer..type = "press"
              self.scene:dispatchEvent({name="__", layer=layer.})
          end
      end
      --
      local function onEvent_Release(self)
          if layer..enabled == nil or layer..enabled then
              layer..type = "release"    
              self.scene:dispatchEvent({name="__", layer=layer.})
          end
      end
      --
      layer. = widget.newButton {
          id          = "",
          defaultFile = _K.imgDir..imagePath,
          overFile    = _K.imgDir..".",
          width       = imageWidth,
          height      = imageHeight,
          onPress     = onEvent
          onRelease   = onEvent_Release
      }
    

Enjoy!

results matching ""

    No results matching ""