世博会ImagePicker在IOS Gallery无法打开时崩溃

时间:2019-11-05 02:05:21

标签: ios react-native expo imagepicker

当我尝试使用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的版本。

1 个答案:

答案 0 :(得分:1)

您应该在xcode的项目plist文件中添加此权限。 在文件中添加这两个条目

NSCameraUsageDescription



NSPhotoLibraryUsageDescription

那对您有帮助,对我有帮助

相关问题