Invalid Binaryの対処方法

未分類

iTunes Connectの話。

新しいバージョンを申請するのに、いつも通りXcodeでArchiveしてValidateもOKとなり、Submitも完了。

No Issues Foundとなっている。
と思って油断してたらAppleからメールが来た。

件名:Update For <アプリ名>(Apple ID: )
本文:
<略>
Non-public API usage:
Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.
<略>

みたいな感じの内容。

どうやら、調べてみるとInvalid Binaryってめちゃくちゃ数あるエラーをひとまとめにしたステータスらしい。

この記事なんかは非常に色々載っていた。
が、どれも思い当たらない。

このエラーに出くわした人は少ないんだけど結果的には書いてある通りUDIDを引っ張って来て使っているからダメとの事。

UDIDは、簡単に言えばiOS端末に一意に振られている識別番号。
CNETのこの記事によると

AppleはUDIDにアクセスする新規アプリやアプリのアップデートをもはや受け付けない。同社は、この新しいポリシーに向けた期限を米国時間5月1日とすると公式に発表した。

と言う事らしい。

じゃぁ、どうやってUDIDってコードで引っ張って来るの?と言うと、

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];

と、こんな調子で取って来れる。

UIDeviceより。

だが、XCodeを検索してもuniqueIdentifierなんて使ってない。
となれば、ライブラリのどこかだろう。

ライブラリでuniqueIdentifierを使っているファイルを調べる方法は、プロジェクトのルートフォルダにcdして、こんなコマンドを叩けば取って来れる。

find . | grep -v .svn  | grep ".a" | grep -v ".app" | xargs grep uniqueIdentifier

僕は、これで出て来たライブラリのアップデート版(UDID対応版)があったので、それに置換したら直って、無事にWaiting For Reviewになった。

誰かのお役に立てば。

コメント

タイトルとURLをコピーしました