注:これはApp Store向けのアプリではないため、プライベートAPIを使用することは私には関係ありません。
このSOの質問に基づいて、Xamarin / Monotouchを使用して機内モードのオンとオフを切り替えようとしています:プライベートAPIを使用してIOS5.1で機内モードをオン/オフにする方法
このコードをモノタッチで実行するのに苦労しています。最初に試したのは、モノタッチバインディングプロジェクトを使用してネイティブのObjectiveCライブラリを作成することでした。
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
これを行うためのより良いまたはより簡単な方法はありますか?そうでない場合、誰かが私の現在のアプローチで間違っていることを提案できますか?