2015-02-04 2 views
5

In diesen Tagen arbeite ich an einem Projekt, in dem wir ein Nicht-MFI-Bluetooth-Gerät mit dem iPhone verbinden müssen, und dieses Gerät wird nicht unterstützt ein BLE-Peripherie-Client, also müssen wir dies auf klassischem Bluetooth tun.Senden und Empfangen von Daten mit BluetoothManager.framework private API unter iOS

konnte ich das Gerät mit dem iPhone gekoppelt und verbunden BluetoothManager.framework mit der Führung der demo project BeeTee

Aber ich habe nicht gewußt, wie zu senden und recv Daten verwendet, kann ich nicht die API in der Klassen- finden Dump-Header.

Es scheint, dass die Antwort in diesem structs:BTAccessoryManagerImpl & BTSessionImpl & BTDeviceImpl drei liegt, aber ich kann die Definition von ihnen nicht bekommen.

@class NSMutableDictionary; 

struct BTSessionImpl { }; 
struct BTDeviceImpl { }; 


@interface BluetoothManager : NSObject { 
    struct BTAccessoryManagerImpl { } *_accessoryManager; 
    BOOL _audioConnected; 
    int _available; 
    NSMutableDictionary *_btAddrDict; 
    NSMutableDictionary *_btDeviceDict; 
    struct BTDiscoveryAgentImpl { } *_discoveryAgent; 
    struct BTLocalDeviceImpl { } *_localDevice; 
    struct BTPairingAgentImpl { } *_pairingAgent; 
    BOOL _scanningEnabled; 
    BOOL _scanningInProgress; 
    unsigned int _scanningServiceMask; 
    struct BTSessionImpl *_session; // struct BTSessionImpl { } *_session; 

} 

+ (int)lastInitError; 
+ (id)sharedInstance; 

- (struct BTAccessoryManagerImpl *)_accessoryManager; // - (struct BTAccessoryManagerImpl { }*)_accessoryManager; 
- (void)_advertisingChanged; 
- (BOOL)_attach:(id)arg1; 
- (void)_cleanup:(BOOL)arg1; 
- (void)_connectabilityChanged; 
- (void)_connectedStatusChanged; 
- (void)_discoveryStateChanged; 
- (BOOL)_onlySensorsConnected; 
- (void)_postNotification:(id)arg1; 
- (void)_postNotificationWithArray:(id)arg1; 
- (void)_powerChanged; 
- (void)_removeDevice:(id)arg1; 
- (void)_restartScan; 
- (void)_scanForServices:(unsigned int)arg1 withMode:(int)arg2; 
- (void)_setScanState:(int)arg1; 
- (BOOL)_setup:(struct BTSessionImpl*)arg1; 
- (void)acceptSSP:(int)arg1 forDevice:(id)arg2; 
- (id)addDeviceIfNeeded:(struct BTDeviceImpl *)arg1; 
- (BOOL)audioConnected; 
- (BOOL)available; 
- (void)cancelPairing; 
- (void)connectDevice:(id)arg1 withServices:(unsigned int)arg2; 
- (void)connectDevice:(id)arg1; 
- (BOOL)connectable; 
- (BOOL)connected; 
- (id)connectedDevices; 
- (id)connectingDevices; 
- (void)dealloc; 
- (BOOL)devicePairingEnabled; 
- (BOOL)deviceScanningEnabled; 
- (BOOL)deviceScanningInProgress; 
- (void)enableTestMode; 
- (BOOL)enabled; 
- (void)endVoiceCommand:(id)arg1; 
- (id)init; 
- (BOOL)isAnyoneAdvertising; 
- (BOOL)isAnyoneScanning; 
- (BOOL)isDiscoverable; 
- (BOOL)isServiceSupported:(unsigned int)arg1; 
- (int)localDeviceSupportsService:(unsigned int)arg1; 
- (id)pairedDevices; 
- (void)postNotification:(id)arg1; 
- (void)postNotificationName:(id)arg1 object:(id)arg2 error:(id)arg3; 
- (void)postNotificationName:(id)arg1 object:(id)arg2; 
- (int)powerState; 
- (BOOL)powered; 
- (void)resetDeviceScanning; 
- (void)scanForConnectableDevices:(unsigned int)arg1; 
- (void)scanForServices:(unsigned int)arg1; 
- (void)setAudioConnected:(BOOL)arg1; 
- (void)setConnectable:(BOOL)arg1; 
- (void)setDevicePairingEnabled:(BOOL)arg1; 
- (void)setDeviceScanningEnabled:(BOOL)arg1; 
- (void)setDiscoverable:(BOOL)arg1; 
- (BOOL)setEnabled:(BOOL)arg1; 
- (void)setPincode:(id)arg1 forDevice:(id)arg2; 
- (BOOL)setPowered:(BOOL)arg1; 
- (void)showPowerPrompt; 
- (void)startVoiceCommand:(id)arg1; 
- (void)unpairDevice:(id)arg1; 
- (BOOL)wasDeviceDiscovered:(id)arg1; 

@end 
+0

Wie Sie mit dem Bluetooth verbunden sind mit dem Bee Tee Bluetooth Framework –

Antwort

2

Lesen oder Schreiben von Daten auf einem Bluetooth-Verbindung kann /dev/ttys* über eine virtuelle Datei durchgeführt werden. Nach einer erfolgreichen Verbindung mit dem richtigen Dienst müssen Sie BTDeviceGetComPortForService von MobileBluetooth.framework aufrufen, die den richtigen Dateipfad abrufen. Ein vollständiges Beispiel mit der richtigen Header-Datei finden Sie here.

Öffnen Sie die Datei und lesen oder schreiben Sie sie. Das ist es. Um Daten asynchron zu lesen, haben Sie möglicherweise look here bei den Methoden und readCompletionNotification.

Das funktionierte für mich auf einem jailbroken iOS 7 iPhone. Ich würde gerne hören, ob jemand anderes Erfolg mit dieser Lösung hat.

+0

Vielen Dank! alu. – Nick

+0

Hallo! Ich versuche, eine Verbindung zu einem Bluetooth-Gerät mit iOS 10.0 herzustellen, ich erreiche das mit Bluetooth Manager, aber ich muss senden/empfangen und ich weiß nicht, wie man MobileBluetooth.framework verwendet. Weißt du, wie ich Daten vom Gerät abrufen kann? Vielen Dank ;) – llKoull

Verwandte Themen