2015-11-17 36 views
6

Cố gắng tạo ứng dụng React Native đưa mục menu trong menu Chia sẻ (Chia sẻ tác vụ cho Android, Chia sẻ tiện ích mở rộng cho iOS) và nhận các mục được chia sẻ trong ứng dụng. Có một thành phần cho điều này, và nếu không phải là cách tốt nhất để xây dựng một?Thêm hành động/tiện ích mở rộng chia sẻ trong React Native

+2

bạn đã tìm thấy giải pháp chưa? Tôi tin rằng câu trả lời dưới đây không phải là những gì bạn đã hỏi về – stkvtflw

+1

Cũng thích biết. Rõ ràng, câu trả lời dưới đây không trả lời câu hỏi OP. – ericpeters0n

Trả lời

6

Tôi đã triển khai mô-đun cho điều đó: https://www.npmjs.com/package/react-native-share-menu (hiện chỉ hoạt động cho Android).

Đó là làm thế nào để sử dụng nó:

Cài đặt các module:

npm i --save react-native-share-menu

Trong 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') 

Trong android/app/build.gradle:

... 
dependencies { 
    ... 
    compile project(':react-native-share-menu') 
} 

Đăng ký mô-đun (trong 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  
     ); 
    } 
...... 
} 

Ví dụ:

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

Cập nhật: thành phần này hiện hỗ trợ iOS. – infojunkie

+0

hi @Caio khi bạn muốn xuất bản, bạn sẽ làm gì? bạn có sử dụng gói từ dự án chính trên tiện ích mở rộng không? hoặc bạn sao chép dán gói đó trên tiện ích mở rộng? cảm ơn! – MaKo

+0

@MaKo Tôi chỉ tạo một gói dự án chính, bao gồm phần mở rộng –

-4

Bạn có thể sử dụng được xây dựng trong thành phần: https://facebook.github.io/react-native/docs/actionsheetios.html#content

Hoặc bạn có thể sử dụng thành phần này có thể chấp nhận bất cứ cái nhìn bạn muốn và làm cho nó trông giống như các thành phần phần iOS:

https://github.com/eyaleizenberg/react-native-custom-action-sheet

Những được thiết kế cho iOS. Đối với Android (và iOS), bạn có thể sử dụng tính năng này: https://github.com/EstebanFuentealba/react-native-share

+0

Điều này không trả lời câu hỏi của OP. – ericpeters0n

-3

Bạn có thể sử dụng Chia sẻ api mới được giới thiệu trong 0.33. Tôi thực sự có video về cách thực hiện việc này tại đây: http://codecookbook.co/post/how-to-share-text-from-your-react-native-app/

+0

Nếu bạn muốn nói điều này: https://developers.facebook.com/docs/react-native/sharing sau đó bạn đang đề cập đến hoạt động nghịch đảo: mở một menu chia sẻ từ trong ứng dụng RN đến trang web bên ngoài hoặc ứng dụng khác. để tiêm một ITEM chia sẻ hiển thị trong tất cả các ứng dụng để gửi nội dung đến ứng dụng RN. – infojunkie

Các vấn đề liên quan