Reactnative-iOS回调Javascript的方法
程序员文章站
2022-04-11 09:13:22
reactnative可以调用原生模块,原生模块也可以给javascript发送事件通知.最好的方法是继承rcteventemitter.自定义继承自pusheventem...
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];
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 通过AIDL实现跨进程更新UI
推荐阅读
-
Activity/Fragment结束时处理异步回调的解决方案
-
JavaScript中Math对象的方法介绍
-
asp.net及javascript判断是否手机访问的方法
-
ABP框架中导航菜单的使用及JavaScript API获取菜单的方法
-
javascript添加前置0(补零)的几种方法
-
Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】
-
win8系统怎么调屏幕亮度 win8调节屏幕亮度的四种方法
-
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
-
JavaScript中String对象的方法介绍
-
C#结合JavaScript实现秒杀倒计时的方法