ネイティブCNContactViewControllerを使用して連絡先を追加しています。連絡先の識別子が ':ABPerson'という接尾辞を返し、連絡先リストをクロスチェックすると同じ連絡先が別のIDで表示されます。連絡先IDがABPerson接尾辞付きで返されます
誰でも実際の連絡先IDを取得する方法を知っていますか?
作成するコード:
- (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];
}
委任コールバック:機能以下
- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{
_contact = contact;
[viewController.navigationController popViewControllerAnimated:YES];
}
は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];
// Found?
if (updatedContact == nil)
{
if (error != nil)
{
}
}
return updatedContact; }
@parameter:CNContactオブジェクトの識別子がdidCompleteWithContactから受け取っ:コールバックを委任する。
あなたは 'CNContactViewController'を作成し、デリゲートメソッドを実装するコードを共有することができます。 –
@JonRoseが私の質問を更新しました。 –