Не удалось получить сведения об Apple Photos — приложение C# macOS Sierra 10.12 Xamarin

Я разрабатываю настольное приложение iMac, которое может загружать обычные фотографии, а также библиотеку фотографий (ранее библиотека iPhotos) в онлайн-сервисы, такие как Flickr, SmugMug. Перед обновлением до Sierra я смог получить подробную информацию об iPhotos и загрузить их, но после обновления эти файлы/каталоги не существуют.

Ниже приведен блок, с помощью которого я получал файлы:

string PhotosLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "Photos Library.photoslibrary/Database/apdb/Library.apdb");

Но вышеперечисленное больше не работает в Sierra 10.12, если я перейду к самому поисковику, чтобы найти вышеупомянутый путь, я найду каталог «База данных», но там нет «apdb», с помощью которого я могу получить Library.apdb

Я гуглил, но не повезло, может ли кто-нибудь показать мне несколько советов о том, как получить файлы библиотеки фотографий с помощью С#.

Пожалуйста, сообщите мне, если я пропустил какую-либо информацию, чтобы поделиться. Спасибо.


person Saurav Anand    schedule 20.03.2017    source источник


Ответы (1)


Если вы ситуация позволяет.

NSDictionary<NSString, NSObject> options = new NSDictionary<NSString, NSObject>(
    new[] { MLMediaLibrary.MediaLoadSourceTypesKey, MLMediaLibrary.MediaLoadIncludeSourcesKey },
    new[] { new NSString(MLMediaSourceType.Image.ToString()), MLMediaSource.MediaSourcePhotosIdentifier }
);
var ml = new MLMediaLibrary(options);
ml.AddObserver("mediaSources", 0, (obj) => Console.WriteLine("Loaded"));
var src = ml.MediaSources; // returns null first time

Чтобы получить доступ к MLMediaLibrary, ваше приложение должно быть помещено в песочницу и иметь код.

См. также https://stackoverflow.com/a/29626032, чтобы узнать, как обращаться с entitlements.plist.

person ailen0ada    schedule 29.03.2017
comment
Для этого мне нужно изменить/обновить канал студии xamarin на альфа-канал со стабильной версии? А потом нужно добавить ключ в файл прав? - person Saurav Anand; 18.04.2017
comment
Неважно, альфа канал или стабильный. Просто добавьте ключ и значение в entitlements.plist. - person ailen0ada; 18.04.2017
comment
Эта библиотека нетривиальна для работы. У меня есть немного больший пример: gist.github.com/chamons/9f9b6aa1f4b45ba8603cd5ba09a79b1f - person Chris Hamons; 19.04.2017