Я хочу загрузить выбранную пользователем фотографию на сервер, используя плагин image_picker для флаттера. Но когда пользователь выбирает ограниченный доступ к фотографиям и выбирает фотографии, которые могут быть видны приложению, отображается полная библиотека со всеми фотографиями.
Я использую image_picker с этим кодом:
final ImagePicker imagePicker = ImagePicker();
// Check for gallery permission
final hasPermission = await requestPhotosPermission();
if (!hasPermission) return false;
final photoResult = await imagePicker.pickImage(
source: ImageSource.gallery,
maxHeight: 1280,
maxWidth: 800,
requestFullMetadata: false);
Я также добавил разрешения для info.plist.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Access to the photo library is necessary.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access to the photo library is necessary.</string>
Ниже приведен журнал ошибок после выбора фотографий и нажатия кнопки «Готово». Он показывает все фотографии, а не выбранные.
**[core] "Error returned from daemon: Error Domain=com.apple.accounts Code=7 "(null)""
[PAAccessLogger] Failed to log access with error: access=<PATCCAccess 0x283311110> accessor:<<PAApplication 0x283311120 identifierType:auditToken identifier:{pid:1112, version:3545}>> identifier:D4D1111-F111-4798-1111-F1911111A9E0 kind:intervalEvent timestampAdjustment:0 visibilityState:0 assetIdentifierCount:0 tccService:kTCCServicePhotos, error=Error Domain=NSCocoaErrorDomain Code=4097 "connection to service with pid 226 named com.apple.privacyaccountingd" UserInfo = {NSDebugDescription=connection to service with pid 226 named com.apple.privacyaccountingd}**
Есть решения? Спасибо.
@Paulw11 Paulw11 Я удалил NSPhotoLibraryAddUsageDescription из info.plist. Теперь, когда я пытаюсь выбрать фотографию из галереи, приложение выходит из строя, и вот ошибка: это приложение вышло из строя, поскольку оно пыталось получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSPhotoLibraryUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Вам нужна строка разрешений, как описано в подключаемом модуле, но вам не нужно явно запрашивать разрешения, и у вас нет полного доступа к библиотеке фотографий пользователя.
После исследования я обнаружил, что мне не нужно спрашивать разрешение на плагин image_picker. Поэтому, чтобы не получить ошибку с полным разрешением на фотографии, даже если мы предоставили ограниченное разрешение на фотографии, просто не спрашивайте об этом вообще. Возможно, на некоторых устройствах даже фотографии в общих зонах могут быть ограничены и для этого нужно разрешение, поэтому я не знаю, как это исправить.
Вам не нужно запрашивать доступ к библиотеке фотографий пользователя. Вы используете PHPickerViewController Этот контроллер позволяет пользователю выбирать изображение, которое он хочет сделать доступным для вашего приложения. Затем актив доставляется в ваше приложение. Доступ к библиотеке фотографий позволяет вашему приложению получать доступ к элементам в библиотеке фотографий напрямую, без взаимодействия с пользователем, поэтому требуется разрешение.