EBPocket for iOS / iOS8対応
週末をまるまる潰して、EBPocket for iOS のiOS8対応を終え、やっとAppStoreに提出。意外やiOS7対応の時以上に大変で、何度も挫折しそうになった。これでreject食らったら、かなりめげる。Apple大嫌い。
ご参考までに、今回つまづいた部分を忘備録的に書いておきたい。
・iPhone6でlandscapeでステータスバーが出ない。
→ 仕様が変更されたようだ。画面を広く使うためだと思うが既存のアプリに影響あり。ViewControllerに次のメソッドを入れる
- (BOOL)prefersStatusBarHidden {
return NO;
}
・iPadでモーダルビューを開こうとすると、"which is already presenting "のログが出て開かない。
→内部の実装が変わったようで、次のように非同期で実行すると回避できる。
dispatch_async(dispatch_get_main_queue(), ^ {
[self presentViewController:vc animated:YES completion:nil];
});
・MFMailComposeViewControllerが動かない。
→原因不明。実機で大丈夫な可能性もあるが、念のため標準メーラを起動する方法に変更する。
・サードパーティライブラリのMGSplitViewControllerのLandscapeが動かない。
→下記に従って改訂。
uisplitviewcontroller - iOS8 MGSplitViewController alternative - Stack Overflow
・iPhone6 / 6plus の解像度を有効にするには、それぞれの解像度のLaunch Imageが必要。
Default-667h@2x.png 750×1334 - iPhone6
Default-736h@3x.png 1242×2208 - iPhone6 plus
専用の解像度のLaunch Imageが見つからない場合はスケーリングモードで拡大表示され、ぼけることになる。
・xcode5からアイコン、ラウンチイメージの管理が info.plist からasset catalogに変わった。asset catalogにmigrateしないと、前述のiPhone6用のLaunch Imageを入れられない。
・iPhone 6 plus用に、アプリ内の画像イメージは三倍の大きさのファイルを追加する。
・arm64を入れる場合はdeployment target 5.1.1が下限
→今回からiOSの下限が5.1.1になりました。その代わり5s以降では64bitで動作するはず。5.1.1より前の実機では旧バージョンのEBPocketがインストールされるはずです。
・localizationのディレクトリ名が厳密に決められた。変更しないと提出時にワーニングがでる(提出はできる)。単にディレクトリ名を変更してもXcodeが認識しないので、Xcodeで削除後、追加する方が無難。
English.lproj -> en.lproj
Japanese.lproj -> ja.lproj
・提出時に、
"The info.plist in the package must contain the CFBundleShortVersionString key."
"The package does not contain an info.plist."
のエラーが出て提出できない。
PROJECT->Build Settings -> Packaging -> Info.plist File にinfo.plistのファイル名を記入する(以前は空白でよかったはず?)
・arm64の64bit環境では、 long のサイズが32bitではなく64bitになる。