Provare a creare un'applicazione React Native che inietta una voce di menu nel menu Condividi (Condividi azione per Android, Condividi estensione per iOS) e riceve elementi condivisi nell'app. C'è un componente per questo, e se no qual è il modo migliore per costruirne uno?Aggiunta azione/interno condivisione in React Native
risposta
ho implementato un modulo per questo: https://www.npmjs.com/package/react-native-share-menu (attualmente funziona solo per Android).
Ecco come usarlo:
Installare il modulo:
npm i --save react-native-share-menu
in 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')
in Android/app/build.gradle:
...
dependencies {
...
compile project(':react-native-share-menu')
}
modulo di registro (in 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
);
}
......
}
Esempio:
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);
: questo componente ora supporta anche iOS. – infojunkie
hi @Caio quando vuoi pubblicare, cosa fai? usi il bundle dal progetto principale sull'estensione? o copi incolla quel pacchetto sull'estensione? Grazie! – MaKo
@MaKo Ho appena generato un pacchetto del progetto principale, che includerà l'estensione –
È possibile utilizzare il costruito nel componente: https://facebook.github.io/react-native/docs/actionsheetios.html#content
Oppure si può usare questo componente, che può accettare qualsiasi vista che si desidera e lo fa apparire come la componente azionaria iOS:
https://github.com/eyaleizenberg/react-native-custom-action-sheet
Questi sono progettati per iOS. Per Android (e anche iOS), è possibile utilizzare questo: https://github.com/EstebanFuentealba/react-native-share
Questo non risponde alla domanda dell'OP. Aggiornamento – ericpeters0n
È possibile utilizzare la nuova Condividi api introdotta in 0,33. In realtà ho un video su come farlo qui: http://codecookbook.co/post/how-to-share-text-from-your-react-native-app/
Se intendi questo: https://developers.facebook.com/docs/react-native/sharing ti riferisci all'operazione inversa: aprire un menu di condivisione dall'app RN a un sito esterno o un'altra app. La domanda qui è iniettare una ITEM di condivisione che si presenta in tutte le app per inviare contenuto all'app RN. – infojunkie
hai trovato la soluzione? Credo che la risposta qui sotto non sia quella che hai chiesto riguardo a – stkvtflw
Interessato anche a sapere. Chiaramente, la risposta sotto non risponde alla domanda OP. – ericpeters0n