私はこれについて多くの質問を見てきましたが、実際に答えを出す人は誰もいません(インポートするフレームワーク、実際のコードなど)。彼らはプライベートAPIでのみ言うので、アプリはアプリストアから拒否されます。
プライベートAPIを使用すると、個人的な使用のためにそれを行う方法を考えていたため、アプリが拒否されることを認識しています。 (iPhone SDK 3.1.2、iPod touch 2g)
私もこれを調べています。プロジェクトにbluetoothmanagerフレームワークとヘッダーファイルをインクルードする必要があります。それはにあるべきです
/ Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/BluetoothManager.framework /
ヘッダーファイルがない場合は、ライブラリから生成された.hファイルを取得して、プロジェクトにインクルードする必要があります。私はそれを見つけるためにグーグルで検索しました。ここに1つあります:
http://iphone-dev.googlecode.com/svn/branches/include-1.2-sdk/include/BluetoothManager/
それがプロジェクトに追加されると、ヘッダーファイルがすでにフレームワークにある場合、インポートは次のようになります。
_#import <BluetoothManager/BluetoothManager.h>
_
または、独自のBluetoothManager.hファイルをプロジェクトに追加した場合は次のようになります。
_#import "BluetoothManager.h
_
ここでBluetoothを切り替えるためのコードは次のとおりです。
_BluetoothManager *manager = [BluetoothManager sharedInstance];
[manager setEnabled:![manager enabled]];
_
私はこれを自分で行うためのユーティリティを構築しましたが、それは機能します。 UIを使用せずに、Bluetoothを切り替えて終了するユーティリティを作成するだけの場合は、XCodeで新しいプロジェクトを作成し、ウィンドウベースのアプリケーションテンプレートを使用することに注意してください。コードをdidFinishLaunchingWithOptionsメソッドに追加し、_[window makeKeyAndVisible]
_をexit(0)
に置き換えます。
バイナリとヘッダーファイルが両方ともPrivateFrameworksフォルダー内にあることを確認する必要があります。
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks
これにより、BluetoothManager.frameworkなどのPrivateFrameworksをアプリにインポートでき、エラーが発生しなくなります。ヘッダーをオンラインで入手する方法を見つけることができます。これは3.1.2で機能します。なぜなら、私は今、私のデバイスとSimで完全に機能するアプリを書いているからです。
シミュレータでテストする場合は、次を使用します。
#if TARGET_IPHONE_SIMULATOR
//This is where simulator code goes that use private frameworks
#else
/* this works in iOS 4.2.1 */
Class BluetoothManager = objc_getClass("BluetoothManager");
id btCont = [BluetoothManager sharedInstance];
[btCont setPowered:YES];
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
#if TARGET_IPHONE_SIMULATOR
exit( EXIT_SUCCESS ) ;
#else
/* this works in iOS 4.2.3 */
Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
id btCont = [BluetoothManager sharedInstance] ;
[self performSelector:@selector(toggle:) withObject:btCont afterDelay:1.0f] ;
#endif
return YES ;
}
#if TARGET_IPHONE_SIMULATOR
#else
- (void)toggle:(id)btCont
{
BOOL currentState = [btCont enabled] ;
[btCont setEnabled:!currentState] ;
[btCont setPowered:!currentState] ;
}
#endif
上記の方法はiOS4.2.3で機能します
BluetoothManagerプライベートAPIを機能させるには、次の手順を実行する必要があります。1。Harkonianによって示される4つのヘッダーファイルを取得し、それらをSDKファイルに追加します(ヘッダーファイルをプロジェクトに追加します)。2。フレームワークをプロジェクトに追加します(追加します)。プロジェクトへのバイナリファイル)3。BluetoothManagerサービスを操作するための変数を作成します。例:btManager = [BluetoothManager sharedInstance]; 4. BluetoothManagerのメソッドを使用します。これらはすべて、BluetoothManager.hで確認できます。
ここで入手できる完全なサンプルをまとめました: http://www.pocketmagic.net/?p=2827
これがお役に立てば幸いです、ラドゥ
Iphone5sで
[btCont setEnabled:!currentState]; [btCont setPowered:!currentState];
走っていない
解決策は、launchctlをシステムコールすることだと思います。これは、システムサービスの開始/停止を担当するデーモンだからです。