Native Contacts

Overview

Allow your users to sync their contacts to your app. Or simplify form completion by enriching additional form fields based on a known lookup field such as email/phone number. Used in CRM and field service applications, for social networking and community platform apps, and for eCommerce shipping.

To implement functionality the Native Contacts plugin enables you to seamlessly retrieve all contacts from the device in bulk or to query contacts via lookup fields.

Implementation Guide

Once the premium module has been added to your app, you may use the following GoNative JavaScript Bridge commands to access its functionality.

We have added GoNative Javascript Bridge to allow retrieval of user contacts.

To use it, you will need to create a javascript function on your web page:

function contacts_callback(data) { 
    // process the data here. In this example, we are just logging it 
    alert(JSON.stringify(data)); 
}

↔️GoNative JavaScript Bridge

Then run this JavaScript function, passing in the name of your callback function:

// Callback method
gonative.contacts.getAll({'callback': contacts_callback});

// Promise method
gonative.contacts.getAll().then(function (data) {
// process the data here. In this example, we are just logging it 
   alert(JSON.stringify(data)); 
});

Learn more about using promises and the GoNative JavaScript Bridge.

The app will prompt the user for permission. If granted, it will call contacts_callback with this object as data:

{ 
    success: true, 
    contacts: [...] 
}

"contacts" will be an array of contact objects. Each object may have the following fields:

iOS:

  • birthday
  • namePrefix
  • givenName
  • middleName
  • familyName
  • previousFamilyName
  • nameSuffix
  • nickname
  • phoneticGivenName
  • phoneticMiddleName
  • phoneticFamilyName
  • organizationName
  • departmentName
  • jobTitle
  • note
  • phoneNumbers
  • emailAddresses
  • postalAddresses

Android:

  • birthday
  • givenName
  • familyName
  • companyName
  • companyTitle
  • note
  • phoneNumbers
  • emailAddresses
  • postalAddresses

phoneNumbers, emailAddresses, and postalAddresses are arrays of objects, described below. All other fields are strings.

Each phoneNumber is an object with fields:

  • label
  • phoneNumber

Each emailAddress is an object with fields:

  • label
  • emailAddress

Each postalAddress is an object with fields:

  • label
  • street
  • city
  • state - iOS only
  • region - Android only
  • postalCode
  • country
  • isoCountryCode - iOS only
  • subAdministrativeArea - iOS only
  • subLocality - iOS only

Checking Permissions

The app will automatically prompt users for permissions as necessary.

↔️GoNative JavaScript Bridge

To separately check if permission have been granted, add the following JavaScript code:

function callback(result){
     alert(JSON.stringify(result));
}

// Callback method
gonative.contacts.getPermissionStatus({'callback': callback}); // returns promise

// Promise method
gonative.contacts.getPermissionStatus().then(function (result) {
   alert(JSON.stringify(result)); 
});

The CALLBACK function will be run with an object like:
{"status": "granted"}

The possible statuses on iOS are:

  • granted – user has granted permission
  • denied – user has explicitly denied permission
  • restricted – access has been administratively prohibited
  • notDetermined – user has not yet been asked for permission

The possible statuses on Android are:

  • granted – user has granted permission
  • denied – user has not yet been asked, or has explicitly denied permission