we have create a bridge react native to native for send location.
we use react RCT_EXPORT_METHOD for callback.
we create a object c global variable "coordinate" to store our location value and send to callback method
when call RCT_EXPORT_METHOD for callback our global variable "coordinate" show null in RCT_EXPORT_METHOD
Also we append static value in callback they send value to react nativeRCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback ){callback(@[@"Test"]);}
how to pass global variable value in callback or any other way to send my location data to react native
My .m file code:
#import "AppDelegate.h"#import <React/RCTBridge.h>#import <React/RCTBundleURLProvider.h>#import <React/RCTRootView.h>#import <Firebase.h>@implementation AppDelegate{ RCTRootView *rootView; NSMutableDictionary *coordinate;}RCT_EXPORT_MODULE();- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"OHCSMobile1" initialProperties:nil]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];UIViewController *rootViewController = [UIViewController new];rootViewController.view = rootView;self.window.rootViewController = rootViewController;[self.window makeKeyAndVisible];if ([FIRApp defaultApp] == nil) { [FIRApp configure];} self.manager = [[APScheduledLocationManager alloc] initWithDelegate:self]; return YES;}- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge{ #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];#elsereturn [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];#endif}-(void)scheduledLocationManager:(APScheduledLocationManager *)manager didFailWithError: (NSError *)error{ NSLog(@"error");}-(void)scheduledLocationManager:(APScheduledLocationManager *)manager didUpdateLocations: (NSArray<CLLocation *> *)locations{NSLog(@"locations");CLLocation * location = locations[0]; double latitute = location.coordinate.latitude; double longitute = location.coordinate.longitude;coordinate = [[NSMutableDictionary alloc] init];[coordinate setValue:[NSNumber numberWithDouble: latitute] forKey:@"LAT"];[coordinate setValue:[NSNumber numberWithDouble: longitute] forKey:@"LONG"];NSLog(@"%@oordinate", coordinate);} -(void)scheduledLocationManager:(APScheduledLocationManager *)manager didChangeAuthorization: (CLAuthorizationStatus)status{ NSLog(@"Authorization"); if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) { // The user accepted authorization [self.manager startUpdatingLocationWithInterval:30 acceptableLocationAccuracy:100]; }}RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback ) { if(coordinate != nil){callback(@[coordinate]);}else{callback(@[@"null"]);} } @end
PLease Help