Adressbuch auslesen z.B. mit CNContactPickerMBS

  1. 5 weeks ago

    Klemens K

    Oct 10 Pre-Release Testers, Xojo Pro

    Hi,
    ich würde gerne mit dem MBS Plugin z.B. CNContactPickerMBS macOS Kontakte auslesen.
    Ich habe mir dazu das Beispiel "CNContactPicker Test" angeschaut und denke, dass das genau
    meine Anforderung erfüllt, nur leider weiß ich nicht, wie ich die kompletten Adressdaten inkl.
    Ort, Plz Telefonummer etc. auslesen kann. Habt ihr damit schon Erfahrung gemacht?
    Leider wird ab XOJO 2019r2 die Addressbook Funktion nicht mehr supportet.

    Klemens

  2. Christian S

    Oct 11 Pre-Release Testers, Xojo Pro, XDC Speakers, Third Party Store Germany

    Du bekommst ein CNContactMBS Objekt.
    Und da kann man Sachen abfragen mit CNLabeledValueMBS und CNPostalAddressMBS . So ungefähr:

    Dim c As CNContactMBS // dein Kontakt
    
    Dim postalAddresses() As CNLabeledValueMBS = c.postalAddresses
    For Each postalAddresse As CNLabeledValueMBS In postalAddresses
      
      Dim p As CNPostalAddressMBS = postalAddresse.Value
      
      MsgBox p.Street + EndOfLine + p.PostalCode + " " + p.City
    Next
  3. Horst J

    Oct 11 Pre-Release Testers, Xojo Pro Europe, Germany, Stuttgart

    Und die E-Mail Adresse(n) bekommt man so:

    Dim p As variant
    Dim emailAddresses() As CNLabeledValueMBS = contact.emailAddresses
    For Each emailAddresse As CNLabeledValueMBS In emailAddresses
    p = emailAddresse.Value
    MsgBox p
    Next

  4. 4 weeks ago

    Klemens K

    Oct 12 Pre-Release Testers, Xojo Pro

    Hallo Christian,

    so einfach scheint das nicht zu gehen, beide Beispiele (oben) bekomme ich nicht zum Laufen.

    Könntest du mir in deinem Programm-Beispiel "ContactPicker Test" darstellen, wie ich neben dem Namen die Plz, Ort, Strasse, Telefonnummer, Email übernehmen kann? Danke.

    Klemens

  5. Klemens K

    Oct 13 Pre-Release Testers, Xojo Pro

    Danke erstmal, nach viel nachlesen und probieren bekommen ich nun die relevanten Daten ausgelesen. Aber irgendwie finde ich es schon merkwürdig, wie das Adressbuch von Apple aufgebaut ist bzw. auszulesen ist.

  6. Klemens K

    Oct 14 Pre-Release Testers, Xojo Pro

    Hi Christian,

    ich bin leider noch auf ein Problem gestossen.
    Wie kann ich das Feld Firmenname aus dem Apple Adressbuch auslesen?
    Unter CNLabeledValueMBS ist es ja ein String (organizationName), aber wenn ich diesen abfrage, erhalte ich diese Fehlermeldung:
    A Cocoa CNPropertyNotFetchedException was not handled: A property was not requested when contact was fetched.

    Im Debugger finde ich auch nirgendwo den Firmennamen. Wo finde ich den?

    Klemens

  7. Christian S

    Oct 14 Pre-Release Testers, Xojo Pro, XDC Speakers, Third Party Store Germany

    Das Feld organizationName wurde also nicht geladen!?

    Gibt's das bei dem Datensatz?
    Normal versuchen wir alle Werte zu laden.

  8. Christian S

    Oct 14 Pre-Release Testers, Xojo Pro, XDC Speakers, Third Party Store Germany

    Also ist das Programm signiert, hat entitlement für Kontakte drin?

    Dann im App.open:

    ContactStore.requestAccessForEntityType ContactStore.CNEntityTypeContacts

    um nach Erlaubnis zu fragen falls nötig.

    Der Kontakt im Event kommt eventuell ohne Organisation, daher vielleicht neu holen:

    dim e as NSErrorMBS
    Dim c As CNContactMBS = app.ContactStore.unifiedContactWithIdentifier(contact.identifier, e)
    
    Log "Contact: "+c.givenName + c.familyName
    Log "organization: "+c.organizationName

or Sign Up to reply!