Contacts

RSS for tag

Access the user's contacts and format and localize contact information using Contacts.

Posts under Contacts tag

195 Posts

Post

Replies

Boosts

Views

Activity

Allow specifying regex to match an e-mail address to a contact.
Is your feature request related to a problem? Please describe. Everywhere where Apple offers it, I use Apple's Private Relay e-mail addresses. However, they can't be manually generated, so for the rest, I use https://anonaddy.me. Because it offers infinite aliases, I use a different alias every time I give my e-mail address to someone. However, I ensure that they're all under the @rokejulianlockhart.anonaddy.com (.com and .me are equivalent in this case) domain so that they can be identified as me by a human. I use different aliases to combat spam, not be anonymous. Additionally, when messaging others, I ensure that I add a sub-address with my name to their e-mail address so that they can filter all messages from me (even if I'm using a different alias for my own filtering purposes). Others use the same when communicating with me, especially family. The current identification system doesn't take sub-addresses into account whatsoever. Describe the solution you'd like I should therefore be able to set RY7I0I+RY7I0R@rokejulianlockhart.anonaddy.com as an e-mail address, and beneath it add, for instance [A-Za-z0-9]+\+[A-Za-z0-9]+@rokejulianlockhart\.anonaddy\.com in another input form to ensure that Nextcloud identifies any (in this case sub-addressed) alias as me. Describe alternatives you've considered The sole current alternative is to list literal tens of thousands of aliases as myself, which is insane. It also wouldn't work, because https://anonaddy.me generates a new alias when someone else uses one, so I'd have to retroactively add those whenever someone else uses one. It also wouldn't account for sub-addresses. Additional context Like most more powerful features of Nextcloud, this only need be visible when clicked on. Adding a button beside each e-mail address to show a form which allows the user to enter custom regex is enough. Additionally requested at: https://feedbackportal.microsoft.com/feedback/idea/ed4261f8-af28-ee11-a81c-6045bd8534ad. https://discussions.apple.com/thread/255016441. https://github.com/nextcloud/contacts/issues/3530#issue-1816825315.
2
1
1.2k
Aug ’24
iOS 18 recent update
I updated to the newest version of iOS 18 Beta this morning. One feature I preferred on the previous version was that when you're going into the call screen, you had to press the small phone icon rather than the persons name, to make the call. It stopped me accidentally calling people a lot of the time.. This feature seems to have gone on the newest version, or is that a bug? Essentially, the little (i) icon become a phone icon, and you used that to call, rather than the main contact name box.
0
1
673
Aug ’24
[AppKit] CNPropertyNotFetchedException when using CNContactFormatter on CNContact retrieved from CNContactPicker
I am using CNContactPicker (with "CNContactKey.PostalAddresses" as "displayedKeys") to allow users to pick a contact + postal address. Upon selection, I am retrieving the postal address using CNPostalAddressFormatter - this works without problems. However, when trying to retrieve the contact name using CNContactFormatter, this only works when the contact type is "Person". When it is "company", the app crashes with "CNPropertyNotFetchedException Reason: A property was not requested when contact was fetched" (because the formatter attempts to access "organizationName", which it apparently can't. There also doesn't seem to be a way to "retrieve" this information without having to request contacts permissions manually. The same code (just using CNContactPickerViewController, but also without requesting contacts permissions) works without issue on iOS.
2
0
1k
Aug ’24
Contact Provider Extension "enumerateContent" Method Called Multiple Times
I'm facing an issue with the enumerateContent method in my Contact Provider extension. The method is being called multiple times before I call the first observer.didEnumerate.. Here's a sample of my code: class TestContactProviderRootContainerEnumerator : ContactItemEnumerator { let handler = TestContactProviderUsecaseHandler() func configure(for domain: ContactProviderDomain) { log.error("---> configure") } func enumerateContent(in page: ContactItemPage, for observer: ContactItemContentObserver) { let requestPage = getPageIndex(from: page.offset, pageSize: observer.suggestedPageSize) log.error("---> Begin Enumerate Content page=\(requestPage) pageSize =\(observer.suggestedPageSize)") func completion(items: [ContactItem], hasMore: Bool) { observer.didEnumerate(items) do { let generationMarker = try getGenerationMarker(page: page) if hasMore { let nextPage = ContactItemPage(generationMarker: generationMarker, offset: page.offset + items.count) log.error("---> nextPage set offset \(page.offset + items.count) nextPage: \(getPageIndex(from: page.offset + items.count, pageSize: observer.suggestedPageSize))") observer.didFinishEnumeratingPage(upTo: nextPage) }else { observer.didFinishEnumeratingContent(upTo: generationMarker) } }catch { observer.didFinishEnumeratingContentWithError(error) return } } log.error("---> Start Request page=\(requestPage) pageSize =\(observer.suggestedPageSize)") handler.requestForRecordsList(page: requestPage, perPage: observer.suggestedPageSize, sortBy: Field.Contact.lastName, modifiedSince: nil, completion: { contactItems, hasMore, error in log.error("---> Finish Request page=\(requestPage) pageSize =\(observer.suggestedPageSize)") if let error { log.error("---> Error: \(error)") observer.didFinishEnumeratingContentWithError(error) return } completion(items: contactItems, hasMore: hasMore) log.error("---> End Enumerate Content page=\(requestPage) pageSize =\(observer.suggestedPageSize)") }) } } Below are the logs that I'm seeing: ---> configure ---> Begin Enumerate Content page=1 pageSize =20 ---> Start Request page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ....10+times ---> Begin Enumerate Content page=1 pageSize =20 ---> Finish Request page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20​​ ​---> nextPage set offset 20 nextPage: 2​​ ​---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20​ ​---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20​ ​---> Start Request page=2 pageSize =20​ ​---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20​ ​....10+times ---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20 Has anyone else experienced this issue? Any ideas on why this is happening or how to fix it.
2
0
843
Aug ’24
Its not possible to use a Contact Provider Extension from within a Notification Service Extension
A Notification Service Extension is one of the more capable extensions, and there's a lot that can be done within it (for example, it can invoke a Call Extension). However its not possible to use a Contact Provider Extension within it. If a CPE has been enabled by the main app, then if a push is sent to the NSE, then within the NSE the ContactProviderManager class reports that the CPE is disabled and its not possible to anything with it. For example a call to ContactProviderManager.signalEnumerator() will hang and not complete. I was hoping to create a contact and make it available to the system on receipt of a push, but this isn't going to possible. Is this intentional and by design, or just due to the immaturity of this feature/iOS beta? The documentation of a Contact provider Extension says: "signalEnumerator() An example of using this call is to handle a push notification to your app when the provided contacts from your server update" It therefore seems strange that the main cited use case for ContactProviderManager.signalEnumerator() isn't actually possible if the push is delivered to an extension rather than the app.
3
0
871
Aug ’24
Refreshing Contact Provider Extension from NSE
Hi, While testing the new Contact Provider Extension in the iOS 18 betas I noticed that the Notification Service Extension is unable to connect to the CPE in order to trigger a refresh. The ContactProviderManager init throws an "Extension Not Found" error. The CPE documentation mentions a main use case of using notifications to trigger CPE updates: "An example of using this call is to handle a push notification to your app when the provided contacts from your server update." source Is the main app the only way to trigger a CPE update? The documentation does not specify this limitation. I have tested this on a physical iPhone 15 running iOS 18 beta 4. Thanks, Wes
4
1
912
Aug ’24
How does an app manage its own contacts?
In the documentation for the Contact Provider Extension contact provider it says Use the Contact Provider framework if your app manages its own contacts and wants to make them available in other apps that use the Contacts framework. But how does an app manage its own contacts? What needs to be done differently if it manages its own contacts versus managing a user's contacts? Does the user still need to grant contacts access for example? Is there a special group/domain that should be used (how) to add app contacts? There's no mention of any of this that I can see in the documentation for CNContact or CNContactStore.
4
0
855
Jul ’24
Issue with iPhone QR Code Contact Preview Displaying Email Instead of Organization
Post Content: Hi everyone, I’m encountering an issue with how iPhone displays contact information from a vCard QR code in the contact preview. When I scan the QR code with my iPhone camera, the contact preview shows the email address between the name and the contact image, instead of displaying the organization name. Here’s the structure of the vCard I’m using: BEGIN:VCARD VERSION:3.0 FN:Ahmad Rana N:Rana;Ahmad;;; ORG:Company 3 TEL;TYPE=voice,msg:+1234567890 EMAIL:a(at the rate)gmail.com URL:https://example.com IMPP:facebook:fb END:VCARD What I Expect: When I scan it with camera and in the contact preview before creating the camera I want organization name between name and image of the preview but I get email instead of ogrganization name. If only organisation is passed then it displays correctly but when I pass email it displayed email in between. Steps I’ve Taken: Verified the vCard structure to ensure it follows the standard format. Reordered the fields in the vCard to prioritize the organization name and job title. Tested with a simplified vCard containing only the name, organization, and email. Despite these efforts, the email address continues to be displayed in the contact preview between the name and the contact image, while the organization name is not shown as expected. Question: How can I ensure that the organization name is displayed correctly in the contact preview on iPhone when scanning a QR code? Are there specific rules or best practices for field prioritization in vCards that I might be missing? I would appreciate any insights or suggestions on how to resolve this issue. Thank you!
2
0
969
Jul ’24
Get notified on 'Selected Contacts' updates
Is there a way for the application to get notified when user updates their 'Selected Contacts' from the Settings app when the Contacts permission on the application is set to the new iOS 18 CNAuthorizationStatusLimited status? My logic already listens for the CNContactStoreDidChangeNotification notification, but it doesn't look like it is being fired under this scenario. Do we have to setup a new CNChangeHistoryFetchRequest every time the application becomes active and compare the result? Is the value of the currentHistoryToken updated when user selects / deselects entries from their 'Selected Contacts'?
2
0
963
Jul ’24
imageData property of CNContact
After setting the imageData property of CNContact through the API, I can see in the address book that the contact's avatar has been set to the imageData image, But when my phone version is iOS 17.1.0, when this contact calls in and locks the screen, I can see that this image is displayed in full screen, But when my phone version is iOS 17.5.1, when this contact calls in, the screen is locked and the image can only be displayed on the avatar, with a blurred image in the background, After iOS 17, contacts can set their avatars and posters separately in their contact list. How can I set these two images through code, just like setting the imageData property of CNContact through API. I see that there is a parameter in the CNContact property called _fullscreenImageData, but there is no value inside, and I am unable to obtain data for this parameter. I don't know how to manipulate this data in order to achieve the effect of setting up posters in the iOS 17.5.1 system.
1
0
644
Jul ’24
imageData property of CNContact
After setting the imageData property of CNContact through the API, I can see in the address book that the contact's avatar has been set to the imageData image, But when my phone version is iOS 17.1.0, when this contact calls in and locks the screen, I can see that this image is displayed in full screen, But when my phone version is iOS 17.5.1, when this contact calls in, the screen is locked and the image can only be displayed on the avatar, with a blurred image in the background, After iOS 17, contacts can set their avatars and posters separately in their contact list. How can I set these two images through code, just like setting the imageData property of CNContact through API. I see that there is a parameter in the CNContact property called _fullscreenImageData, but there is no value inside, and I am unable to obtain data for this parameter. I don't know how to manipulate this data in order to achieve the effect of setting up posters in the iOS 17.5.1 system.
2
0
638
Jul ’24
iOS18 Contacts bug report
Dear developers, I am experiencing a bug with Contacts on my iPhone13 since downloading the beta. Some names in the listing of contacts do not correspond with their card once opened in the Contacts app. The option to share contacts in 3rd party apps has disappeared. Noticed specifically in WhatsApp where my contacts are no longer synced and no longer show against numbers. Best regards
1
0
869
Jul ’24
Limited Access for Contacts like for Photos to prevent certain apps to collect our data.
Hi Everybody, I would like to see the feature, that allows us to limit the access for selected apps to get access to our Contacts. Especially apps like WhatsApp cannot be trusted, in my opinion, so I would love to see the possibility to prevent, that they just analyse our full Contact book and sell the data. With a limited access feature, we can at least decide, which information we wanna share with suspicious companys. What do you think and how could we reach the developers attention to get this with the next major update. Greetings from Europe
2
0
1.3k
Jun ’24
Contact Note Entitlement Disappearing For 'Release' Build Configuration
A few months ago I requested access to the com.apple.developer.contacts.notes entitlement, which I now have access to. While running on 'Debug' build configuration, everything works as expected. When creating a 'Release' build, however, the entitlement does not appear to be included with the app, as the console reports that fetching the note for each contact fails. When I try to add the "Contact Notes" capability in Xcode, under the 'Release' tab in the project settings, the capability appears for a few seconds, then disappears when I move to a different tab and return. This does not happen for the 'Debug' configuration. Attempted Resolutions: Changing the signing configuraiton from 'Automatic' to 'Manual', using a manually generated provisioning profile. I manually inspected the provisioning profile using the terminal to ensure it included the entitlement. Creating a separate entitlement file with com.apple.developer.contacts.notes, adding it to the root of the project. Ensuring that the path to this file is correct on the 'Release' configuration. Ensuring 'Contacts Notes Field Access' is enabled under 'Additional Capabilities' in the Developer portal. Adding the capability on Xcode. Below is the inspector displaying the provisioning profile for the 'Debug' Configuration: And the following image below shows the inspector details for the 'Release' Configuration provisioning profile: When I use a manual provisioning profile and an entitlements file at the root of the project, Xcode displays this strange error:
3
0
1.2k
Jun ’24
UIKit ContactsAccessButton?
Apple revealed the ContactsAccessButton in the WWDC24 session 10121: Meet the Contact Access Button. After watching the video, reading through the documentation as well as the sample code , I can only find a SwiftUI ContactsAccessButton. However, our code base is written largely in UIKit, and our team prefers to do complex work and customization with lists via UITableView as opposed to SwiftUI List. So we would greatly prefer to use a UIKit ContactAccessButton. Is there not a UIKit equivalent to ContactsAccessButton? If there is, where can we find it?
1
0
929
Jun ’24
Get user's own contact card with unifiedMeContactWithKeys(toFetch:)
Hi everyone! It came to my knowledge from the documentation (https://developer.apple.com/documentation/contacts/cncontactstore/unifiedmecontactwithkeys%28tofetch:%29) that the method unifiedMeContactWithKeys(toFetch:), which fetches the me-card in the phone book by using CNContactStore, was recently made available for iOS as well. The problem is that I regardless get the error saying the method is unavailable for iOS, even though the documentation clearly states it should be available. I have tried several Xcode version including the latest one but to no avail... Does anyone have any idea what is wrong here? Kindest regards, Andreas
1
0
922
May ’24
CNContactViewController blocking Home gesture after presenting the "Add Photo" View Controller in iOS 17
Hello I'm currently having some issues when using CNContactViewController in iOS 17. The problem starts after embedding the CNContactViewController inside a UINavigationController and presenting it modally. The CNContactViewController is created using the forNewContact initialiser and passing an initial value to it (CNMutableContact) Next I tap the Add Photo button, which presents the new iOS 17 Photo Editor/Picker which immediately covers all the screen. After pressing Cancel, the Photo Editor is dismissed but the "Go Home" gesture is disabled and its not possible to go to the Home Screen unless the iPhone screen is turned off and on again (this fixes the issue). This seems to be a bug in this CNContactViewController unless I'm using it incorrectly. Additionally, this is only happening when the Photo Editor is cancelled/dismissed. If the whole process of picking and editing a photo is completed, this issue does not happens and the "Go Home" gesture works as usual. Here is a code sample of how CNContactViewController being used and presented: class ContactViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let b = UIButton(type: .system) b.setTitle("Push", for: .normal) b.setTitleColor(.systemBlue, for: .normal) b.addTarget(self, action: #selector(pushAction(sender:)), for: .touchUpInside) b.translatesAutoresizingMaskIntoConstraints = false view.addSubview(b) NSLayoutConstraint.activate([ b.centerXAnchor.constraint(equalTo: view.centerXAnchor), b.centerYAnchor.constraint(equalTo: view.centerYAnchor) ]) } @objc func pushAction(sender: UIButton) { let mc = CNMutableContact() mc.givenName = "MyName" let vc = CNContactViewController(forNewContact: mc) vc.allowsActions = false vc.allowsEditing = false vc.contactStore = CNContactStore() vc.delegate = self let nc = UINavigationController(rootViewController: vc) nc.modalPresentationStyle = .fullScreen self.present(nc, animated: true) } } extension ContactViewController: CNContactViewControllerDelegate { func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) { viewController.dismiss(animated: true) } }
0
0
774
Mar ’24
Disable AutoFill option in UITextField or have control over the text which is being pasted using that option.
I have form fields in an app, I have some validations to perform like phone number should only have digits and not alphabets, however when user uses AutoFill option doing long press on textfield they have option to choose Contacts and they can tap on name and it will paste alphabets in my Phone number field, that behavior I don't want as my validations will not be fulfilled. There are no callbacks to detect and prevent that text from being pasted. In shouldChangeCharactersIn delegate method even if I return false for that paste event it ignores that and forcefully it gets pasted. Please help how to tackle such scenarios to perform above mentioned validations. Thanks
2
2
2.5k
Mar ’24
Allow specifying regex to match an e-mail address to a contact.
Is your feature request related to a problem? Please describe. Everywhere where Apple offers it, I use Apple's Private Relay e-mail addresses. However, they can't be manually generated, so for the rest, I use https://anonaddy.me. Because it offers infinite aliases, I use a different alias every time I give my e-mail address to someone. However, I ensure that they're all under the @rokejulianlockhart.anonaddy.com (.com and .me are equivalent in this case) domain so that they can be identified as me by a human. I use different aliases to combat spam, not be anonymous. Additionally, when messaging others, I ensure that I add a sub-address with my name to their e-mail address so that they can filter all messages from me (even if I'm using a different alias for my own filtering purposes). Others use the same when communicating with me, especially family. The current identification system doesn't take sub-addresses into account whatsoever. Describe the solution you'd like I should therefore be able to set RY7I0I+RY7I0R@rokejulianlockhart.anonaddy.com as an e-mail address, and beneath it add, for instance [A-Za-z0-9]+\+[A-Za-z0-9]+@rokejulianlockhart\.anonaddy\.com in another input form to ensure that Nextcloud identifies any (in this case sub-addressed) alias as me. Describe alternatives you've considered The sole current alternative is to list literal tens of thousands of aliases as myself, which is insane. It also wouldn't work, because https://anonaddy.me generates a new alias when someone else uses one, so I'd have to retroactively add those whenever someone else uses one. It also wouldn't account for sub-addresses. Additional context Like most more powerful features of Nextcloud, this only need be visible when clicked on. Adding a button beside each e-mail address to show a form which allows the user to enter custom regex is enough. Additionally requested at: https://feedbackportal.microsoft.com/feedback/idea/ed4261f8-af28-ee11-a81c-6045bd8534ad. https://discussions.apple.com/thread/255016441. https://github.com/nextcloud/contacts/issues/3530#issue-1816825315.
Replies
2
Boosts
1
Views
1.2k
Activity
Aug ’24
iOS 18 recent update
I updated to the newest version of iOS 18 Beta this morning. One feature I preferred on the previous version was that when you're going into the call screen, you had to press the small phone icon rather than the persons name, to make the call. It stopped me accidentally calling people a lot of the time.. This feature seems to have gone on the newest version, or is that a bug? Essentially, the little (i) icon become a phone icon, and you used that to call, rather than the main contact name box.
Replies
0
Boosts
1
Views
673
Activity
Aug ’24
[AppKit] CNPropertyNotFetchedException when using CNContactFormatter on CNContact retrieved from CNContactPicker
I am using CNContactPicker (with "CNContactKey.PostalAddresses" as "displayedKeys") to allow users to pick a contact + postal address. Upon selection, I am retrieving the postal address using CNPostalAddressFormatter - this works without problems. However, when trying to retrieve the contact name using CNContactFormatter, this only works when the contact type is "Person". When it is "company", the app crashes with "CNPropertyNotFetchedException Reason: A property was not requested when contact was fetched" (because the formatter attempts to access "organizationName", which it apparently can't. There also doesn't seem to be a way to "retrieve" this information without having to request contacts permissions manually. The same code (just using CNContactPickerViewController, but also without requesting contacts permissions) works without issue on iOS.
Replies
2
Boosts
0
Views
1k
Activity
Aug ’24
Contact Provider Extension "enumerateContent" Method Called Multiple Times
I'm facing an issue with the enumerateContent method in my Contact Provider extension. The method is being called multiple times before I call the first observer.didEnumerate.. Here's a sample of my code: class TestContactProviderRootContainerEnumerator : ContactItemEnumerator { let handler = TestContactProviderUsecaseHandler() func configure(for domain: ContactProviderDomain) { log.error("---> configure") } func enumerateContent(in page: ContactItemPage, for observer: ContactItemContentObserver) { let requestPage = getPageIndex(from: page.offset, pageSize: observer.suggestedPageSize) log.error("---> Begin Enumerate Content page=\(requestPage) pageSize =\(observer.suggestedPageSize)") func completion(items: [ContactItem], hasMore: Bool) { observer.didEnumerate(items) do { let generationMarker = try getGenerationMarker(page: page) if hasMore { let nextPage = ContactItemPage(generationMarker: generationMarker, offset: page.offset + items.count) log.error("---> nextPage set offset \(page.offset + items.count) nextPage: \(getPageIndex(from: page.offset + items.count, pageSize: observer.suggestedPageSize))") observer.didFinishEnumeratingPage(upTo: nextPage) }else { observer.didFinishEnumeratingContent(upTo: generationMarker) } }catch { observer.didFinishEnumeratingContentWithError(error) return } } log.error("---> Start Request page=\(requestPage) pageSize =\(observer.suggestedPageSize)") handler.requestForRecordsList(page: requestPage, perPage: observer.suggestedPageSize, sortBy: Field.Contact.lastName, modifiedSince: nil, completion: { contactItems, hasMore, error in log.error("---> Finish Request page=\(requestPage) pageSize =\(observer.suggestedPageSize)") if let error { log.error("---> Error: \(error)") observer.didFinishEnumeratingContentWithError(error) return } completion(items: contactItems, hasMore: hasMore) log.error("---> End Enumerate Content page=\(requestPage) pageSize =\(observer.suggestedPageSize)") }) } } Below are the logs that I'm seeing: ---> configure ---> Begin Enumerate Content page=1 pageSize =20 ---> Start Request page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20 ....10+times ---> Begin Enumerate Content page=1 pageSize =20 ---> Finish Request page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20​​ ​---> nextPage set offset 20 nextPage: 2​​ ​---> Begin Enumerate Content page=1 pageSize =20 ---> Begin Enumerate Content page=1 pageSize =20​ ​---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20​ ​---> Start Request page=2 pageSize =20​ ​---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20​ ​....10+times ---> Begin Enumerate Content page=2 pageSize =20 ---> Begin Enumerate Content page=2 pageSize =20 Has anyone else experienced this issue? Any ideas on why this is happening or how to fix it.
Replies
2
Boosts
0
Views
843
Activity
Aug ’24
Its not possible to use a Contact Provider Extension from within a Notification Service Extension
A Notification Service Extension is one of the more capable extensions, and there's a lot that can be done within it (for example, it can invoke a Call Extension). However its not possible to use a Contact Provider Extension within it. If a CPE has been enabled by the main app, then if a push is sent to the NSE, then within the NSE the ContactProviderManager class reports that the CPE is disabled and its not possible to anything with it. For example a call to ContactProviderManager.signalEnumerator() will hang and not complete. I was hoping to create a contact and make it available to the system on receipt of a push, but this isn't going to possible. Is this intentional and by design, or just due to the immaturity of this feature/iOS beta? The documentation of a Contact provider Extension says: "signalEnumerator() An example of using this call is to handle a push notification to your app when the provided contacts from your server update" It therefore seems strange that the main cited use case for ContactProviderManager.signalEnumerator() isn't actually possible if the push is delivered to an extension rather than the app.
Replies
3
Boosts
0
Views
871
Activity
Aug ’24
Refreshing Contact Provider Extension from NSE
Hi, While testing the new Contact Provider Extension in the iOS 18 betas I noticed that the Notification Service Extension is unable to connect to the CPE in order to trigger a refresh. The ContactProviderManager init throws an "Extension Not Found" error. The CPE documentation mentions a main use case of using notifications to trigger CPE updates: "An example of using this call is to handle a push notification to your app when the provided contacts from your server update." source Is the main app the only way to trigger a CPE update? The documentation does not specify this limitation. I have tested this on a physical iPhone 15 running iOS 18 beta 4. Thanks, Wes
Replies
4
Boosts
1
Views
912
Activity
Aug ’24
How does an app manage its own contacts?
In the documentation for the Contact Provider Extension contact provider it says Use the Contact Provider framework if your app manages its own contacts and wants to make them available in other apps that use the Contacts framework. But how does an app manage its own contacts? What needs to be done differently if it manages its own contacts versus managing a user's contacts? Does the user still need to grant contacts access for example? Is there a special group/domain that should be used (how) to add app contacts? There's no mention of any of this that I can see in the documentation for CNContact or CNContactStore.
Replies
4
Boosts
0
Views
855
Activity
Jul ’24
Issue with iPhone QR Code Contact Preview Displaying Email Instead of Organization
Post Content: Hi everyone, I’m encountering an issue with how iPhone displays contact information from a vCard QR code in the contact preview. When I scan the QR code with my iPhone camera, the contact preview shows the email address between the name and the contact image, instead of displaying the organization name. Here’s the structure of the vCard I’m using: BEGIN:VCARD VERSION:3.0 FN:Ahmad Rana N:Rana;Ahmad;;; ORG:Company 3 TEL;TYPE=voice,msg:+1234567890 EMAIL:a(at the rate)gmail.com URL:https://example.com IMPP:facebook:fb END:VCARD What I Expect: When I scan it with camera and in the contact preview before creating the camera I want organization name between name and image of the preview but I get email instead of ogrganization name. If only organisation is passed then it displays correctly but when I pass email it displayed email in between. Steps I’ve Taken: Verified the vCard structure to ensure it follows the standard format. Reordered the fields in the vCard to prioritize the organization name and job title. Tested with a simplified vCard containing only the name, organization, and email. Despite these efforts, the email address continues to be displayed in the contact preview between the name and the contact image, while the organization name is not shown as expected. Question: How can I ensure that the organization name is displayed correctly in the contact preview on iPhone when scanning a QR code? Are there specific rules or best practices for field prioritization in vCards that I might be missing? I would appreciate any insights or suggestions on how to resolve this issue. Thank you!
Replies
2
Boosts
0
Views
969
Activity
Jul ’24
Get notified on 'Selected Contacts' updates
Is there a way for the application to get notified when user updates their 'Selected Contacts' from the Settings app when the Contacts permission on the application is set to the new iOS 18 CNAuthorizationStatusLimited status? My logic already listens for the CNContactStoreDidChangeNotification notification, but it doesn't look like it is being fired under this scenario. Do we have to setup a new CNChangeHistoryFetchRequest every time the application becomes active and compare the result? Is the value of the currentHistoryToken updated when user selects / deselects entries from their 'Selected Contacts'?
Replies
2
Boosts
0
Views
963
Activity
Jul ’24
The Contact Provider Extension template code has errors
If using Xcode beta 16 beta 4, a target type of Contact Provider Extension is created, then the auto-generated template code has errors right off the bat. Compiler be like what in the dickens is this?: class ContactProviderExtension: ContactProviderExtension
Replies
1
Boosts
0
Views
763
Activity
Jul ’24
imageData property of CNContact
After setting the imageData property of CNContact through the API, I can see in the address book that the contact's avatar has been set to the imageData image, But when my phone version is iOS 17.1.0, when this contact calls in and locks the screen, I can see that this image is displayed in full screen, But when my phone version is iOS 17.5.1, when this contact calls in, the screen is locked and the image can only be displayed on the avatar, with a blurred image in the background, After iOS 17, contacts can set their avatars and posters separately in their contact list. How can I set these two images through code, just like setting the imageData property of CNContact through API. I see that there is a parameter in the CNContact property called _fullscreenImageData, but there is no value inside, and I am unable to obtain data for this parameter. I don't know how to manipulate this data in order to achieve the effect of setting up posters in the iOS 17.5.1 system.
Replies
1
Boosts
0
Views
644
Activity
Jul ’24
imageData property of CNContact
After setting the imageData property of CNContact through the API, I can see in the address book that the contact's avatar has been set to the imageData image, But when my phone version is iOS 17.1.0, when this contact calls in and locks the screen, I can see that this image is displayed in full screen, But when my phone version is iOS 17.5.1, when this contact calls in, the screen is locked and the image can only be displayed on the avatar, with a blurred image in the background, After iOS 17, contacts can set their avatars and posters separately in their contact list. How can I set these two images through code, just like setting the imageData property of CNContact through API. I see that there is a parameter in the CNContact property called _fullscreenImageData, but there is no value inside, and I am unable to obtain data for this parameter. I don't know how to manipulate this data in order to achieve the effect of setting up posters in the iOS 17.5.1 system.
Replies
2
Boosts
0
Views
638
Activity
Jul ’24
iOS18 Contacts bug report
Dear developers, I am experiencing a bug with Contacts on my iPhone13 since downloading the beta. Some names in the listing of contacts do not correspond with their card once opened in the Contacts app. The option to share contacts in 3rd party apps has disappeared. Noticed specifically in WhatsApp where my contacts are no longer synced and no longer show against numbers. Best regards
Replies
1
Boosts
0
Views
869
Activity
Jul ’24
There is no response to "Request the Contact Notes Field Access Entitlement".
Hi, We asked Apple to give us access to the contacts memo field. https://developer.apple.com/contact/request/contact-note-field But there is no response to the request. Please let me know how I can get a reply.
Replies
1
Boosts
0
Views
623
Activity
Jun ’24
Limited Access for Contacts like for Photos to prevent certain apps to collect our data.
Hi Everybody, I would like to see the feature, that allows us to limit the access for selected apps to get access to our Contacts. Especially apps like WhatsApp cannot be trusted, in my opinion, so I would love to see the possibility to prevent, that they just analyse our full Contact book and sell the data. With a limited access feature, we can at least decide, which information we wanna share with suspicious companys. What do you think and how could we reach the developers attention to get this with the next major update. Greetings from Europe
Replies
2
Boosts
0
Views
1.3k
Activity
Jun ’24
Contact Note Entitlement Disappearing For 'Release' Build Configuration
A few months ago I requested access to the com.apple.developer.contacts.notes entitlement, which I now have access to. While running on 'Debug' build configuration, everything works as expected. When creating a 'Release' build, however, the entitlement does not appear to be included with the app, as the console reports that fetching the note for each contact fails. When I try to add the "Contact Notes" capability in Xcode, under the 'Release' tab in the project settings, the capability appears for a few seconds, then disappears when I move to a different tab and return. This does not happen for the 'Debug' configuration. Attempted Resolutions: Changing the signing configuraiton from 'Automatic' to 'Manual', using a manually generated provisioning profile. I manually inspected the provisioning profile using the terminal to ensure it included the entitlement. Creating a separate entitlement file with com.apple.developer.contacts.notes, adding it to the root of the project. Ensuring that the path to this file is correct on the 'Release' configuration. Ensuring 'Contacts Notes Field Access' is enabled under 'Additional Capabilities' in the Developer portal. Adding the capability on Xcode. Below is the inspector displaying the provisioning profile for the 'Debug' Configuration: And the following image below shows the inspector details for the 'Release' Configuration provisioning profile: When I use a manual provisioning profile and an entitlements file at the root of the project, Xcode displays this strange error:
Replies
3
Boosts
0
Views
1.2k
Activity
Jun ’24
UIKit ContactsAccessButton?
Apple revealed the ContactsAccessButton in the WWDC24 session 10121: Meet the Contact Access Button. After watching the video, reading through the documentation as well as the sample code , I can only find a SwiftUI ContactsAccessButton. However, our code base is written largely in UIKit, and our team prefers to do complex work and customization with lists via UITableView as opposed to SwiftUI List. So we would greatly prefer to use a UIKit ContactAccessButton. Is there not a UIKit equivalent to ContactsAccessButton? If there is, where can we find it?
Replies
1
Boosts
0
Views
929
Activity
Jun ’24
Get user's own contact card with unifiedMeContactWithKeys(toFetch:)
Hi everyone! It came to my knowledge from the documentation (https://developer.apple.com/documentation/contacts/cncontactstore/unifiedmecontactwithkeys%28tofetch:%29) that the method unifiedMeContactWithKeys(toFetch:), which fetches the me-card in the phone book by using CNContactStore, was recently made available for iOS as well. The problem is that I regardless get the error saying the method is unavailable for iOS, even though the documentation clearly states it should be available. I have tried several Xcode version including the latest one but to no avail... Does anyone have any idea what is wrong here? Kindest regards, Andreas
Replies
1
Boosts
0
Views
922
Activity
May ’24
CNContactViewController blocking Home gesture after presenting the "Add Photo" View Controller in iOS 17
Hello I'm currently having some issues when using CNContactViewController in iOS 17. The problem starts after embedding the CNContactViewController inside a UINavigationController and presenting it modally. The CNContactViewController is created using the forNewContact initialiser and passing an initial value to it (CNMutableContact) Next I tap the Add Photo button, which presents the new iOS 17 Photo Editor/Picker which immediately covers all the screen. After pressing Cancel, the Photo Editor is dismissed but the "Go Home" gesture is disabled and its not possible to go to the Home Screen unless the iPhone screen is turned off and on again (this fixes the issue). This seems to be a bug in this CNContactViewController unless I'm using it incorrectly. Additionally, this is only happening when the Photo Editor is cancelled/dismissed. If the whole process of picking and editing a photo is completed, this issue does not happens and the "Go Home" gesture works as usual. Here is a code sample of how CNContactViewController being used and presented: class ContactViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let b = UIButton(type: .system) b.setTitle("Push", for: .normal) b.setTitleColor(.systemBlue, for: .normal) b.addTarget(self, action: #selector(pushAction(sender:)), for: .touchUpInside) b.translatesAutoresizingMaskIntoConstraints = false view.addSubview(b) NSLayoutConstraint.activate([ b.centerXAnchor.constraint(equalTo: view.centerXAnchor), b.centerYAnchor.constraint(equalTo: view.centerYAnchor) ]) } @objc func pushAction(sender: UIButton) { let mc = CNMutableContact() mc.givenName = "MyName" let vc = CNContactViewController(forNewContact: mc) vc.allowsActions = false vc.allowsEditing = false vc.contactStore = CNContactStore() vc.delegate = self let nc = UINavigationController(rootViewController: vc) nc.modalPresentationStyle = .fullScreen self.present(nc, animated: true) } } extension ContactViewController: CNContactViewControllerDelegate { func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) { viewController.dismiss(animated: true) } }
Replies
0
Boosts
0
Views
774
Activity
Mar ’24
Disable AutoFill option in UITextField or have control over the text which is being pasted using that option.
I have form fields in an app, I have some validations to perform like phone number should only have digits and not alphabets, however when user uses AutoFill option doing long press on textfield they have option to choose Contacts and they can tap on name and it will paste alphabets in my Phone number field, that behavior I don't want as my validations will not be fulfilled. There are no callbacks to detect and prevent that text from being pasted. In shouldChangeCharactersIn delegate method even if I return false for that paste event it ignores that and forcefully it gets pasted. Please help how to tackle such scenarios to perform above mentioned validations. Thanks
Replies
2
Boosts
2
Views
2.5k
Activity
Mar ’24