当前位置: 首页 > 编程笔记 >

Reactnative-iOS回调Javascript的方法

邹祺
2023-03-14
本文向大家介绍Reactnative-iOS回调Javascript的方法,包括了Reactnative-iOS回调Javascript的方法的使用技巧和注意事项,需要的朋友参考一下

Reactnative可以调用原生模块,原生模块也可以给JavaScript发送事件通知.最好的方法是继承RCTEventEmitter.自定义继承自PushEventEmitter的子类RCTEventEmitter.

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>

@interface PushEventEmitter : RCTEventEmitter <RCTBridgeModule>

- (void)addEventReminderReceived:(NSNotification *)notification;

@end

实现supportedEvents方法

#import "PushEventEmitter.h"

@implementation PushEventEmitter

+ (id)allocWithZone:(NSZone *)zone {
  static PushEventEmitter *sharedInstance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    sharedInstance = [super allocWithZone:zone];
  });
  return sharedInstance;
}

RCT_EXPORT_MODULE();

- (NSArray<NSString *> *)supportedEvents
{
  return @[@"EventReminder"];
}

- (void)addEventReminderReceived:(NSNotification *)notification {
  [self sendEventWithName:@"EventReminder" body:@{@"name": @"FlyElephant"}];
}

@end

React native 设置:

import {
  NativeModules,
  NativeEventEmitter,
} from 'react-native';

const PushEventEmitter = NativeModules.PushEventEmitter;

const emitterManager = new NativeEventEmitter(PushEventEmitter);

订阅通知和移除通知:

  componentDidMount() {
    subscription = emitterManager.addListener(
      'EventReminder',
      (reminder) => console.log('JavaScript接收到通知:'+reminder.name)
    );

  }
  componentWillUnmount(){
    subscription.remove();// 移除通知
  }

调用测试:

PushEventEmitter *eventEmitter = [PushEventEmitter allocWithZone:nil];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 在iOS中,如何从中的Javascript调用Objective-C方法并将其发送回Java数据?我知道可以使用Webkit库在OSX上完成此操作,但是在iOS上可以吗?PhoneGap如何实现这一目标? 问题答案: 有一个API可直接从Objective-C调用JavaScript, 但不能直接从Javascript调用Objective-C。 如何告诉您的Objective-C代码

  • 本文向大家介绍ReactNative-JS 调用原生方法实例代码,包括了ReactNative-JS 调用原生方法实例代码的使用技巧和注意事项,需要的朋友参考一下 第一步首先创建ReactNative 模块类继承ReactContextBaseJavaModule 第二步创建一个React包管理器实现ReactPackage将每个模块放到模块集合中 第三步在应用入口注册这个React包管理器 第四

  • 新建一个React Native工程,参考React Native 官网 react-native init hello cd hello yarn add baidumobstat-react-native react-native link 进入新建的目录,打开ios目录下的hello.xcodeproj工程,在iOS工程的Linked Frameworks and Libr

  • 本文向大家介绍ReactNative之FlatList的具体使用方法,包括了ReactNative之FlatList的具体使用方法的使用技巧和注意事项,需要的朋友参考一下 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过Android的朋友都知道,Android的Lis

  • 使用 react native 和 socket.io 开发的模仿微信聊天的 app,后台使用 node 和 moogodb,目前还在开发中。 已完成的功能 登录 注册 通讯录 两人文字聊天 下拉获取聊天历史记录 未读消息提示 正在开发的功能 朋友圈 多人聊天 用户管理 系统设置 语音聊天 发送图片 效果展示     

  • 问题内容: 我在使用普通旧JavaScript(无框架)在回调函数中引用我的对象时遇到了一些麻烦。 现在,当我创建一个新对象时(在DOM加载后,使用span#test) onclick函数中的“ this”指向span#test而不是foo对象。 如何在onclick函数中获取对foo对象的引用? 问题答案: (提取了一些其他答案的注释中隐藏的解释) 问题在于以下几行: 在这里,您传递了一个函数对

  • 从问题的答案中,我可以理解FXMLDocumentController可以作为参数传递,但我不确定如何在通过javascript回调访问控制器时访问它。

  • 本文向大家介绍详解JavaScript的回调函数,包括了详解JavaScript的回调函数的使用技巧和注意事项,需要的朋友参考一下 本文的目录: 什么是回调或高级函数 回调函数是如何实现的 实现回调函数的基本原则 回调地狱的问题和解决方案 实现自己的回调函数 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String、Array、Number、Obj