2013年05月24日

2.21リジェクト顛末記1−SakuttoBookが審査に通るまで

 2013年3月5日に日本でiBookstoreが始まり、その日を境にしてアメリカと同じように単体のブックアプリがリジェクトされるようになった。SakuttoBookも例外でなく、ことごとく審査に落ちた。このままではSakuttoBookは死んでしまうではないか。審査に通す方法を模索する日々が始まった。SakuttoBookユーザーのご協力を得ながら、やっと自社アプリを申請して通すことができるようなった。

 ブックアプリを通す方法を結論から言うと、

・ビューワーアプリ(あるいはストアアプリ)
・サーバダウンロード


が条件である。トリビア系のアプリのようにテーブルでディレクトリを重ねてコンテンツを細切れのカード型にすると通る可能性はあるが、一般的な電子書籍としては、上記の方法しかなさそうだ。今回は自前のコンテンツを複数揃えるのが難しくなったので青空文庫のコンテンツを使用した。昨年著作権が切れた吉川英治氏の「宮本武蔵」をPDF化してコンテンツを揃えた。そして審査に通ったのが

◆JIPPO BOOKS(十方ブックス)
https://itunes.apple.com/jp/app/jippo-books-shi-fangbukkusu/id631021450?&mt=8

である。

  SakuttoBookは今回のバージョンで、コンテンツのサーバダウンロードに対応し、iPhone 5用のレイアウトにも対応した。マーカー機能を追加して、サーバコンテンツの組み方向を個別に指定できるようになった。


 App Storeアプリのリジェクトには大きくいって二種類がある。それは

iOSの仕様の変更によるもの
Appleのポリシーのよるもの


である。iOSの仕様変更によるものは対応が分かりやすい。Xcodeを書き換えればいいだけなので、プログラムを修正するだけでよい。ただし、こういう仕様の変更は年に1〜2回はある。

 今年も5月にUDIDにアクセス可能な古いコードを使っているアプリは審査が通らなくなった。これらコードを削除すればよい。SakuttoBookも古いコードを使用しており、アップロードできないことがあった。これはリジェクト以前らアップロードしたときに「Invalid Binary」で刎ねられる。審査を待って落とされるよりましだろう。

 このときのアップロードできない理由は「Non-public API usage:(非公開APIの使用)」というもので、いままでXcodeで仕えていたコードがいつの間にか「Non-public API」扱いになってしまった。正しくはiOS 6からNon-public API扱いになったというわけだ。

 アメリカでは1年くらいまえからUDIDにアクセスするアプリを排除し始めており、コードを完全に排除するまでにiOS 6の普及を待ったということだろう。アプリがデバイスのUDID(40桁の固有識別子)を取得しデータベース化すると、ユーザーの承諾なしに不正に利用されることになる。広告ではUDIDによってターゲット化しているが、今後は地図アプリを使うときのGPSのように、UDIDなどのデバイスの識別子へのアクセスを許諾してから使うようになりそうである。

◆AppleによるUDID規制の動きと、これからのリワード広告における計測方法についての所感
http://blogs.itmedia.co.jp/jinmsk/2012/03/appleudid-87f8.html

 SakuttoBookはアプリ内課金を使うときにUDIDにアクセス可能なコードを使っていた。というよりこのコードでiOS 5.1でのアプリ内課金と互換性を持たせていた。SakuttoBookの 2.1.xでビルドすると必ず1つはWarningが表示されるが、そのときのWarningがそれであった。

 UDIDアクセスコードを削除すると、iOS 5.1のデバイスにはアプリがインストールできなくなる。つまりiOS 6のみとなる。iPhoneは3G以前、初代iPadはiOS 6はインストールできないので、デバイスはある程度制限されてしまう。また、iOSは6がインストールされていなければならないというデメリットもある。

 ただしメリットもある。それはアプリ内課金サーバへのアクセスである。iOS 5.1まではアプリ内課金を使ってアプリ内コンテンツに課金しようとすると、Appleの課金サーバの接続が確立されるので異様に時間がかかることがあった。アプリ内コンテンツを購入したくても

値段でないじゃん

と腹立たしくなることもしばしば。これではアプリ内コンテンツは売れない。ところが、iOS 6ではこれがスムーズにいく。実機にアプリ内課金を使った同じアプリをインストールすると、iOS 5.1とiOS 6では課金表示に大きな差がでるのである。

 iOS 5まではアプリ内課金しても、ユーザーがなかなか購入できないため販売機会を逸していたが、iOS 6ではそれがない。つまりiOS 6になってアプリ内課金はやっと実用的になったともいえるのである。単体アプリを販売する場合は、古いバージョンにも対応する必要があるが、アプリ内課金でコンテンツを売っていく場合は、iOS 6以降に限定しておくほうがメリットは大きい。

 アプリの仕様変更でのリジェクトは、方向性がはっきりしている。対処方法も分かりやすい。分かりにくいのはAppleのポリシーでリジェクトされるものである。UDID使用禁止もある意味ではポリシーの変更だが、リジェクト基準は明確だ。UDIDアクセスコードを使わなければよい。

 ところが、2.21リジェクトはコードの変更だけでは対処できない。2.21には

Apps that are simply a book should be submitted to the iBookstore.

とあり「単純な本はiBookstoreに申請」と書かれているが、ここでいう「単純な本である」あるいは「単に本である」の意味は不明確である。ここでもデービット氏は活躍しているに違いない。

◆アップルのアプリ審査担当者“デービッド”って誰?
http://zasshi.news.yahoo.co.jp/article?a=20130418-00000555-playboyz-soci


 さて「単純な本」にしないために何ができるのかということを考えてみた。方法としては

iBookstoreにはない機能を強化する
アプリ内課金で複数のコンテンツを扱う


という方法があった。ところが、iBookstoreにない機能をアプリに追加しても、ブックアプリはリジェクトされてしまうのである。


>>続く



◆JIPPO BOOKS(十方ブックス)
https://itunes.apple.com/jp/app/jippo-books-shi-fangbukkusu/id631021450?&mt=8

◆SakuttoBook(サクッとブック)でiPhoneアプリを作る方法
http://bit.ly/mhgjCG


 



 


posted by @jink0222 at 13:04 | Comment(0) | TrackBack(0) | SakuttoBook日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック