Примечание: это не приложение для 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
Есть ли лучший или более простой способ сделать это? Если нет, может ли кто-нибудь предположить, что я делаю неправильно с моим текущим подходом?