2011-01-13 10 views
1

Ich möchte einen Kontakt programmgesteuert in das "lokale" Adressbuch erstellen (so dass es nicht versucht zu synchronisieren, was einige Kompatibilitätsprobleme mit Exchange verursacht).Wie erstelle ich einen Kontakt im "lokalen" Adressbuch?

Wenn ein lokales Adressbuch bereits vorhanden ist, ich es mit ABAddressBookCopyArrayOfAllSources finden können alle Quellen im Adressbuch zu bekommen, für die ABRecordRef mit einem sourceTypeRef von „kABSourceTypeLocal“ schauen dann - wenn ich das recordRef zu ABPersonCreateInSource passieren dann, ich kann einen Datensatz zum lokalen Verzeichnis hinzufügen.

Hat jemand irgendwelche Vorschläge, wie ich am besten über einen Datensatz in der "local addressBook" erstellen sollte, wenn es kein lokales Adressbuch bereits gibt?

(auch, wie könnte ich der Pre-iOS4, wie die oben genannten Anrufe dann nicht zur Verfügung standen?)

Dank

Peter

+0

hi, ich wollte nur bestätigen .... wollten Sie in der Lage sein, einen Kontakt zu der Standard-Kontakte-Anwendung zu speichern? – Pavan

+0

Nicht genau, da das Standardadressbuch möglicherweise nicht das lokale Adressbuch ist, und ich brauche das lokale Adressbuch (oder ein anderes Mittel zur Vermeidung der Synchronisierung, da dies meinen Kontaktdatensatz durch Neuformatierung der E-Mail-Adresse zerstört). Wenn ich manuell ein lokales Adressbuch (d. H. "Auf meinem iPhone" auf der Kontaktgruppenseite) erstelle und den Kontakt dort abspeichere, funktioniert meine App gut, aber ich möchte dies für den Benutzer transparent machen. –

+0

... auf der anderen Seite, wenn Ihre Frage war "Wollte ich, dass der Kontakt im Adressbuch gespeichert wird, so dass er von anderen Apps (statt privaten) zugegriffen werden kann?", Dann sollte die Antwort "Ja" lauten. –

Antwort

1

Sie sollen in diesem Beitrag einen Blick: Obtaining Specific ABSource from ABAddressBook in iOS 4+

, die zeigt, wie bestimmte Quellen (ABSource) innerhalb des ABAddressBook identifiziert und ausgerichtet werden. Während dieser Code die Funktion ABGroupCreateInSource() erwähnt, gibt es eine ähnliche Funktion, ABPersonCreateInSource() für die Arbeit mit Personen.

1

Ich fand eine einfache Problemumgehung. Da Sie nicht sehen können/lokale Kontakte hinzufügen, wenn Sie verwenden keine bereits bestehenden lokalen Kontakt haben, wird die folgende Abhilfe sicher sein:

  1. die Sie verwenden Google Mail (Exchange) Lassen Sie vorgeben
  2. auf Ihre Mail-Einstellungen für Google Mail gehen und den Kontakt sync
  3. deaktivieren Wenn Sie gefragt werden, ob Sie die Google Mail- Kontakte von Ihrem Telefon halten oder entfernen möchten, wählen Sie sie entfernen (keine Sorge, sie werden nicht aus Google Mail entfernt)
  4. Gehen Sie zurück zu Ihren Kontakten. Sie können nun einen lokalen Kontakt erstellen
  5. Schließlich geht zurück zu Einstellungen/Mail/Gmail und aktivieren die Kontakte synchronisieren
  6. Voila, Ihre Google Mail-Kontakte zurück in Ihr Telefon und Sie jetzt haben 1 lokalen Kontakt, ermöglicht Ihnen den Zugriff auf die Gruppe Lokale Kontakte zusätzlich zur Google Mail-Kontaktgruppe.

Hoffe, dass hilft (Ich hatte gerade das gleiche Problem und fand diese Workaround, die gut für mich funktioniert).

Ben.

+1

Hallo, ja, das funktioniert, und ich habe diese Methode meinen Benutzern empfohlen, aber es wäre so viel besser, dies aus Code zu tun. Es gibt immer eine bestimmte Anzahl von Benutzern, die stolpern werden (und Sie bekommen gelegentlich schlechte Bewertungen, weil sie keine Hilfe suchen) –

Verwandte Themen