Ida*_*she 3 ios uiactivityviewcontroller
我正在尝试考虑一种方法来使用UIActivityViewController(或使用SMS)从一个设备与另一个设备共享联系.
到目前为止,我一直在寻找,我不知道如何使用我的应用程序在设备之间共享联系人.
有任何想法吗?
erd*_*ser 11
经过几个月的搜索,我终于找到了实现这一目标的方法.
您可以使用此代码在UIActivityViewController中共享单个CNContact:
let contact: CNContact = /* your contact here */
let fileManager = NSFileManager.defaultManager()
let cacheDirectory = try! fileManager.URLForDirectory(NSSearchPathDirectory.CachesDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: true)
let fileLocation = cacheDirectory.URLByAppendingPathComponent("\(CNContactFormatter().stringFromContact(contact)!).vcf")
let contactData = try! CNContactVCardSerialization.dataWithContacts([contact])
contactData.writeToFile(fileLocation.path!, atomically: true)
let activityVC = UIActivityViewController(activityItems: [fileLocation], applicationActivities: nil)
presentViewController(activityVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
此代码将联系人转换为其NSData表示形式,将其保存到应用程序的缓存文件夹,并将该文件作为活动项共享.
如果要共享多个联系人,可以通过这种方式传递多个文件.
let contact: CNContact = /* your contact here */
let fileManager = FileManager.default
let cacheDirectory = try! fileManager.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileLocation = cacheDirectory.appendingPathComponent("\(CNContactFormatter().string(from: contact)!).vcf")
let contactData = try! CNContactVCardSerialization.data(with: [contact])
do {
try contactData.write(to: fileLocation.asURL(), options: .atomicWrite)
} catch {
...
}
let activityVC = UIActivityViewController(activityItems: [fileLocation], applicationActivities: nil)
present(activityVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |