当我尝试使用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只是印刷和排版行业的伪文本。自1500年代以来,Lorem Ipsum一直是行业的标准伪文本,当时一位不知名的打印机拿起一个厨房,将其打乱成一本样本书。它不仅生存了五个世纪,而且在电子排版方面也取得了飞跃,但基本上没有改变。它在1960年代开始流行,发布了包含Lorem Ipsum段落的Letraset工作表,最近又发布了包括Alres PageMaker在内的桌面发行软件,包括Lorem Ipsum的版本。
答案 0 :(得分:1)
您应该在xcode的项目plist文件中添加此权限。 在文件中添加这两个条目
NSCameraUsageDescription
NSPhotoLibraryUsageDescription
那对您有帮助,对我有帮助