2013-03-19 3 views
3

Примечание: это не приложение для App Store, поэтому использование частных API не вызывает у меня беспокойства.Переключить режим полета monotouch xamarin

Я пытался переключать режим полета и назад по использованию Xamarin/MonoTouch основаны от этого так вопрос: How to turn on/off airplane mode in IOS 5.1 using private API

У меня трудное время получить этот код, чтобы работать в MonoTouch - первая вещь, которую я попробовал создать собственную объектную библиотеку C, используя проект привязки monotouch.

AppSupport структура используется так что мой файл linkwith выглядит следующим образом:

[assembly: LinkWith ("libAirplaneModeLib.a", LinkTarget.ArmV7, ForceLoad = true, Frameworks = "AppSupport")] 

Когда я делаю это, он компилирует, но я не могу ссылаться на пространство имен из моего основного проекта. Если я не включают в себя структуру следующим образом:

[assembly: LinkWith ("libAirplaneModeLib.a", LinkTarget.ArmV7, ForceLoad = true)] 

В этом случае я могу ссылаться на пространство имен, но основной проект компилируется по увязке с:

"_OBJC_CLASS_$_RadiosPreferences", referenced from: 
     objc-class-ref in libAirplaneModeLib.a(AirplaneModeLib.o) 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 

error MT5202: Native linking failed. Please review the build log. 

Мой файл ApiDefinition выглядит следующим образом:

[BaseType(typeof(NSObject))] 
public interface AirplaneModeLib 
{ 
    [Export("toggleAirplane")] 
    void ToggleAirplane(); 
} 

уроженец библиотека выглядит следующим образом:

#import "AirplaneModeLib.h" 
#import "RadiosPreferences.h" 

@implementation AirplaneModeLib 

- (void) toggleAirplane { 
    RadiosPreferences* preferences = [[RadiosPreferences alloc] init]; 
    preferences.airplaneMode = NO; 
    [preferences synchronize]; 

    preferences.airplaneMode = YES; 
    [preferences synchronize]; 
    [preferences release];   
} 

@end 

Есть ли лучший или более простой способ сделать это? Если нет, может ли кто-нибудь предположить, что я делаю неправильно с моим текущим подходом?

ответ

0

Кажется, я решил это. По какой-то причине привязки проекта не может ссылаться на структуру AppSupport (или может каким-либо способом, я не знаю)

В моем главном проекте я вручную добавил дополнительные аргументы строить

-gcc_flags "-F /path/to/framework -framework AppSupport" 

И теперь он компилируется. Все еще не переключает режим самолета, но это отдельная проблема, я думаю ...

Похоже, что хотя этот код будет работать, он не переключит режим самолета. Насколько я могу судить, нет никакого способа сделать это с помощью не-jailbroken устройства в iOS 5+.

Смежные вопросы