Reputation: 21
When I try to use expo imagepicker, the application freezes, opens the gallery or the camera and they close immediately, this only happens to me on iOS, on Android it works perfectly.
This is my code
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 });
}
};
These are the dependencies
"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"
},
This is the 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": ""
}
}
Upvotes: 2
Views: 1551
Reputation: 302
try adding this to your object, like so,
ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 0.5,
base64: true
presentationStyle: 0 //add this
});
with this everything should be perfectly working on IOS
Upvotes: 2
Reputation: 1304
You should add this permission in project plist file inside xcode. Add these two entry in file
NSCameraUsageDescription
NSPhotoLibraryUsageDescription
That would help you, its help me
Upvotes: 1