rikisha blog

フリーで活動するプログラマーのブログです。Android、iOSネタが多いです。

先日提出したアプリがPLA 3.3.12でリジェクトされた

正月前にiTunesConnectがメンテナンスに入って審査が行われていなかったけど、先日ついに提出していたアプリが審査されることとなった。

でも審査開始しますとメールが入ってから1時間するかしないかのときにアプリをリジェクトしましたという連絡が入ってきた。

自身の初めて提出したアプリはリジェクトされることもなくあっさりと通ったから、「なんだよ〜、ネットではアップルでは一度や二度のリジェクトは当たり前だから余裕もって提出したほうがいい」みたいなこと書いてあったからめちゃめちゃ心配してたけど、何事も無くすんなりストア公開された。

そんなんだから、1つしかリリースしていないのにもかかわらず、アプリ公開めちゃ簡単やん!という変な自信をつけていたが、今回はそれが見事にくずされた。

今回リジェクトされた理由はPLA 3.3.12というもので、Advertising Identifierを広告表示してないアプリが使かっちゃアカーンというもの。

cocos2d-x - PLA 3.3.12でリジェクト 解決方法&まとめ - Qiita

実は今回のアプリにどれくらいアプリが起動しているかを調べるためにGoogle Analytics APIを使用しているのだが、Google AnalyticsがAdSupport.frameworkのインポートをするように指定しているのだ。

iOS 向け Google アナリティクス SDK v3 - ご利用方法 - Google アナリティクス — Google Developers

Google アナリティクス SDK では CoreData と SystemConfiguration のフレームワークが使われるため、アプリの対象リンク ライブラリに次のファイルを追加する必要があります。

libGoogleAnalyticsServices.a AdSupport.framework CoreData.framework SystemConfiguration.framework libz.dylib

今回はこれが原因でリジェクトされたようだ。

最初はiAd設置してるから広告表示しているじゃんってのをアップルに返そうかと思ったけど、よくよく調べてみるとiAdはAdSupport.frameworkを使用していないんだって。

吹田の星: AdSupport.frameworkを使用するiPhoneアプリはリジェクトの可能性がある

だからGoogle Analyticsを使用したい場合はどうしようかと思って、広告の種類をiAdからAdMobに変更するか迷った。でも前回のアプリがAdmobだったので今回はiAd使ってみたいと思って作成したものなのでこれもできれば止めたい。そう思いながら調べを進めていたら

アプリで飯を食う: IDFA(advertisingIdentifier)「PLA 3.3.12」リジェクトとの闘いの軌跡

Google Analytics SDKの更新 私が使用していたのはv3(Beta)版で、ビルドするのに「AdSupport.framework」が必要でした。 この「AdSupport.framework」を広告用途以外で使用すると審査に引っかかる模様。 最新のv3.03aでは不要となっていたので、それに更新して2/19に再申請しました。

という記事を見つけたので、AdSupport.frameworkを除いてビルドしたらビルドが成功したのでそれで提出してみた。

なんだよ〜、Googleのページには必要だって書いてあったからインポートしたのに、いまは不要なのかよ〜!

ちなみにリジェクト理由に書いてあった otool の基礎的な使い方はshu223さんのブログを見てみるとわかる

otool -ov OpenSourceCollection.app/OpenSourceCollection | grep advertisingIdentifier

otoolでバイナリの内容をいろいろと調べる方法 - Over&Out その後