2013-02-19 42 views
8

मैंने अपने मैक/कोको ऐप में IOBluetoothDevice जोड़ा है और इसे प्रोग्रामेटिक रूप से "अनपेयर" करना चाहते हैं। यही है, मैं सिस्टम प्राथमिकताओं के ब्लूटूथ अनुभाग के बाएं फलक से डिवाइस को हटाना चाहता हूं।कोको/ओबीजेसी में ब्लूटूथ डिवाइस को "अनपेयर" करना संभव है?

मैंने [IOBluetoothDevice removeFromFavorites] देखा है, लेकिन यह डिवाइस के "पसंदीदा" विशेषता के बगल में दिल आइकन को हटा देता है - डिवाइस अभी भी बाएं फलक में सूचीबद्ध है।

क्या यह कोको के माध्यम से संभव है?

Bluetooth Section of System Preferences

ऊपर चित्र में, मैं प्रोग्राम के रूप में बाएँ फलक से "एप्पल माइटी माउस" को दूर करना चाहते हैं।

+0

क्या आप इसे मैक या आईओएस ऐप में हटाना चाहते हैं ?? –

+0

@ हुसैनशबीर टैग आपको यह बताना चाहिए! – Sulthan

उत्तर

9

जोड़े गए डिवाइस सिस्टम प्राथमिकताओं का हिस्सा हैं।

आप /Library/Preferences में ब्लूटूथ प्राथमिकताओं के साथ फ़ाइल पा सकते हैं, इसका नाम com.apple.Bluetooth.plist है।

com.apple.Bluetooth.plist

लेकिन, आप फ़ाइल को सीधे संपादित नहीं कर सकते। आपको System Configuration ढांचे से SCPreferences कक्षा का उपयोग करना चाहिए।

सिस्टम वरीयताओं को एक्सेस/संशोधित करने के लिए एपीआई नोट करें बहुत कम स्तर है।

संपादित करें: सुपरसियर मोड में चलाने पर निम्न कोड काम करता है। मैं खुद मैक ओएस डेवलपर नहीं हूं लेकिन इसे 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);