UNPKG

@goongmaps/goong-map-react-native

Version:

A Goong GL react native module for creating custom maps

89 lines (62 loc) 2.38 kB
## Custom http headers ### Intro Custom headers are implemented using OkHttp interseptor for android and method swizzling for iOS. [Method swizzling](https://en.wikipedia.org/wiki/Monkey_patch) is done on the `[NSMutableURLRequest requestWithURL:]` to allow adding headers during runtime. ### Prerequisites #### Android None #### IOS To enable this on iOS you need to call `[[MGLCustomHeaders sharedInstance] initHeaders]` pretty early in the lifecycle of the application. This will swizzle the custom method. Suggested location is `[AppDelegate application: didFinishLaunchingWithOptions:]` #### Working example (AppDelegate.m) ```obj-c @implementation AppDelegate // (1) Include the header file #import "MGLCustomHeaders.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"SampleApp" initialProperties:nil]; // (2) Init headers, add swizzle method [[MGLCustomHeaders sharedInstance] initHeaders]; // (3*) Optionally you can add some global headers here [[MGLCustomHeaders sharedInstance] addHeader:@"IP" forHeaderName:@"X-For-Real"]; ... return YES; } ... @end ``` ### Sending custom http headers with the tile requests You can configure sending of custom http headers to your tile server. This is to support custom authentication or custom metadata which can't be included in the url. You can add and remove headers at runtime. #### To add a header ```javascript GoongSDK.addCustomHeader('Authorization', '{auth header}'); ``` #### To remove a header ```javascript GoongSDK.removeCustomHeader('Authorization'); ``` #### Working example ```javascript export default class HelloWorldApp extends Component { componentDidMount() { GoongSDK.addCustomHeader('Authorization', '{auth header}'); } render() { GoongSDK.addCustomHeader('X-Some-Header', 'my-value'); return ( <View style={styles.page}> <View style={styles.container}> <GoongSDK.MapView style={styles.map} styleURL={STYLE_URL} /> </View> </View> ); } } ```