2
在我創建了一個快速的模塊,它開始在GCDAsyncUdpSocket聽當連接方法是從迅速陣營本地橋有時是零迅速模塊
@objc(MyModule)
class MyModule: NSObject, GCDAsyncUdpSocketDelegate {
var bridge: RCTBridge!
var socket: GCDAsyncUdpSocket!
func methodQueue() -> dispatch_queue_t {
return dispatch_queue_create("com.mycompany.greatapp", DISPATCH_QUEUE_SERIAL)
}
@objc func connect(resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: methodQueue())
//...start listening, etc
}
@objc func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData data: NSData!, fromAddress address: NSData!, withFilterContext filterContext: AnyObject!) {
bridge.eventDispatcher().sendAppEventWithName("got_msg", body: nil)
}
}
叫我也創建了一個私有實現
#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(MyModule, NSObject)
RCT_EXTERN_METHOD(connect resolver:(RCTPromiseResolveBlock *)resolve
rejecter:(RCTPromiseRejectBlock *)reject)
@end
但是有時bridge.eventDispatcher()
解包爲零,並且無法播送該事件。任何想法將不勝感激。