Expo ImagePicker разбился на IOS Gallery, не открываясь
Когда я пытаюсь использовать expo imagepicker, приложение зависает, открывает галерею или камеру, и они сразу закрываются, это происходит только со мной на ios, на android работает отлично.
Я надеюсь, что кто-то может мне помочь.
Это мой код
getPermissionAsync = async () => {
if (Constants.platform.ios) {
const { status } = await Permissions.askAsync(Permissions.CAMERA, Permissions.CAMERA_ROLL);
if (status !== "granted") {
alert(
"Lo sentimos, necesitamos permisos de cámara para hacer que esto funcione!"
);
}
}
};
_pickImage = async type => {
let result = null;
if (type == "galeria") {
result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 0.5,
base64: true
});
} else {
result = await ImagePicker.launchCameraAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 0.5,
base64: true
});
}
if (result != null && !result.cancelled) {
let arr = this.state.imagenesAdjuntas;
arr.push(result);
this.setState({ imagenesAdjuntas: arr });
}
};
Это зависимости
"dependencies": {
"@expo/vector-icons": "^10.0.3",
"expo": "^33.0.0",
"expo-asset": "^6.0.0",
"expo-barcode-scanner": "~5.0.1",
"expo-blur": "~5.0.1",
"expo-constants": "~5.0.1",
"expo-font": "~5.0.1",
"expo-image-picker": "~5.0.2",
"expo-linear-gradient": "^5.0.1",
"expo-mail-composer": "~5.0.1",
"expo-permissions": "~5.0.1",
"expo-secure-store": "~5.0.1",
"firebase": "^7.2.1",
"prop-types": "^15.7.2",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
"react-native-animated-hide-view": "^1.0.0",
"react-native-banner-carousel": "^1.0.3",
"react-native-elements": "^1.2.6",
"react-native-flip-card": "^3.5.5",
"react-native-gesture-handler": "~1.2.1",
"react-native-maps": "~0.24.0",
"react-native-modal": "^11.1.0",
"react-native-render-html": "^4.1.2",
"react-native-smtp-mailer": "^1.2.1",
"react-native-table-component": "^1.2.0",
"react-native-web": "^0.11.4",
"react-navigation": "^3.11.0",
"sharp": "^0.22.1"
},
"devDependencies": {
"babel-preset-expo": "^5.1.1"
},
Это app.json
{
"expo": {
"name": "App Name",
"slug": "appname",
"privacy": "public",
"sdkVersion": "33.0.0",
"platforms": [
"ios",
"android"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"loading": {
"icon": "./assets/icon.png",
"hideExponentText": false
},
"splash": {
"image": "./assets/splash.png",
"resizeMode": "cover",
"backgroundColor": "#0088AD"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"packagerOpts": {
"assetExts": [
"ttf",
"mp4",
"otf",
"xml",
"html",
"js"
]
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.company.name"
},
"android": {
"package": "com.company.name",
"config": {
}
},
"description": ""
}
}
Я поставлю следующее, чтобы заполнить
Lorem Ipsum - это просто фиктивный текст полиграфической и наборной индустрии. Lorem Ipsum был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный типограф взял камбуз и скремблировал его, чтобы сделать книгу образцов шрифта. Он пережил не только пять веков, но и скачок в электронный набор, оставшись практически неизменным. Он был популяризирован в 1960-х годах с выпуском листов Letraset, содержащих отрывки Lorem Ipsum, а в последнее время - с помощью настольных издательских программ, таких как Aldus PageMaker, включая версии Lorem Ipsum.
2 ответа
попробуйте добавить это к своему объекту, например,
ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 0.5,
base64: true
presentationStyle: 0 //add this
});
с этим все должно отлично работать на IOS
Вы должны добавить это разрешение в файл plist проекта внутри xcode. Добавьте эти две записи в файл
NSCameraUsageDescription
NSPhotoLibraryUsageDescription
Это поможет вам, поможет мне