使用原生模块将响应本机应用程序的帖子分享到第三方应用程序instagram

时间:2019-07-19 05:13:44

标签: objective-c reactjs react-native instagram

如果重复,请原谅。我正在开发一个使用react-native在第三方Instagram应用程序中共享其帖子的应用程序。我到处搜索,发现没有可用于react-native的功能,但在native-ios和native-android中可用。我试图在native-ios(objective-c)中实现,并为此找到了很多代码,但是我有点困惑,无法开发我的功能。有人可以在这里逐步解释吗?通过执行以下代码,我已经完成了将本机ios文件与react-native链接起来的事情。

.h文件

#ifndef Instashare_h
#define Instashare_h

#import "React/RCTBridgeModule.h"

@interface Instashare : NSObject <RCTBridgeModule>
@end

#endif /* Instashare_h */

.m文件

#import "Instashare.h"=
#import "React/RCTLog.h"

@implementation Instashare

// This RCT (React) "macro" exposes the current module to JavaScript
RCT_EXPORT_MODULE();

// We must explicitly expose methods otherwise JavaScript can't access anything
RCT_EXPORT_METHOD(get)
{
   NSLog(@"explanation code here");
}

@end

React-native.js文件

var InstagramShare = NativeModules.Instashare;

export default class ShareComponents extends PureComponent {
  _handleInsta = () => {
     InstagramShare.get();
  }
  render{
     return(
        <TouchableOpacity
            onPress={() => this._handleInsta()}
        >
          <Text>Instagram</Text>
        </TouchableOpacity>
     );
  }
}

1 个答案:

答案 0 :(得分:0)

本机模块只是实现RCTBridgeModule协议的Objective-C类。如果您想知道, RCT ReaCT 的缩写。

// Instashare.h
#import <React/RCTBridgeModule.h>

@interface Instashare : NSObject <RCTBridgeModule>
@end
除非明确告知,否则

React Native不会将 Instashare 的任何方法公开给JavaScript。这是通过RCT_EXPORT_METHOD()宏完成的:

#import "Instashare.h"
#import <React/RCTLog.h>

@implementation Instashare

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(get:(NSString *)name location:(NSString *)location)
{
  NSLog(@"explanation code here");
}

@end

用法

import {NativeModules} from 'react-native';
var Instashare = NativeModules.Instashare;
Instashare.get();