• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Keychain Probleme

Matak

Braeburn
Registriert
08.02.13
Beiträge
46
Hallo Leute,

ich habe ein kleines großes Problem. Ich erkläre erstmal mein Szenario:
Es gibt hierbei 4 Beteiligte + 2 verschiedene Apple-IDs:

Apple ID 1: A
Apple ID 2: B

Die Apple-IDs haben nichts miteinander zu tun

1: Bluetooth-Gerät (eigenes Produkt) P1: Hat natürlich einen identifier und kann mit iPad-App verbunden werden.

2: (Selbstgeschriebenes Treiber-Framework) A1: Der Treiber kommuniziert mit dem Bluetooth-Gerät und speichert die Daten für die erneute Verbindung im der Keychain. Dem Treiber kann gesagt werden, er solle sich mit einem bestimmten P1 verbinden, aber nur, wenn er es selber schon in der Keychain gespeichert hat. Es kann von außen kein P1 erstellt werden, sodass er sich dann mit dem verbindet.

3. Steuerungs-App für das iPad A2: Die App nutzt das Framework und visualisiert es eigentlich nur. Hier kann zb die Displayhelligkeit des Bluetooth-Geräts über das Framework eingestellt werden.

4. Fremde App B1: Diese App bekommt auch den Treiber und soll sich so mit dem Bluetooth-Gerät verbinden.

Meine Aufgabe ist es jetzt, eine Action Extension zu erstellen, sodass B1 diese aufrufen kann und dort ein Auswahlfenster bekommt, mit allen Bluetooth-Geräten, die mit der A2 verbunden waren. Der Nutzer kann es dann auswählen und es soll darüber, mit Hilfe des Treibers, mit B1 verbunden werden.

In der Keychain werden folgende Daten gespeichert (als Hilfe benutze ich https://github.com/kishikawakatsumi/UICKeyChainStore in A1 sowie in B1):
A1.DeviceData (vom Typ NSObject mit nur dem identifier als UUID)
KeychainKey
KeychainService
groupAccess

Über die ActionExtension übergebe ich dem identifer und den Namen des Bluetooth-Geräts. Das speichere ich fast genau wie in A1 auch in B1. In B1 erkennt der Treiber aber nicht, dass es in der Keychain jetzt ein P1 gibt. Setze ich das Team in B1 auf das gleich wie A1/A2 (wird dann gewissermaßen A3) erkennt er es natürlich ohne Probleme.

Jetzt zu meinen Fragen:
Kann es nicht funktionieren, weil A1 noch die Keychain von A benutzt auch wenn es als Framework in B1 integriert ist?
Mache ich beim speichern in die Keychain in B1 ich was falsch?

Ich hoffe, ich habe es einigermaßen verständlich erklärt.

Viele Grüße
Matak