2017-02-22 25 views
0

У меня был LocationController.mm файл в моей папке Assets/Plugins/iOS. Вся функциональность внутри него отлично работала. Я переименовал оба файла и класс внутри в BackgroundController. После этого все функции перестали работать.Unity для плагина iOS не работает после переименования

Как выглядит didFinishLaunchingWithOptions и startUnity методы никогда не звонят. Если я вызываю метод _GetLocation() из Unity, он работает, но всегда возвращает все нули.

Есть ли способ импортировать этот файл? Спасибо за ответ.

BackgroundController.mm (бывший LocationController.mm) Файл:

#import <Foundation/Foundation.h> 
#import <CoreLocation/CoreLocation.h> 

#import "UnityAppController.h" 

@interface BackgroundController : UnityAppController 
<CLLocationManagerDelegate>{ 
    CLLocationManager *locationManager; 
} 
@end 

extern bool _unityAppReady; 

static float latitude = 0; 
static float longitude = 0; 
static float horizontalAccuracy = 0; 

@implementation BackgroundController{ 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 

    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

-(void) startUnity:(UIApplication*) application { 
    [self startStandardUpdates]; 

    [super startUnity:application]; 
} 

- (void)startStandardUpdates 
{ 
    // Create the location manager if this object does not 
    // already have one. 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    // Set a movement threshold for new events. 
    locationManager.distanceFilter = 10; // meters 

    [locationManager requestAlwaysAuthorization]; 

    [locationManager startUpdatingLocation]; 
} 

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    // updating location values 
} 

// other methods implementation 

@end 

extern "C" const char* _GetLocation() 
{ 

    NSString *location = [NSString stringWithFormat:@"%f,%f,%f",latitude,longitude,horizontalAccuracy]; 

    char* ret = (char*)::malloc(location.length + 1); 
    ::memcpy(ret, [location UTF8String], location.length); 
    ret[location.length] = 0; 

    return ret; 
} 

IMPL_APP_CONTROLLER_SUBCLASS(BackgroundController) 

После сборки на Xcode файл находится в папке Libraries/Plugins/iOS как раньше.

Я пытался использовать файлы ReimportAll, но это не помогло.

Когда я переименую все обратно на LocationController, все еще ничего не работает.

У меня есть все разрешения, установленные в info.plist.

ответ

0

Все стало работать после того, как я переименовал файл в BackgroundController.m, попытался выполнить сборку, получил ошибку, а затем переименован в BackgroundController.mm.

Я сделал много, поэтому я не уверен, что мой ответ правильный.