React-native-fbsdk ShareDialog。如何与预先填写的消息和照片内容一起分享?

问题描述 投票:0回答:1

我有反应原生0.44.0和react-native-fbsdk 0.5.0。 ShareDialog组件工作正常,但由于缺乏文档解释已被完全卡住。我有自己的API应用程序。我用照片数组制作API调用获取共享模板。

.then((responseData) => {
console.log("Facebook Share Api Test")
console.log(responseData)
// After receiving result checking Platform
// If this is iOS we should let our result image links be fetched to encode it in Base64.
if(Platform.OS !== 'android'){
  console.log("Not Andro!d!")
  let imgUrl
  let sharePhotoContent

  let iteratePhotos = function (data) {
    var photoInfo = [];
    var ready = Promise.resolve(null)
    data.forEach(function (value, i) {
      let iconURL = API.SERVER_URL + API.SERVICE_PORT + API.HEAD_ICON_RES_URL + value.photo_id + 'S'
      ready = ready.then(function () {
        return RNFetchBlob
        .fetch('GET', iconURL)
        .then(res => res.data)
        .then(resData => {
            imgUrl = 'data:image/jpeg;base64,' + resData
            console.log(imgUrl) 
            return imgUrl
        })
        .then(img => {
          console.log(img) 
          let res = {
            imageUrl: img,
            userGenerated: true,
            caption: value.comment
          } 
          return res
        })
        .catch(err => {
          console.log(err)
        })
      }).then(function (resData) {
        photoInfo[i] = resData;
      });
    });

    return ready.then(function () { return photoInfo; });
  }

  iteratePhotos(responseData.photos).then((res) => {
    console.log('res', res)
    if(res.length > 0){
      sharePhotoContent = {
        contentType: 'photo',
        contentDescription: 'Wow, check out this great site!',
        photos: res
      }
    } else {
      sharePhotoContent = {
        contentType: 'link',
        contentUrl: 'some url',
        message: responseData.message
      }
    }
    ShareDialog.canShow(sharePhotoContent)
    .then((canShow) => {
      if (canShow) {
        return ShareDialog.show(sharePhotoContent);
      }
    })
    .then((result) => {
      this.setState({isshowIndicator: false})
      if(!result.isCancelled){
        this.setState({isFacebookShared: true})
        setTimeout(() => alert("Success!"), 100)
      }
    })
    .catch(error => {
      this.setState({isshowIndicator: false})
      console.log(error)
      setTimeout(() => alert('Share fail with error: ' + error), 100)
      }
    )
  })
} else {
  let photoInfo = responseData.photos.map(value => {
    return {
      imageUrl: API.SERVER_URL + API.SERVICE_PORT + API.HEAD_ICON_RES_URL + value.photo_id + 'S',
      ...value 
    }
  })
  console.log(photoInfo, "It IS ANDROID")
  if(responseData.photos.length > 0){
    var sharePhotoContent = {
      contentType: 'photo',
      photos: photoInfo
    }
  } else {
    var sharePhotoContent = {
      contentType: 'link',
      contentUrl: 'some url',
      message: responseData.message
    }
  }
  ShareDialog.canShow(sharePhotoContent)
  .then((canShow) => {
    if (canShow) {
      return ShareDialog.show(sharePhotoContent);
    }
  })
  .then((result) => {
    this.setState({isshowIndicator: false})
    if(!result.isCancelled){
      this.setState({isFacebookShared: true})
      setTimeout(() => alert("Success!"), 100)
    }
  })
  .catch(error => {
    this.setState({isshowIndicator: false})
    setTimeout(() => alert('Share fail with error: ' + error), 100)
  })
}
})

当我点击共享时,打开sharedialog并粘贴我想要的照片,但是消息行等待填充但是我需要打开ShareDialog:

照片需要附上;根据我从API收到的消息预先填写的消息。这可能吗?请帮助这是需要快速实施的预发布功能,我不知道如何((

附上描述1.现在发生什么的截图? 2.我想做什么。

Now opened ShareDialog looks like this

It should be prefilled in ShareDialog like this

javascript reactjs react-native
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.