javascript - Zendesk 支持 SDK 的 RCT_EXPORT_METHOD

标签 javascript objective-c react-native

我正在尝试桥接 Zendesk 支持 SDK 以在我的 React Native 应用程序中进行渲染。

这是我通常在 Objective-C 中执行的操作:

#import "ViewController.h"
#import <ZendeskSDK/ZendeskSDK.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)ButtonPress:(id)sender {
    [ZDKHelpCenter presentHelpCenterWithViewController:self];

}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

如何使用 RCT_EXPORT_METHOD 进行桥接?

此刻我得到了这样的东西:

#import "zendeskSupportView.h"
#import <ZendeskSDK/ZendeskSDK.h>
#import <React/RCTBridge.h>
#import <React/RCTEventDispatcher.h>
#import <React/UIView+React.h>

@implementation zendeskSupportView

RCT_EXPORT_MODULE()

RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback)
{
  UIViewController *rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
  rootController = [rootController topMostController];
  [ZDKHelpCenter presentHelpCenterWithViewController:rootController];

}



@end

最佳答案

要设置 native 模块,您可以引用 React Native module documentation 或查看我之前在项目中创建的 gist of a small module,它会打开 IOS 设置应用程序。

在 RCT_EXPORT_METHOD 宏代码中,您需要调用 [ZDKHelpCenter PresentHelpCenterWithViewController:self]; 。由于此函数中没有直接可用的 Controller 实例,因此您可以执行以下操作:

UIViewController *rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootController = [rootController topMostController];
[ZDKHelpCenter presentHelpCenterWithViewController:rootController];

以上代码,将 ios Controller 堆栈中最顶层的 Controller 传递给 ZendDeskHelpCenter。

关于javascript - Zendesk 支持 SDK 的 RCT_EXPORT_METHOD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41500133/

相关文章:

javascript - 无法修复 sigma js 中的 x 和 y 位置

ios - 如何在子类化 View 时减少代码冗余?

objective-c - 不想关闭 UIPopover

javascript - 如何使用谷歌地图javascript

javascript - 向下滚动页面,然后使用 jQuery 向上滚动

javascript - 使用 jquery 从 onsubmit 处理程序访问表单元素

objective-c - NSScrollView 的两个实例之间的同步滚动

android - react native ffmpeg : Native module cannot be null (ios) and null is not an object (evaluating 'RNFFmpegModule.enableLogEvents' ) (android)

android - react native : catch volume buttons press (not for volume adjusting)

javascript - 如何在 React Native 的同一行设置两个输入?