hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

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になる。