首页 > 系统 > iOS > 正文

Reactnative-iOS回调Javascript的方法

2020-07-26 02:24:06
字体:
来源:转载
供稿:网友

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];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表