Daydreamアプリの審査と対処法

##背景
2017年3月現在Daydream対応アプリはgoogleでの審査が行われており、
審査に落ちるとアプリのgoogle playでの公開はできるものの、
Daydreamのアプリからダウンロードすることができません。
私が頂いたgoogleの審査員（多分人間）からの結果通知と対処法を共有します。

##公式ガイドライン
まずはgoogleの公式ガイドラインである
Daydream App Quality Requirementsを熟読頂ければと思います。
ここに大抵のことは書いてあります。
https://developers.google.com/vr/distribute/daydream/app-quality

##審査の概況
google playに通常通りアプリを公開すれば自動的に審査対象になります。
2017年3月現在はupした日の夜中に審査が行われ結果がメールで返ってきます。

##頂いた審査結果と対策
###・The 360 stereoscopic image does not render correctly - 360度画像が適切に描かれていない
Daydreamアプリとして公開するためには、
storeに360度画像を必ずアップロードする必要があります。
<img width="848" alt="スクリーンショット 2017-02-28 21.53.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/14288/f73ee838-2808-8157-8aa9-de493525244b.png">

で、stereoscopicというところがよくわからなかったので、
とりあえずキャプチャした360画像をアップロードしたら弾かれてしまいました。

そしてこちらが審査に通過した360画像です。
同じような画像が上と下に１つずつ計2つ表示されています。
左右両眼を上下に表示するタイプの画像が必要なようです。

![360image.png](https://qiita-image-store.s3.amazonaws.com/0/14288/117c75ed-9fee-08cc-b59f-041e7d3fb427.png)

こちらのアセットを使えば簡単に撮影できます。
Windowsだと無料のアセットでも撮影できようですが、
Macだと私が調べてみた範囲だとこれしかないっぽい。。。
<img width="797" alt="スクリーンショット 2017-02-28 21.58.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/14288/3304cfe2-12e0-f6f4-df1b-b008291d7396.png">
https://www.assetstore.unity3d.com/jp/#!/content/35102


###・The app switches to a 2-dimensional view unexpectedly - 不意打ちで2D画面に切り替わる
いきなり2D表示されるのが問題なので、例えばこちらに書いてあるように
「スマホを頭から外して手に持って下さい」という誘導が入ればOKのようです。
![ux-d9-permissions-flow.jpg](https://qiita-image-store.s3.amazonaws.com/0/14288/816c7124-5e95-5dac-2500-a27620f5208f.jpeg)
https://developers.google.com/vr/distribute/daydream/design-requirements#UX-D9

###・The app does not suppress system bars - システムバーが隠されない
androidのsystem barを表示しないでくださいという指摘です。
基本的に最新のUnityではimmersive modeになっているため、
androidの操作バーは表示されない仕様になっております。
もちろんテストプレイ中にそのような挙動は無く、
これが一番悩まされましたためgoogle様に質問文章を送ったところ、
下記の回答を頂きました。

>System bar suppression: While testing your app we found that the back/home button system bar pops up immediately after launching from Daydream home. System bars should be suppressed throughout the app experience when the app is launched from either 2D or Daydream.

ということで、Daydream menuから個別のアプリに切り替わる一瞬でも、
システムバーは表示されてはいけないということでした。
確かにその条件だと0.5秒くらい表示されてました。

色々と試行錯誤しましたところどうやらUnity 5.6.0beta9だと、
空のプロジェクトでも発生する問題のようで、
Unityの中の人に状況確認を行い今後のリリースでの改修を約束頂きました。
(b11以降になる模様です)
https://forum.unity3d.com/threads/daydream-bug-causing-google-play-rejection-the-app-does-not-suppress-system-bars.457605/

###・The app does not use the Daydream controller properly throughout the app experience - Daydreamコントローラーがアプリの中で適切に使われていない
2段階でgoogle様からご指摘をいただきました。

**１．Daydreamなんだからコントローラー使おうね**
Daydreamアプリなのですが作っていくうちに
「このアプリ、コントローラ要らないな」と判断して、
Cardboardと同様の視線だけの入力に切り替えたのですが、
やっぱそういうのは駄目っぽいです。

**２．コントローラの大きさが極端に小さいよ**
コントローラを実装したのですがまた不合格を頂き、
こちらも質問したところgoogle様に丁寧な返事を頂きました。
>Controller: A new issue we found on our last review is that the on screen controller image within your app is not the same size as the on screen controller image in Daydream home. The controller should be at scale if shown in the app. Please see attached image.

<img width="1223" alt="Screen Shot 2017-02-24 at 3.59.21 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/14288/4bcb72b3-24f0-0077-a344-1bab528e6363.png">

コントローラーの表示が小さかったようです。
Daydream Homeでのコントローラの表示と同じ大きさが望ましいようです。


###・The app does not exit when the user selects the back button - 　バックボタンを押してもアプリが終了しない
上記画像にもあるようにDaydreamでは左上に”☓”ボタンが現れます。
こちらを押したらアプリが停止するようにする必要があります。
ここは自分で実装する必要があるようです。

こちらの投稿を元に
https://forum.unity3d.com/threads/the-app-does-not-exit-when-a-user-selects-the-back-or-close-button.453939/

例えばこんなコードを何か適当なオブジェクトに貼り付けて審査を通過できました。

```C#:QuiteGame.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class QuiteGame : MonoBehaviour {
	void Update()
	{
		if (Input.GetKey(KeyCode.Escape))
		{
			Application.Quit();
		}
	}

	void LateUpdate()
	{
		GvrViewer.Instance.UpdateState();
		if (GvrViewer.Instance.BackButtonPressed)
		{
			Application.Quit();
		}
	}
}
```

##作ったアプリ
こんなアプリです。いわゆる即死系のゲームです。
自分で言うのも何ですがそれなりに楽しいので、よければお試しください。
[VR FLIGHT DASH]
https://play.google.com/store/apps/details?id=com.deercat.infiniteflight2sign
<img width="512" alt="スクリーンショット 2017-02-20 20.17.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/14288/29d7bbe8-0b36-7549-2391-8f941d4a2973.png">

元ネタはこちらで、
モバイル向けのフライト・ゲームの完成プロジェクトを購入して、
google VR SDKを突っ込んだものになります。
https://www.assetstore.unity3d.com/jp/#!/content/35344
<img width="808" alt="スクリーンショット 2017-02-28 21.34.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/14288/81b45936-4b92-8776-8fd5-8385f9fefdbc.png">

早い者勝ちかと思ったら、
同じことを考えている人が世界にあと二人いたようで、、、

#まとめ
3/5現在最新のUnity5.6.0beta10を用いて作ったアプリは
"FN-U1 App hides the Status Bar and Navigation Bar while in VR."
の項目に引っかかり、Daydreamアプリの審査は通らない模様。

次版以降のリリースで回収されたら追記します。
ちらほらインディースっぽいゲームは既に出ているので、
Unityのバージョンを戻せばバグが発生しないケースもあるかもしれません。

後編はこちら
http://qiita.com/shmyT/items/4b82b1af15ea5dc89aa8#_reference-48624fade5d0b5e6e7ba