在Swift中将本机发送事件发送到JavaScript

前端之家收集整理的这篇文章主要介绍了在Swift中将本机发送事件发送到JavaScript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 Swift中将事件发送到 JavaScript

有一些Objc代码示例如何将事件发送到JavaScript,但我需要在swift中做什么?

#import "RCTBridge.h"
#import "RCTEventDispatcher.h"

@implementation CalendarManager

@synthesize bridge = _bridge;

- (void)calendarEventReminderReceived:(NSNotification *)notification
{
  NSString *eventName = notification.userInfo[@"name"];
  [self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder"
                                               body:@{@"name": eventName}];
}

@end
我只是想弄清楚自己.这实际上非常简单.继承人我是怎么做到的:

EventTests.m

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(EventTests,NSObject)

RCT_EXTERN_METHOD( testEvent:(NSString *)eventName )

@end

EventTests.Swift

import UIKit

@objc( EventTests )
class EventTests: NSObject {
    // Swift doesn't have synthesize - just define the variable
    var bridge: RCTBridge!

    @objc func testEvent( eventName: String ) {
        self.bridge.eventDispatcher.sendAppEventWithName( eventName,body: "Woot!" )
    }
}

MyModule.js

var React      = require( 'react-native' );
var EventTests = require( 'NativeModules' ).EventTests;

var {
    Component,NativeAppEventEmitter
} = React;

var testEventName = 'test';

class MyModule extends Component {

    constructor( options ) {
        super( options );

        // Register for our test event
        NativeAppEventEmitter.addListener( testEventName,( body ) => {
            console.log( body );
        });

        // Call objective c function,which will emit our test event
        EventTests.testEvent( testEventName );
    }
}

module.exports = MyModule;

还要确保在桥接标头中包含一些导入:

#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
原文链接:https://www.f2er.com/swift/318718.html

猜你在找的Swift相关文章