Background Modes; fetch を使用したアプリがリリースされるまでの話
結論
Background Modes; fetch を使用したアプリを出すときは、デモビデオが必要
これはなに
12/06に「進捗アプリ」という進捗管理アプリをリリースしました。
リリースするまでのAppleとのやり取りなどをまとめようと思います。
ちなみにここからダウンロードできるのでよかったら。
https://itunes.apple.com/jp/app/jin-buapuri/id750875336?mt=8
Background Modes; fetch とは
iOS7からアプリは完全にマルチタスクになりました。
それに伴い、いくつかのバックグラウンドタスクを利用できるようになりました。
fetch とは、「あるタイミングでOSがアプリに通知を送る」という機能です。
あるタイミングとは、アプリを何回か起動するとその時間をOSが覚えていて、
それ以降はだいたいその時間に通知が飛んでくるようです。
XcodeではCapabilityのここで設定します。
以下からは、リリースまでを時系列で追っていきます。
コーディング(11/13-11/15)
卒論でJavaScriptやActionScriptのスクリプト言語を扱っているので、
「たまにはガッツリコード書きたいですね」という欲にかられて適当に作りはじめました。
ほんとうは一日で済ますつもりだったけど三日かかってしまった。
Storyboardを使う、アイコンを書かずにUIKitに備わっているので済ます、設定は作らない、という
アプリを作る上で最も工数を使う部分をできるだけ省いたのですが。まだまだですね。
あんまり○日で、とか言うとスーパーIT高校生になってしまうのでやめておく
アプリ申請(11/15)
コーディングを終わらせて、App Storeに申請。久しぶりすぎて証明書まわりでちょっとつまづく
一週間ほど待つ。
Reject - 1回目 (11/22)
リジェクトされました。内容はこんな感じ。
Apple「Background fetchを使ってるようだけど、どこで使ってるからわからん。使ってる様子がわかるようにDemoを用意してね。あとはオッケー。」
なるほど〜という感じでした。それじゃあしょうがないなと思い、適当にDemo Videoを作成して自分のWebサイトにうpして、そのリンクをMetaDataに書いて再提出。
ちなみにfetch イベントは割とランダムに送られてくるので、まさに通知されるタイミングなんてのはずっと監視してないとわからんぞ…と撮っていたのですが、案の定撮れなかったので通知が来た後だけ載せておきました。
Reject - 2回目 (11/26)
だいたい2-3営業日で再レビューしてもらえるようです。しかしまたリジェクトでした。
Apple「なんかムービー再生できないんだけど」
!!??
まさかそんなことはないと思って自分のMac, iPad miniで確かめてみるも再生できる。
ちなみにmp4ファイルでした。
リジェクトコメントにリプライ。
だいちろ「うちのSafariでは再生できるんだけど、何がだめだったんですか」
それから1日後にリプライが来ました。
Apple「あーそれとね、あなた『通知が送られたまさにそのタイミングは撮れない』って書いたじゃん。次はそのタイミングを撮ってちょうだい。頼むわ」
これは難癖つけてリリースさせない気か、とちょっと暗雲たちこめる。
ちなみに会話は双方全部英語です。意訳してあります
その日のうちにiPhoneに張り付いてなんとか通知タイミングが来た瞬間をおさめたビデオを撮る。
4時間くらいかかりました。タイミングまじでわからんのだもん。
今度はm4vにしました。
In Review(12/4)
今までは2-3営業日でレビューに入っていたのに、ずいぶん時間がかかった。
この時期のせいなのか、なんなのかは不明。
それから1日強かかって無事にリリースされました。よかった。
まとめ
Background fetch、ユーザの方でオンオフできないっぽい?[要出典]ので確かにリリースには慎重になるかなと思いました。
mp4とm4v、ほとんど同じ規格なのに再生できる/できないのは大人の事情だったのかなと思ってみたり。
mp4が再生できないとなると、レビュワーは何者なのだ…
おまけ
Demo Videoですが、リジェクト時期が学会準備等で忙しくてググれなかったので
iPhoneとiPadを固定して撮影し続けるという荒技をつかいました。
なんかもっとスマートにiPhoneの画面を記録する方法あるような…
さらにおまけ
進捗アプリのすべてのソースコードは,Githubに置いてあります。
https://github.com/mokumoku/ShinchokuApp