Попытка создать приложение React Native, которое вводит пункт меню в меню Share (Share Action для Android, Share Extension для iOS) и получает общие элементы в приложении. Есть ли компонент для этого, и если не самый лучший способ его построить?
Добавление действия/расширения share в React Native
Ответ 1
Я реализовал для этого модуль: https://www.npmjs.com/package/react-native-share-menu (в настоящее время работает только для Android).
Как его использовать:
Установите модуль:
npm i --save react-native-share-menu
В android/settings.gradle:
...
include ':react-native-share-menu', ':app'
project(':react-native-share-menu').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share-menu/android')
В файле android/app/build.gradle:
...
dependencies {
...
compile project(':react-native-share-menu')
}
Модуль регистрации (в MainActivity.java):
import com.meedan.ShareMenuPackage; // <--- import
public class MainActivity extends ReactActivity {
......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ShareMenuPackage() // <------ add here
);
}
......
}
Пример:
import React, {
AppRegistry,
Component,
Text,
View
} from 'react-native';
import ShareMenu from 'react-native-share-menu';
class Test extends Component {
constructor(props) {
super(props);
this.state = {
sharedText: null
};
}
componentWillMount() {
var that = this;
ShareMenu.getSharedText((text :string) => {
if (text && text.length) {
that.setState({ sharedText: text });
}
})
}
render() {
var text = this.state.sharedText;
return (
<View>
<Text>Shared text: {text}</Text>
</View>
);
}
}
AppRegistry.registerComponent('Test', () => Test);
Ответ 2
Вы можете использовать встроенный компонент: https://facebook.github.io/react-native/docs/actionsheetios.html#content
Или вы можете использовать этот компонент, который может принять любое ваше мнение и сделать его похожим на общий ресурс iOS:
https://github.com/eyaleizenberg/react-native-custom-action-sheet
Они предназначены для iOS. Для Android (а также iOS) вы можете использовать это: https://github.com/EstebanFuentealba/react-native-share
Ответ 3
Вы можете использовать новый Share api, представленный в 0.33. На самом деле у меня есть видео о том, как это сделать здесь: http://codecookbook.co/post/how-to-share-text-from-your-react-native-app/