Contacts
EOL Notice
Contacts will reach its end-of-life on July 1, 2024, and will no longer receive updates or support. Please see Support Policy for additional information.
The Contacts plugin provides access to read, write, or select device contacts.
Installation
If you have not already setup Ionic Enterprise in your app, follow the one-time setup steps.
Next, install the plugin:
- Capacitor
- Cordova
npm install @ionic-enterprise/contacts
npx cap sync
ionic cordova plugin add @ionic-enterprise/contacts
Usage
The Contacts plugin ship with a native Angular & es2015+/Typescript wrappers as well as being available on window.
// Angular
import { Contacts } from '@ionic-enterprise/contacts/ngx';
import { Contact, ContactName, ContactField } from '@ionic-enterprise/contacts';
...
constructor(private contacts: Contacts) { }
async createContact() {
let contact = this.contacts.create();
contact.name = new ContactName(null, 'Smith', 'John');
contact.phoneNumbers = [new ContactField('mobile', '6471234567')];
contact.save().then(
() => console.log('Contact saved!', contact),
(error: any) => console.error('Error saving contact.', error)
);
}
...
// ES2015+/TypeScript
import { Contacts, Contact, ContactName, ContactField } from '@ionic-enterprise/contacts';
let contact = Contacts.create();
contact.name = new ContactName(null, 'Smith', 'John');
contact.phoneNumbers = [new ContactField('mobile', '6471234567')];
contact.save().then(
() => console.log('Contact saved!', contact),
(error: any) => console.error('Error saving contact.', error)
);
...
// Vanilla JS
document.addEventListener('deviceready', () => {
let contact = IonicContacts.create();
contact.name = {familyName: 'Smith', givenName: 'John'};
contact.phoneNumbers = {type: 'mobile', value: '6471234567'};
contact.save().then(
() => console.log('Contact saved!', contact),
(error) => console.error('Error saving contact.', error)
);
});
Index
Classes
- Contact
- ContactAddress
- ContactError
- ContactField
- ContactFindOptions
- ContactName
- ContactOrganization
- Contacts
Type aliases
Type aliases
ContactFieldType
Ƭ ContactFieldType: "" | "addresses" | "birthday" | "categories" | "country" | "department" | "displayName" | "emails" | "name.familyName" | "name.formatted" | "name.givenName" | "name.honorificPrefix" | "name.honorificSuffix" | "id" | "ims" | "locality" | "name.middleName" | "name" | "nickname" | "note" | "organizations" | "phoneNumbers" | "photos" | "postalCode" | "region" | "streetAddress" | "title" | "urls"*
Support for searching varies between platforms. iOS only supports the following types for a text search:
- 'name'
- 'emails'
- 'phoneNumbers'
In addition, the wildcard '*' character is required to return all contacts.
Android supports all defined fields.
Contact
Contains information about a single contact.
Constructors
constructor
+ new Contact(id?: undefined | string, displayName?: undefined | string, name?: ContactName, nickname?: undefined | string, phoneNumbers?: ContactField[], emails?: ContactField[], addresses?: ContactAddress[], ims?: ContactField[], organizations?: ContactOrganization[], birthday?: Date | string | null, note?: undefined | string, photos?: ContactField[], categories?: ContactField[], urls?: ContactField[]): Contact
Parameters:
| Name | Type |
|---|---|
id? | undefined | string |
displayName? | undefined | string |
name? | ContactName |
nickname? | undefined | string |
phoneNumbers? | ContactField[] |
emails? | ContactField[] |
addresses? | ContactAddress[] |
ims? | ContactField[] |
organizations? | ContactOrganization[] |
birthday? | Date | string | null |
note? | undefined | string |
photos? | ContactField[] |
categories? | ContactField[] |
urls? | ContactField[] |
Returns: Contact
Properties
Optional addresses
• addresses? : ContactAddress[] | null
An array of all the contact's addresses.
Optional birthday
• birthday? : Date | string | null
The birthday of the contact.
Optional categories
• categories? : ContactField[] | null
An array of all the user-defined categories associated with the contact.
Optional displayName
• displayName? : string | null
The name of this Contact, suitable for display to end users.
Optional emails
• emails? : ContactField[] | null
An array of all the contact's email addresses.
Optional id
• id? : string | null
A globally unique identifier.
Optional ims
• ims? : ContactField[] | null
An array of all the contact's IM addresses.
Optional name
• name? : ContactName | null
An object containing all components of a persons name.
Optional nickname
• nickname? : string | null
A casual name by which to address the contact.
Optional note
• note? : string | null
A note about the contact on Android.
Optional organizations
• organizations? : ContactOrganization[] | null
An array of all the contact's organizations.
Optional phoneNumbers
• phoneNumbers? : ContactField[] | null
An array of all the contact's phone numbers.
Optional photos
• photos? : ContactField[] | null
An array of the contact's photos.
Optional rawId
• rawId? : string | null
A globally unique identifier on Android.
Optional urls
• urls? : ContactField[] | null
An array of web pages associated with the contact.
Methods
clone
▸ clone(): Contact
Creates a deep copy of this Contact. With the contact ID set to null.
Returns: Contact
copy of this Contact
display
▸ display(allowEdit?: undefined | false | true): Promise‹any›
iOS only Display a contact in the native Contact Picker UI
Parameters:
| Name | Type | Description |
|---|---|---|
allowEdit? | undefined | false | true | true display the contact and allow editing it false (default) display contact without editing |
Returns: Promise‹any›
remove
▸ remove(): Promise‹any›
Removes contact from device storage.
Returns: Promise‹any›
save
▸ save(): Promise‹any›
Persists contact to device storage.
Returns: Promise‹any›
Contactaddress
Contact address.
Constructors
constructor
+ new ContactAddress(pref?: undefined | false | true, type?: undefined | string, formatted?: undefined | string, streetAddress?: undefined | string, locality?: undefined | string, region?: undefined | string, postalCode?: undefined | string, country?: undefined | string): ContactAddress
Parameters:
| Name | Type |
|---|---|
pref? | undefined | false | true |
type? | undefined | string |
formatted? | undefined | string |
streetAddress? | undefined | string |
locality? | undefined | string |
region? | undefined | string |
postalCode? | undefined | string |
country? | undefined | string |
Returns: ContactAddress
Properties
Optional country
• country? : string | null
The country name.
Optional formatted
• formatted? : string | null
The full address formatted for display.
Optional id
• id? : string | null
unique identifier, should only be set by native code
Optional locality
• locality? : string | null
The city or locality.
Optional postalCode
• postalCode? : string | null
The zip code or postal code.
Optional pref
• pref? : undefined | false | true
Set to true if this ContactAddress contains the user's preferred value.
Optional region
• region? : string | null
The state or region.
Optional streetAddress
• streetAddress? : string | null
The full street address.
Optional type
• type? : string | null
A string indicating what type of field this is, home for example.
Contacterror
ContactError. An error code assigned by an implementation when an error has occurred
Constructors
constructor
+ new ContactError(code: number): ContactError
Parameters:
| Name | Type |
|---|---|
code | number |
Returns: ContactError
Properties
code
• code: number
Error code
Optional message
• message? : undefined | string
Error message
Static INVALID_ARGUMENT_ERROR
▪ INVALID_ARGUMENT_ERROR: number = 1
Static IO_ERROR
▪ IO_ERROR: number = 4
Static NOT_SUPPORTED_ERROR
▪ NOT_SUPPORTED_ERROR: number = 5
Static OPERATION_CANCELLED_ERROR
▪ OPERATION_CANCELLED_ERROR: number = 6
Static PENDING_OPERATION_ERROR
▪ PENDING_OPERATION_ERROR: number = 3
Static PERMISSION_DENIED_ERROR
▪ PERMISSION_DENIED_ERROR: number = 20
Static TIMEOUT_ERROR
▪ TIMEOUT_ERROR: number = 2
Static UNKNOWN_ERROR
▪ UNKNOWN_ERROR: number = 0
Error codes
Contactfield
Generic contact field.
Constructors
constructor
+ new ContactField(type?: undefined | string, value?: undefined | string, pref?: undefined | false | true): ContactField
Parameters:
| Name | Type |
|---|---|
type? | undefined | string |
value? | undefined | string |
pref? | undefined | false | true |
Returns: ContactField
Properties
Optional id
• id? : string | null
unique identifier, should only be set by native code
Optional pref
• pref? : undefined | false | true
Set to true if this ContactField contains the user's preferred value.
Optional type
• type? : string | null
A string that indicates what type of field this is, home for example.
Optional value
• value? : string | null
The value of the field, such as a phone number or email address.
Contactfindoptions
ContactFindOptions. Search options to filter
Constructors
constructor
+ new ContactFindOptions(filter?: undefined | string, multiple?: undefined | false | true, desiredFields?: string[], hasPhoneNumber?: undefined | false | true): ContactFindOptions
Parameters:
| Name | Type |
|---|---|
filter? | undefined | string |
multiple? | undefined | false | true |
desiredFields? | string[] |
hasPhoneNumber? | undefined | false | true |
Returns: ContactFindOptions
Properties
Optional desiredFields
• desiredFields? : string[]
Contact fields to be returned back. If specified, the resulting Contact object only features values for these fields.
Optional filter
• filter? : undefined | string
The search string used to find navigator.contacts.
Optional hasPhoneNumber
• hasPhoneNumber? : undefined | false | true
(Android only): Filters the search to only return contacts with a phone number informed.
Optional multiple
• multiple? : undefined | false | true
Determines if the find operation returns multiple navigator.contacts. Defaults to false.
Contactname
Contact name.
Constructors
constructor
+ new ContactName(formatted?: undefined | string, familyName?: undefined | string, givenName?: undefined | string, middleName?: undefined | string, honorificPrefix?: undefined | string, honorificSuffix?: undefined | string): ContactName
Parameters:
| Name | Type |
|---|---|
formatted? | undefined | string |
familyName? | undefined | string |
givenName? | undefined | string |
middleName? | undefined | string |
honorificPrefix? | undefined | string |
honorificSuffix? | undefined | string |
Returns: ContactName
Properties
Optional familyName
• familyName? : string | null
The contact's family name.
Optional formatted
• formatted? : string | null
The complete name of the contact.
Optional givenName
• givenName? : string | null
The contact's given name.
Optional honorificPrefix
• honorificPrefix? : string | null
The contact's prefix (example Mr. or Dr.)
Optional honorificSuffix
• honorificSuffix? : string | null
The contact's suffix (example Esq.).
Optional middleName
• middleName? : string | null
The contact's middle name.
Contactorganization
Contact organization.
Constructors
constructor
+ new ContactOrganization(type?: undefined | string, name?: undefined | string, department?: undefined | string, title?: undefined | string, pref?: undefined | false | true): ContactOrganization
Parameters:
| Name | Type |
|---|---|
type? | undefined | string |
name? | undefined | string |
department? | undefined | string |
title? | undefined | string |
pref? | undefined | false | true |
Returns: ContactOrganization
Properties
Optional department
• department? : string | null
The department the contract works for.
Optional id
• id? : string | null
unique identifier, should only be set by native code
Optional name
• name? : string | null
The name of the organization.
Optional pref
• pref? : undefined | false | true
Set to true if this ContactOrganization contains the user's preferred value.
Optional title
• title? : string | null
The contact's title at the organization.
Optional type
• type? : string | null
A string that indicates what type of field this is, home for example.
Contacts
Access and manage Contacts on the device.
Methods
create
▸ create(properties?: any): Contact
This function creates a new contact, but it does not persist the contact to device storage. To persist the contact to device storage, invoke contact.save().
Parameters:
| Name | Type | Description |
|---|---|---|
properties? | any | an object whose properties will be examined to create a new Contact |
Returns: Contact
new Contact object
find
▸ find(fields: ContactFieldType[], options?: ContactFindOptions): Promise‹Contact[]›
Returns an array of Contacts matching the search criteria.
Parameters:
| Name | Type | Description |
|---|---|---|
fields | ContactFieldType[] | that should be searched (see platform specific notes) |
options? | ContactFindOptions | that can be applied to contact searching |
Returns: Promise‹Contact[]›
a promise that resolves with the array of Contacts matching search criteria
newContactUI
▸ newContactUI(): Promise‹string›
iOS only Create a contact using the iOS Contact Picker UI
returns: a promise that resolves with the id of the created contact as param to successCallback
Returns: Promise‹string›
pickContact
▸ pickContact(): Promise‹Contact›
This function picks contact from phone using contact picker UI
Returns: Promise‹Contact›
a promise that resolves with the selected Contact object
Changelog
[1.1.2] (2020-06-10)
Bug Fixes
- ios: Adding additional search predicates on iOS
[1.1.1] (2020-05-28)
Bug Fixes
- ios: make wildcard return all contacts
[1.1.0] (2020-04-24)
Features
- ios: enable wildcard fetch-all contacts
[1.0.6] (2020-02-07)
Bug Fixes
- ios: make save work on existing contacts
[1.0.5] (2019-11-22)
Bug Fixes
- prevent devideready block when package is not installed as plugin
[1.0.4] (2019-11-08)
Bug Fixes
- ios: make pickContact prompt for permission if not granted
[1.0.3] (2019-11-04)
Bug Fixes
- make plugin don't break web context
[1.0.2] (2019-10-02)
Bug Fixes
- ios: remove contact notes code to work on iOS 13
1.0.1 (2019-09-20)
Bug Fixes
- plugin files not included on published package