wix-react-native-contacts

1.1.0 • Public • Published

React Native Contacts

A react native module to allow access to user contacts on a mobile device.

Supports both iOS and Android. The iOS version uses the AddressBook API or the new Contacts API on iOS>=9.

API

getAuthorizationStatus (iOS only)

Retrieves the current authorization status to access contact data. Based upon the access, the application could display or hide its UI elements that would access any Contacts API Callback Returns the authorization status. The value is from the ContactsManagerAuthorizationStatus enum

requestAuthorization (iOS only)

Request access to the user's contacts. Users are able to grant or deny access to contact data on a per-application basis. The user will only be prompted the first time access is requested; Callback Returns the authorization status. The value is from the ContactsManagerAuthorizationStatus enum.

getContactID

Retrieves the contact ID of a contact with the requested phone number. If there is more than one contact with this number, the first one will be retrieved. Callback Returns with an error message (if an error occured) and the contactID. In case of a error, contactID value will be kUnknownContactID

addNewContact

Adds a new contact to the user's contacts. Callback Returns with an error message (if an error occured) and the contactID. In case of a error, contactID value will be kUnknownContactID

Installation iOS

Installation Android

  • Install using npm: npm install wix-react-native-contacts
  • In android/setting.gradle
...
include ':wix-react-native-contacts'
project(':wix-react-native-contacts').projectDir = new File(settingsDir, '../node_modules/wix-react-native-contacts/android')
  • In android/app/build.gradle
...
dependencies {
    ...
    compile project(':wix-react-native-contacts')
}
  • Register module (in android/app/src/main/java/[your-app-namespace]/MainActivity.java)
import com.wix.reactnativecontacts.ReactNativeContacts; // <------ ADD ME 
 
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
  ......
    mReactInstanceManager = ReactInstanceManager.builder()
      .setApplication(getApplication())
      .setBundleAssetName("index.android.bundle")
      .setJSMainModuleName("index.android")
      .addPackage(new MainReactPackage())
      .addPackage(new ReactNativeContacts())              // <------ ADD ME 
      .setUseDeveloperSupport(BuildConfig.DEBUG)
      .setInitialLifecycleState(LifecycleState.RESUMED)
      .build();
  ......
}
  • Add Contacts permission (in android/app/src/main/AndroidManifest.xml)
...
  <uses-permission android:name="android.permission.READ_CONTACTS" />
  <uses-permission android:name="android.permission.WRITE_CONTACTS" />
...

Usage

First make sure to requier the ContactsManager like so:

var ContactsManager = React.NativeModules.ContactsManager;

getAuthorizationStatus (iOS only)

ContactsManager.getAuthorizationStatus((status) => {
      this.setState({
        authStatus: status,
        authChecked: true
      });
    })

requestAuthorization (iOS only)

  ContactsManager.requestAuthorization((status) => {
      this.setState({ authStatus: status });
    })

addNewContact

  var newContact = {
      firstName: "Artal",
      middleName: "middle",
      lastName: "Druk",
      phoneNumbers: [{
        label: ContactsManager.CreateContactMobilePhoneLabel,
        number: "050-1234567",
      }],
      emailAddresses: [{
        label: "my email label",
        email: "someone@wix.com",
      }],
    }
 
    ContactsManager.addNewContact(newContact, (error, contactID) => {
 
      var alertTitle = error ? "Error" : "Success";
      var alertMessage = error ? error : "Contact added. New contact ID: " + contactID;
      this.showAlert(alertTitle, alertMessage);
    })

getContactID

  ContactsManager.getContactID("050-1234567", (error, contactID) => {
 
      var alertTitle = error ? "Error" : "Success";
      var alertMessage = error ? error : "Contact ID: " + contactID;
      if (contactID === ContactsManager.UnknownContactID) {
        alertMessage = "Contact not found";
      }
      this.showAlert(alertTitle, alertMessage);
    })

full example

You can see a full working example here.

Readme

Keywords

none

Package Sidebar

Install

npm i wix-react-native-contacts

Weekly Downloads

6

Version

1.1.0

License

MIT

Last publish

Collaborators

  • wix.mobile
  • artald