Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A wrapper class for iOS Address Book access that converts private contact information into hashed tokens.

branch: master
README.markdown

Hashed Contacts

Hashed Contacts is a drop-in iOS library that provides a wrapper around the Address Book frameworks designed to ensure the privacy of user data. It does this in two ways:

  1. Before access is ever made to the Address Book the user will first be prompted for permission
  2. Once access is granted the library returns hashed tokens representing the user's private data rather than the data itself.

These two steps do much to establish user trust with how you treat their data.

Installation

Copy the contents of the Source directory into your project. This will include the two main files DTSHashedContactsProvider.m and DTSHashedContactsProvider.h in addition to the localization files.

Add the AddressBook.framework to your project.

Supports iOS 4.0 and above

Replace the value of DTSHashSALT in DTSHashedContactsProvider.m and remove the warning.

Usage

See a full working example of how this library can be used by opening the included in this repository.

To use the library simply initialize an instance of the DTSHashedContactsProvider class. Note: You will need to retain a reference to this instance until you are done loading the user's data.

You may configure this in three ways:

  1. Choose the hashing method used via the hashingMethod property. Options are SHA1 and SHA512
  2. Specify the alert title via the alertTitle property
  3. Specify the alert message via the alertMessage property

A default value for the alert is provided based on the application display name.

Once that is done simply call the desired retrieval method to get your tokens.

[hashedContactsProvider emailTokensWithConfirmation:^(NSArray* tokens) {
//When permission given
} whenDeclined:^{
//When permission denied
}];

The result provided in tokens will look like this:

[@"eca7cf4a5981108abb6e2b9754c96b62e6c241db",@"a927a7e701521fd46b89db0162a05c1159cbd2aa"]

Something went wrong with that request. Please try again.