2015-03-23 22:07:33 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*/
|
2015-02-06 23:43:59 +00:00
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
2015-02-25 20:40:49 +00:00
|
|
|
#import "RCTJSMethodRegistrar.h"
|
|
|
|
|
2015-02-06 23:43:59 +00:00
|
|
|
@class RCTBridge;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The type of a block that is capable of sending a response to a bridged
|
|
|
|
* operation. Use this for returning callback methods to JS.
|
|
|
|
*/
|
|
|
|
typedef void (^RCTResponseSenderBlock)(NSArray *response);
|
|
|
|
|
|
|
|
/**
|
2015-02-25 20:40:49 +00:00
|
|
|
* Provides the interface needed to register a bridge module.
|
2015-02-06 23:43:59 +00:00
|
|
|
*/
|
2015-02-25 20:40:49 +00:00
|
|
|
@protocol RCTBridgeModule <RCTJSMethodRegistrar>
|
2015-02-06 23:43:59 +00:00
|
|
|
@optional
|
|
|
|
|
|
|
|
/**
|
2015-03-02 19:36:55 +00:00
|
|
|
* A reference to the RCTBridge. Useful for modules that require access
|
|
|
|
* to bridge features, such as sending events or making JS calls. This
|
|
|
|
* will be set automatically by the bridge when it initializes the module.
|
|
|
|
* To implement this in your module, just add @synthesize bridge = _bridge;
|
2015-02-06 23:43:59 +00:00
|
|
|
*/
|
2015-03-02 19:36:55 +00:00
|
|
|
@property (nonatomic, strong) RCTBridge *bridge;
|
2015-02-06 23:43:59 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The module name exposed to JS. If omitted, this will be inferred
|
|
|
|
* automatically by using the native module's class name.
|
|
|
|
*/
|
|
|
|
+ (NSString *)moduleName;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Place this macro inside the method body of any method you want to expose
|
|
|
|
* to JS. The optional js_name argument will be used as the JS method name
|
|
|
|
* (the method will be namespaced to the module name, as specified above).
|
|
|
|
* If omitted, the JS method name will match the first part of the Objective-C
|
|
|
|
* method selector name (up to the first colon).
|
|
|
|
*/
|
|
|
|
#define RCT_EXPORT(js_name) __attribute__((used, section("__DATA,RCTExport" \
|
|
|
|
))) static const char *__rct_export_entry__[] = { __func__, #js_name }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Injects constants into JS. These constants are made accessible via
|
2015-03-02 19:36:55 +00:00
|
|
|
* NativeModules.ModuleName.X. This method is called when the module is
|
|
|
|
* registered by the bridge. It is only called once for the lifetime of the
|
|
|
|
* bridge, so it is not suitable for returning dynamic values, but may be
|
|
|
|
* used for long-lived values such as session keys, that are regenerated only
|
|
|
|
* as part of a reload of the entire React application.
|
2015-02-06 23:43:59 +00:00
|
|
|
*/
|
2015-02-25 20:40:49 +00:00
|
|
|
- (NSDictionary *)constantsToExport;
|
2015-02-06 23:43:59 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notifies the module that a batch of JS method invocations has just completed.
|
|
|
|
*/
|
|
|
|
- (void)batchDidComplete;
|
|
|
|
|
|
|
|
@end
|