标签: cncontact

iOS9 - CNContactPickerViewController :预选联系人

我使用新的 CNContactPickerViewController 从地址簿中选择联系人并在我的应用程序中使用它们。

当我按下按钮时,我调用此代码:

let contactPicker = CNContactPickerViewController()
        contactPicker.delegate = self
        contactPicker.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
        presentViewController(contactPicker, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

我使用以下 CNContactPickerDelegate 方法来选择多个联系人:

func contactPicker(picker: CNContactPickerViewController, didSelectContacts contacts: [CNContact]) {

    selectedRecipients = contacts.map { $0.emailAddresses.first!.value as! String }
    tableView.reloadData()

}
Run Code Online (Sandbox Code Playgroud)

这有助于我填充一个名为“selectedRecipients”的数组(基本上是一组 emailAddresses 字符串)

结果如下: 在此处输入图片说明

这工作正常。但是,如果我之前选择了联系人,我希望contactPicker在初始化时预先选择联系人,即在出现时将联系人显示为已选择。有没有办法做到这一点?

谢谢

contactpicker ios9 cncontact

5
推荐指数
1
解决办法
2782
查看次数

斯威夫特抓住"我的卡"CNContact

我似乎无法弄清楚如何从联系人那里获取用户"我的卡".我正在使用swift开发本机Mac应用程序.

macos swift swift2 cncontact

5
推荐指数
1
解决办法
1393
查看次数

具有UIToolbar的CNContactPickerViewController

如何实现与iOS Apple Maps中相同的联系人选择器?

从图片中可以看到,在“地图”应用中,您可以在收藏夹位置和联系人之间切换。我想在选择器和一些自定义表格之间进行切换,而无需关闭动画,并使用像这样的通用控件UISegmentedControl

我没有提出CNContactPickerViewController或实施问题UISegmentedControl。我在将工具栏添加到时遇到问题CNContactPickerViewController

  • 我试图将其推入我的尝试UINavigationController并没有成功。

  • 我尝试添加UIToolbarCNContactPickerViewController 没有添加UINavigationController

  • 我也尝试将其添加到子视图中, childViewControllers

文档没有说明如何使用它。此页面声称:

CNContactPickerViewController的实例无法推入堆栈。

任何建议表示赞赏:)

在此处输入图片说明 在此处输入图片说明

objective-c uitoolbar ios swift cncontact

5
推荐指数
1
解决办法
818
查看次数

iOS 9 - 获取的联系人返回空电话号码

知道为什么有些人CNContacts回来时电话号码是空的吗?

我不断得到这样的输出:

"phoneNumbers=(not fetched), emailAddresses=(not fetched),"
Run Code Online (Sandbox Code Playgroud)

例如,当我从模拟器的内置联系人应用程序中获取联系人时,我会得到混合结果: "John Appleseed" 确实返回了电话号码,但"Kate Bell"没有返回- 尽管她显然有电话号码。这很奇怪,因为我肯定CNContactPhoneNumbersKey在我的获取请求中使用。

这是我的代码:

let fetchKeys = [ CNContactEmailAddressesKey, CNContactPhoneNumbersKey, 
                  CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName) ]
let contactFetchRequest = CNContactFetchRequest(keysToFetch: fetchKeys)

do { 
   try self.contactsStore.enumerateContactsWithFetchRequest(contactFetchRequest) {                     
   fetchedContact, stop in
         print("fetched Contact is: \n\(fetchedContact.description)")
   }
}
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,输出显示有时获取的联系人会返回电话号码,有时则不会。电子邮件也是如此:有时会被退回,有时不会。

这种情况在模拟器中以及当我在 iPhone 上运行时都会发生。

知道这里会发生什么吗?

ios swift ios9 cncontact cncontactstore

5
推荐指数
1
解决办法
1153
查看次数

是否有跨设备的 CNContact 标识符?

CNContact 是否有任何 icloud 标识符可以跨设备保留和重用?

这个想法是能够从不同的 iOS 设备再次拉出 CNContact。

文档对此没有任何说明。我知道以前的 ABAddressbook 框架也没有,但我希望苹果可以为此做点什么。

ios cncontact

5
推荐指数
1
解决办法
479
查看次数

如何将iOS应用程序中的联系人分享给Whatsapp?

使用UIActivityViewController将.vcf共享给WhatsApp失败,显示插件net.whatsapp.WhatsApp.ShareExtension失效错误

共享图像或文本正在使用UIActivityViewController工作,但共享.vcf不适用于whatsapp(适用于邮件/消息/信使等).

NSData *pVcfData     = [CNContactVCardSerialization dataWithContacts:[NSArray arrayWithObject:pContact] error:&pError]; // creating contact data from CNContactVCardSerialization

NSURL *pFileURL      = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:pFileNameWithAllowedCharacters]]; //  wrote the data to file

NSError *pWriteError = nil;

if ([pVcfData writeToURL:pFileURL options:NSDataWritingAtomic error:&pWriteError])
{
   NSArray *pActivityItems  =  @[pFileURL]; //  passed the file URL as ActivityItem for UIActivityViewController

   UIActivityViewController *pActivityVC = [[UIActivityViewController alloc] initWithActivityItems:pActivityItems applicationActivities:nil];

   [pActivityVC setValue:pContactName forKey:@"subject"];

   [self presentViewController:pActivityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

除了.vcf之外,还有其他方法可以与whatsapp共享联系吗?请分享任何建议.

vcf whatsapp uiactivityviewcontroller cncontact

5
推荐指数
0
解决办法
258
查看次数

以编程方式将一个 CNContact 链接到另一个 CNContact(swift iOS)

我想以编程方式将一个联系人链接到第二个联系人...

我已通过手机链接它,但找不到任何代码。

 var store = CNContactStore()

 let contact = try store.unifiedContact(withIdentifier: contactIdentifier, keysToFetch:keysToFetch as! [CNKeyDescriptor])
 let contactToUpdate = contact.mutableCopy() as! CNMutableContact

 /* edit or append contact information */

 let saveRequest = CNSaveRequest()
 saveRequest.update(contactToUpdate)
 try store.execute(saveRequest)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

contacts ios swift cncontact

5
推荐指数
0
解决办法
587
查看次数

联系人标识符返回带有 ABPerson 后缀的联系人标识符

我正在使用 Native CNContactViewController 添加联系人,一旦保存了联系人,它就会返回带有“:ABPerson”后缀的联系人标识符,当我在联系人列表中交叉检查时,同一联系人会显示不同的标识符。

有谁知道如何获取实际的联系人标识符?

创建代码:

- (IBAction)didSelectedAddContact:(id)sender {
CNMutableContact *contact =  [CNMutableContact new];

CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];

NSLog(@"contact id : %@", contact.identifier);

contactController.allowsEditing = true;
contactController.allowsActions = true;

contactController.delegate = self;
[self.navigationController pushViewController:contactController animated:YES];    
}
Run Code Online (Sandbox Code Playgroud)

委托回调:

- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{
_contact = contact;

    [viewController.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

下面的函数返回 nil:

- (CNContact*) getContactFromStoreForIdentifier:(NSString*) identifier
{
    CNContact *updatedContact = nil;

   id descriptor = [CNContactViewController descriptorForRequiredKeys];

CNContactStore *store = [CNContactStore new];

NSError *error;

updatedContact = [store unifiedContactWithIdentifier:identifier
                                         keysToFetch:@[descriptor]
                                               error:&error];
// …
Run Code Online (Sandbox Code Playgroud)

ios cncontact cncontactstore cncontactviewcontroller

5
推荐指数
1
解决办法
500
查看次数

如何在 SwiftUI 中引用外部 iOS 系统状态更新?

There are many possible variants of this question, but take as an example the CNAuthorizationStatus returned by CNContactStore.authorizationStatus(for: .contacts), which can be notDetermined, restricted, denied, or authorized. My goal is to always show the current authorization status in my app's UI.

To expose this to SwiftUI, I might make an ObservableObject called ModelData with a contacts property:

final class ModelData: ObservableObject {
    @Published var contacts = Contacts.shared
}
Run Code Online (Sandbox Code Playgroud)

Where contacts contains my contact-specific model code, …

ios swift cncontact swiftui

5
推荐指数
1
解决办法
493
查看次数

我如何检查 CNContact 自上次我的 iOS 应用程序将其保存在联系人存储区以来是否已更改?

我想将数据存储在属于 的一部分的联系人存储中CNContact。是否有一个属性NSObject或我可以存储数据结构或对象CNContact的内容?NSDate我希望能够跟上CNContact上次修改 a 的时间。

我还没有找到苹果公司给我们提供的任何具体方法来做到这一点。我不想将修改日期保存在UserDefaultsCloudKit 或 Core Data 或任何其他持久数据方式中。我不想使用 的 Note 属性CNContact,因为用户可以更改它。的dates实例属性CNContact仅是 get ,我还没有找到任何使用该属性来做我想做的事情的方法。

另一种方法是比较哈希值或使用or运算符isEqual的方法。那行得通吗?CNContact=====

contacts ios swift cncontact cncontactstore

5
推荐指数
1
解决办法
574
查看次数