原生向JS传值,取不到值,sendAppEventWithName有警告提示



    • (void)sendUserInfo:(NSString *)userInfo {

    [self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder" body:userInfo];

    }

    0_1468576801292_74D13D3E-1EBF-4DD1-AF19-60042C58AB40.png

    subscription = NativeAppEventEmitter.addListener('EventReminder', (reminder) => {
    console.log(reminder);
    });

    但JS层就是不执行,sendUserInfo这个是执行了的



  • https://github.com/facebook/react-native/issues/8714
    是版本更新的原因,旧的方法不支持了,这里有解决方法
    但还是要有问题,_bridge为nil,报错。。。求助高手啊



  • http://bbs.reactnative.cn/topic/602/ios-native-调用-js-代码的时候-出问题了-求助/3

    看了论坛上这位同学的答案

    • (id)allocWithZone:(NSZone *)zone {
      static GetuiManager *sharedInstance = nil;
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
      sharedInstance = [super allocWithZone:zone];
      });
      return sharedInstance;
      }
      把这段复制进去神奇的好了,但是不懂为什么。。有人解答么


  • 楼主你用了这个办法之后JS那边的console.log就执行了吗?为什么我贴了那一段代码,JS层还是没有执行。



  • @natsu12

    #import "RCTGetui.h"

    @implementation GetuiManager

    RCT_EXPORT_MODULE();

    • (id)allocWithZone:(NSZone *)zone {
      static GetuiManager *sharedInstance = nil;
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
      sharedInstance = [super allocWithZone:zone];
      });
      return sharedInstance;
      }
    • (NSArray<NSString *> *)supportedEvents {
      return @[@"EventReminder"];
      }

    [self sendEventWithName:@"EventReminder" body:要传的值];

    现在没问题了,这个是完整的你看看



  • 楼主能给我个联系方式嘛?我也是这块遇到了问题



  • RCTEventEmitter 現在都用這個了 繼承後

    self.sendEvent(withName: "", body: data)
    -swift



  • 兄弟。。。你就是写个推的老哥吗。。。我正在集成个推。。。


登录后回复