2015-11-17 22 views
6

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

+2

hai trovato la soluzione? Credo che la risposta qui sotto non sia quella che hai chiesto riguardo a – stkvtflw

+1

Interessato anche a sapere. Chiaramente, la risposta sotto non risponde alla domanda OP. – ericpeters0n

risposta

6

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); 
+0

: questo componente ora supporta anche iOS. – infojunkie

+0

hi @Caio quando vuoi pubblicare, cosa fai? usi il bundle dal progetto principale sull'estensione? o copi incolla quel pacchetto sull'estensione? Grazie! – MaKo

+0

@MaKo Ho appena generato un pacchetto del progetto principale, che includerà l'estensione –

-4

È 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

+0

Questo non risponde alla domanda dell'OP. Aggiornamento – ericpeters0n

-3

È 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/

+0

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