2013-02-19 14 views
8

私はMac/CocoaアプリケーションでIOBluetoothDeviceとペアを組んでおり、プログラムで「ペアリング」したいと考えています。つまり、システム環境設定のBluetoothセクションの左ペインからデバイスを削除したいと思います。Cocoa/ObjCでBluetoothデバイスを「ペアにする」ことはできますか?

私は[IOBluetoothDevice removeFromFavorites]を見ましたが、デバイスの「お気に入り」属性の隣のハートアイコンが削除されます。デバイスはまだ左ペインに表示されています。

これはココアによって可能ですか?上の写真で

Bluetooth Section of System Preferences

、私はプログラム的に左側のペインから "AppleのMighty Mouseは" を削除したいと思います。

+0

macまたはiosアプリで同じものを削除しますか? –

+0

@hussainShabbirタグはあなたにそれを伝えるべきです! – Sulthan

答えて

9

ペアデバイスは、システム環境設定の一部です。

ファイルは、Bluetoothの設定が/Library/Preferencesにあり、その名前はcom.apple.Bluetooth.plistです。

com.apple.Bluetooth.plist

ただし、ファイルを直接編集することはできません。 System ConfigurationフレームワークのSCPreferencesクラスを使用する必要があります。

システム設定にアクセスする/変更するAPIは、かなり低いレベルです。

編集:次のコードは、スーパーユーザーモードで実行する場合に機能します。私はMac OSの開発者ではありませんが、AuthorizationRefで初期化し、ユーザーモードで実行する必要があります(ユーザーはシステム構成へのアクセスを確認します)。

SCPreferencesRef prefs = SCPreferencesCreate(kCFAllocatorDefault, 
              CFSTR("Test"), 
              CFSTR("/Library/Preferences/com.apple.Bluetooth.plist")); 

const CFStringRef PAIRED_DEVICES_KEY = CFSTR("PairedDevices"); 

NSArray *pairedDevices = (__bridge NSArray *) SCPreferencesGetValue(prefs, PAIRED_DEVICES_KEY); 

NSLog(@"Paired devices: %@", pairedDevices); 

NSString *deviceToRemove = @"e4-32-cb-da-ca-2f";   

NSMutableArray *newPairedDevices = [pairedDevices mutableCopy]; 
[newPairedDevices removeObject:deviceToRemove]; 

Boolean valueSet = SCPreferencesSetValue(prefs, PAIRED_DEVICES_KEY, (__bridge CFPropertyListRef) [NSArray arrayWithArray:newPairedDevices]); 

NSLog(@"Value set: %@", (valueSet) ? @"YES" : @"NO"); 

if (!valueSet) { 
    NSLog(@"Error: %@", SCCopyLastError()); 
} 

Boolean saved = SCPreferencesCommitChanges(prefs); 

if (!saved) { 
    NSLog(@"Error: %@", SCCopyLastError()); 
} 

NSLog(@"Saved: %@", (saved) ? @"YES" : @"NO"); 

CFRelease(prefs); 
関連する問題