Xcode8でコンパイルしたバイナリについて

フォトライブラリー・ブルートゥース・カレンダー・カメラへアクセスする場合は以下のものがinfo.plist内に必要。

あらかじめ許可が取れてる場合(旧バージョンで許可をとってる場合)はXcodeから直接実機にインストールすれば動くけど、アップロードした時にInvalid binaryで弾かれる。

NSPhotoLibraryUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSContactsUsageDescription
NSCameraUsageDescription

使う時に(ロケーションのように)許可を取りに行く必要はないみたい。

NSContactsUsageDescriptionなしで連絡先に、NSCalendarsUsageDescriptionなしでカレンダーにアクセスするXcodeから直接起動した場合でもアプリが落ちる。

iOSのアプリ内のファイル保存のURLについて

アプリ内では以下の様にしてDocumentsディレクトリを取得する。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

具体的には
/var/mobile/Containers/Data/Application/B9B66EA6-051F-450C-81BC-BDA96675290E/Documents/photos/20160901_221957.mov

などとなるのだけれど、B9B66EA6…の部分は起動毎に変わる。
なので、絶対パスを保持して使おうとすると失敗する。