【问题标题】:implementing react-native-fbsdkshare实施 react-native-fbsdkshare
【发布时间】:2015-11-07 19:28:42
【问题描述】:

我已按照https://github.com/facebook/react-native-fbsdk 上的指南安装和使用 react-native-fbsdk 模块。但是,当我单击“共享”按钮时,它会引发以下错误:

'Error: undefined is not an object (evaluating \'FBSDKShareDialogInterface.show\')

当我运行应用程序时还会出现 3 个警告:

'警告:“RCTFBSDKShareButton”的本机组件不存在' '警告:“RCTFBSDKSendButton”的本机组件不存在' '警告:“RCTFBSDKLikeControl”的本机组件不存在'

这是我使用的代码:

var FBSDKShare = require('react-native-fbsdkshare');

变量{ FBSDKShareDialog, FBSDKShareDialog接口, FBSDKShareLink内容, FBSDK分享分享按钮 } = FBSDKShare;

shareOnFacebook() {

      var linkContent = new FBSDKShareLinkContent('https://facebook.com', 'Wow, check out this great site!', 'Facebook.com', null);
// Share the link using the native share dialog.
FBSDKShareDialog.show(linkContent, (error, result) => {
  if (!error) {
    if (result.isCancelled) {
      alert('Share cancelled.');
    } else {
      alert('Thanks for sharing!');
    }
  } else {
    alert('Error sharing.');
  }
});

<TouchableHighlight style={[itemStyles.itemButtonShare,itemStyles.itemButtonShareFacebook]} onPress={() => this.shareOnFacebook(item)}><Text>Share On Facebook</Text></TouchableHighlight>

(我已经安装了 FBSDKCoreKit.framework、FBSDKLoginKit.framework 和 FBSDKShareKit.framework 并设置了框架搜索路径。) 任何人都可以帮助解决这个错误吗? 谢谢

----- 已编辑 -------

好的,最后我决定创建一个本地方法并从反应端调用它。如果有人遇到此问题,这是替代解决方案:

创建 2 个文件,FacebookShareManager.h 和 FacebookShareManager.m :

FacebookShareManager.h 的内容应该是:

    #import "RCTBridgeModule.h"

@interface FacebookShareManager : NSObject <RCTBridgeModule>
@end

以及 FacebookShareManager.m 的内容:

    #import "FacebookShareManager.h"
#import "FBSDKCoreKit/FBSDKCoreKit.h"
#import "FBSDKShareKit/FBSDKShareKit.h"

@implementation FacebookShareManager

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(showDialog: (NSDictionary *)params callback:(RCTResponseSenderBlock)callback ) {


  dispatch_async(dispatch_get_main_queue(), ^{

    FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];

    NSURL    *    shareUrl      = [NSURL URLWithString:params[@"contentUrl"]];
    NSURL    *    shareImageUrl = [NSURL URLWithString:params[@"contentImageUrl"]];
    NSString * shareTitle       = [NSString stringWithString:params[@"contentTitle"]];
    NSString * shareDescription = [NSString stringWithString:params[@"contentDescription"]];

    content.contentURL         = shareUrl;
    content.imageURL           = shareImageUrl;
    content.contentTitle       = shareTitle;
    content.contentDescription = shareDescription;

    [FBSDKShareDialog showFromViewController:nil
                                 withContent:content
                                    delegate:nil];

  });

};

@end

现在我们需要从我们的 react-native 组件调用这个方法:

首先在你的 react-native 组件类文件的顶部包含管理器:

var FacebookShareManager = require('NativeModules').FacebookShareManager;

现在在你的组件类中添加这个方法:

    shareOnFacebook(item) {


      var params = {"contentUrl": item.url,"contentImageUrl": item.pictureUrl,"contentTitle": item.title,"contentDescription":item.description};
      FacebookShareManager.showDialog(params, (info)=> {


        // do something you need...


    });

  }

【问题讨论】:

  • 安装组件后,您是否在 XCode 中清理并重建了应用程序并重新启动了 React Native Packager 进程?
  • 是的,我已经多次重新启动打包程序。多次重建项目。没有任何改变@jevakallio
  • 不幸的是,我不得不创建一个本地方法来从反应端调用:

标签: ios facebook react-native


【解决方案1】:

我遇到了完全相同的问题,结果我有 facebook sdk v4.7.1。 所以

  1. 我删除了之前的并下载了最新的 v4.8.0。
  2. 然后我再次按照安装JavaScript packages开始的所有步骤
  3. 然后手动添加files to xcode

在我使用 github 上示例中的共享对话框后,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2017-03-04
    相关资源
    最近更新 更多