Поделиться не работает в React native android / ios?

Как я могу поделиться ссылкой на файл pdf или ссылкой на изображение, которая откроется в веб-браузере собственного мобильного приложения. Я добавил кнопку «Поделиться», но когда пользователь нажимает на нее, открывается, где можно поделиться параметрами меню, такими как WhatsApp, Gmail, сообщения и т. д. Но при нажатии на WhatsApp он не отправляет никакого контента, почему так? Нужно ли мне использовать Gmail, WhatsApp API с моим собственным приложением для Android?

код:

import {
  Text,
  View,
  StyleSheet,
  Button,
  Animated,
  Dimensions,
  ScrollView,
  Image,
  TouchableOpacity,
  Linking,
  Platform,
  Share
} from 'react-native';


// inside render

onSharePress = (shareOptions) => Share.share(shareOptions);

const shareOptions = {
   title: 'Download Brochure',
    url: brochure
}

// inside return 

<View style = {{paddingLeft: 10, marginRight: 20, flex: 1, flexDirection: 'row', justifyContent: 'flex-end'}}>
    <TouchableOpacity onPress = {() => this.onSharePress(shareOptions)}>
         <Icon style = {{paddingLeft: 10}} name = "md-share" size = {25} color = "black"/>
     </TouchableOpacity>
</View>

На скриншоте ниже вы можете видеть, что он просто открывает меню параметров общего доступа, но когда я нажимаю на какую-либо платформу, контент, то есть URL-адрес файла, не отправляется, как я могу это сделать? Я что-то упускаю ?

Поделиться не работает в React native android / ios?

@harsh Patel Не могли бы вы помочь мне поделиться в React Native? Почему не работает?

fun joker 29.10.2018 13:24

Извините, но я еще не пробовал реагировать на JS.

Harsh Patel 29.10.2018 13:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
7 789
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы должны выполнить обещание для этого ..

 onSharePress = (url) => {
    Share.share({
      title: 'Alert Title',
      message: url + '\nMessage goes here.'
    }).then((res) => console.info(res))
      .catch((error) => console.info(error))
  };

Прочтите дружественные документы share():

Content

  • message - a message to share

  • title - title of the message

iOS

  • url - an URL to share

At least one of URL and message is required.

Итак, на Android опция url ничего не делает, и вам, вероятно, нужно поместить ее в message.

Ответ принят как подходящий

Share.share(content, options) receives content and options parameter separately.

Share.share(content, options) returns a Promise on both Android and IOS. You basically need to resolve the Promise or read the response from it.

Вот так

Share.share(
{
  message: 'Your message',
  url: YourURL
}
).then(({action, activityType}) => {
if (action === Share.sharedAction)
  console.info('Share was successful');
else
  console.info('Share was dismissed');
});

Promise returns an object containing action, activityType

If the user dismissed the dialog, the Promise will be resolved with action being Share.dismissedAction else with action being Share.sharedAction

как поделиться текстом в WhatsApp

Linking.openURL(whatsapp://send?text=${'hello whatsApp'});

как поделиться текстом в Google

Linking.openURL('https://support.google.com/mail/community');

откройте свой контакт в приложении React Native

Linking.openURL('content://com.android.contacts/contacts');

Это работает для меня: Ссылка

shareApp = () =>{

        let  text = 'Want more buzz around your photos on Insta, Facebook, Twitter, Whatsapp posts?\n\nLet\'s make your stories get more eyeballs..\nDownload TagWag App '
        if (Platform.OS === 'android')
            text = text.concat('https://hackeruna.com')
        else
            text = text.concat('http://itunes.apple.com/app/id1453977874')

        Share.share({
            subject: 'Download TagWag App Now',
            title: 'Download TagWag App Now',
            message: text,
            url:'app://tagwag',

        }, {
            // Android only:
            dialogTitle: 'Share TagWag App',
            // iOS only:
            excludedActivityTypes: []
        })
    }

Другие вопросы по теме