React native React Native ImagePicker.launchImageLibrary不工作,应用程序关闭而不是拾取图像

React native React Native ImagePicker.launchImageLibrary不工作,应用程序关闭而不是拾取图像,react-native,react-native-image-picker,React Native,React Native Image Picker,我的应用程序中有react本机图像选择器。如果我正在调用ImagePicker.launchImageLibrary,则应用程序将关闭,而不是打开库。当我调用ImagePicker.showImagePicker和Choose from library时,同样的行为也会发生。。选项应用程序也正在关闭。我使用了来自官方文档的相同代码,在XCode、连接库和Pods中进行了所有安装,没有任何错误。谁能帮帮我吗 import React, { useState } from 'react' impor

我的应用程序中有react本机图像选择器。如果我正在调用ImagePicker.launchImageLibrary,则应用程序将关闭,而不是打开库。当我调用ImagePicker.showImagePicker和Choose from library时,同样的行为也会发生。。选项应用程序也正在关闭。我使用了来自官方文档的相同代码,在XCode、连接库和Pods中进行了所有安装,没有任何错误。谁能帮帮我吗

import React, { useState } from 'react'
import { View, FlatList, StyleSheet } from 'react-native'
import ImagePicker from 'react-native-image-picker'
import { ChannelItem, ModalChannelCard, SearchBar, ScreenHeader } from '../../components'
import { data } from '../../dataDraft'
import { TOPICS_SCREEN } from '../routes'

const styles = StyleSheet.create({
  container: {
    flex: 1
  },
  textStyle: {
    fontSize: 25,
    fontWeight: 'bold'
  }
})

const ChannelsScreen = ({ navigation }) => {
  const { container, textStyle } = styles
  const [isModalVisible, setModalVisible] = useState(false)
  const [newChannelImage, setNewChannelImage] = useState({
    channelImage: null,
    loading: false
  })
  const [newChannelTitle, setNewChannelTitle] = useState('')
  const [userInput, setInput] = useState({
    value: '',
    isEmpty: true
  })
  const onChangeTexthandler = value => {
    setInput({
      value,
      isEmpty: false
    })
  }
  const onPressXButtonHandler = () => {
    setInput({
      value: '',
      isEmpty: true
    })
  }
  const hideModalHandler = () => {
    setModalVisible(false)
  }
  const setChannelImageHandler = ({ source }) => {
    setNewChannelImage({
      channelImage: source,
      loading: true
    })
  }
  const rightIconPressHandler = () => {
    setModalVisible(true)
  }
  const chooseChannelImageHandler = () => {
    const options = {
      title: 'Select Image',
      storageOptions: {
        skipBackup: true,
        path: 'images'
      }
    }
    ImagePicker.showImagePicker(options, response => {
      console.log('Response = ', response)
      if (response.didCancel) {
        console.log('User cancelled image picker')
      } else if (response.error) {
        console.log('ImagePicker error: ', response.error)
      } else if (response.customButton) {
        console.log('User tapped custom button: ', response.customButton)
        alert(response.customButton)
      } else {
        const source = { uri: response.uri }
        setChannelImageHandler(source.uri)
      }
    })
  }

  const newTitleHandler = value => {
    setNewChannelTitle(value)
  }
  return (
    <View style={container}>
      <ScreenHeader header="Channels" rightIconName="ios-add" onRightIconPress={rightIconPressHandler} />
      <SearchBar
        value={userInput.value}
        placeholder="Search channel..."
        isEmpty={userInput.isEmpty}
        onChangeText={onChangeTexthandler}
        onPressXButton={onPressXButtonHandler}
      />
      <ModalChannelCard
        buttonAddChannelPushed={newChannelImage.loading}
        channelImage={newChannelImage.channelImage}
        chooseChannelImage={chooseChannelImageHandler}
        createChannel={hideModalHandler}
        hideModal={hideModalHandler}
        onChangeTitle={newTitleHandler}
        titleValue={newChannelTitle}
        visible={isModalVisible}
      />

      <View style={{ alignItems: 'center' }}>
        <FlatList
          data={data}
          numColumns={2}
          autoCorrect={false}
          keyboardShouldPersistTaps="always"
          keyboardDismissMode="on-drag"
          keyExtractor={item => item.image}
          renderItem={({ item }) => (
            <ChannelItem
              channelItemHeader={item.header}
              imageSource={item.image}
              onPress={() => navigation.navigate(TOPICS_SCREEN)}
            />
          )}
        />
      </View>
    </View>
  )
}

export default ChannelsScreen

import React,{useState}来自“React”
从“react native”导入{View,FlatList,StyleSheet}
从“反应本机图像选择器”导入图像选择器
从“../../components”导入{ChannelItem,ModalChannelCard,SearchBar,ScreenHeader}
从“../../dataDraft”导入{data}
从“../routes”导入{TOPICS\u SCREEN}
const styles=StyleSheet.create({
容器:{
弹性:1
},
文本样式:{
尺寸:25,
fontWeight:“粗体”
}
})
const ChannelsScreen=({navigation})=>{
const{container,textStyle}=styles
常量[isModalVisible,setModalVisible]=useState(false)
const[newChannelImage,setNewChannelImage]=useState({
channelImage:null,
加载:错误
})
常量[newChannelTitle,setNewChannelTitle]=useState(“”)
const[userInput,setInput]=useState({
值:“”,
是的
})
const onChangeTexthandler=值=>{
设置输入({
价值
isEmpty:错
})
}
const onPressXButtonHandler=()=>{
设置输入({
值:“”,
是的
})
}
常量HideModelHandler=()=>{
setModalVisible(假)
}
const setChannelImageHandler=({source})=>{
setNewChannelImage({
图片来源:,
加载:正确
})
}
常量rightIconPressHandler=()=>{
setModalVisible(真)
}
const chooseChannelImageHandler=()=>{
常量选项={
标题:“选择图像”,
存储选项:{
skipBackup:没错,
路径:“图像”
}
}
ImagePicker.showImagePicker(选项,响应=>{
console.log('Response=',Response)
if(response.didconcel){
console.log('用户已取消图像选择器')
}else if(response.error){
console.log('ImagePicker错误:',response.error)
}else if(response.customButton){
console.log('用户点击自定义按钮:',response.customButton)
警报(响应。自定义按钮)
}否则{
常量源={uri:response.uri}
setChannelImageHandler(source.uri)
}
})
}
常量newTitleHandler=值=>{
setNewChannelTitle(值)
}
返回(
item.image}
renderItem={({item})=>(
导航。导航(主题屏幕)}
/>
)}
/>
)
}
导出默认通道屏幕

我找到了解决办法。我没有完成此步骤: 注意:如果不完成此步骤,将导致SIGABRT崩溃:

<plist version="1.0">
  <dict>
    ...
    <key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) would like access to your photo gallery</string>
    <key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to use your camera</string>
    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to save photos to your photo gallery</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to use your microphone (for videos)</string>
  </dict>
</plist>

...
NSPhotoLibraryUsageDescription
$(产品名称)希望访问您的照片库
NSCameraUsageDescription
$(产品名称)要使用您的相机吗
NSPhotoLibraryAddUsageDescription
$(产品名称)要将照片保存到您的照片库中
NSM话筒用途说明
$(产品名称)希望使用您的麦克风(用于视频)

日志中是否保留“response”值?调试器不会显示ImagePicker中的任何日志,只是告诉应用程序已关闭:[React DevTools]到RN的连接已关闭。一个应用程序它会发生在Android上吗?