2016-07-11 5 views
2

連絡先アプリケーションのiPhone連絡先を選択し、.vcfファイルを生成し、このファイルに選択した連絡先を書き込み、サーバーに送信します。iPhone連絡先をプログラムで.vcfファイルにエクスポート

私がiOS 9で知っているように、アドレス帳の多くの機能は償却されていますので、誰でもこのコードを正しい方法で書くことができます。あなたが必要となります

+0

あなたの質問は広すぎます。このチュートリアルは、Swift https://www.raywenderlich.com/97936/address-book-tutorial-swift-iosのAddressBookで始めることをお勧めします。 –

答えて

3

一般的な作品は以下のとおりです。

  1. 携帯電話の連絡先にアクセスするためのフレームワークContacts
  2. ContactsUIフレームワークは、連絡先にアクセスするための組み込みビューコントローラを使用します。
  3. CNContactVCardSerialization.dataWithContactsを使用して、CNContactのデータをVCard形式にエンコードします。
  4. data.writeToURLを使用してデータをファイルに書き込みます。
  5. NSURLSessionを使用してサーバーにデータをアップロードします。

以下は、連絡先をVCard形式に保存する質問に答える例です。

import Contacts 

// Creating a mutable object to add to the contact 
let contact = CNMutableContact() 

contact.imageData = NSData() // The profile picture as a NSData object 

contact.givenName = "John" 
contact.familyName = "Appleseed" 

let homeEmail = CNLabeledValue(label:CNLabelHome, value:"[email protected]") 
let workEmail = CNLabeledValue(label:CNLabelWork, value:"[email protected]") 
contact.emailAddresses = [homeEmail, workEmail] 

contact.phoneNumbers = [CNLabeledValue(
    label:CNLabelPhoneNumberiPhone, 
    value:CNPhoneNumber(stringValue:"(408) 555-0126"))] 

let homeAddress = CNMutablePostalAddress() 
homeAddress.street = "1 Infinite Loop" 
homeAddress.city = "Cupertino" 
homeAddress.state = "CA" 
homeAddress.postalCode = "95014" 
contact.postalAddresses = [CNLabeledValue(label:CNLabelHome, value:homeAddress)] 

let birthday = NSDateComponents() 
birthday.day = 1 
birthday.month = 4 
birthday.year = 1988 // You can omit the year value for a yearless birthday 
contact.birthday = birthday 


let data = try CNContactVCardSerialization.dataWithContacts([contact]) 

let s = String(data: data, encoding: NSUTF8StringEncoding) 

if let directoryURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first { 

    let fileURL = directoryURL.URLByAppendingPathComponent("john.appleseed").URLByAppendingPathExtension("vcf") 

    try data.writeToURL(fileURL, options: [.AtomicWrite]) 
} 
関連する問題