> For the complete documentation index, see [llms.txt](https://docs.taptalk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.taptalk.io/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md).

# Contact

If your application is using the core implementation type, you can use these methods to manage your user's contacts.

{% hint style="warning" %}
**Note:** Please add **`#import <TapTalk/TapCoreContactManager.h>`** before using these methods.
{% endhint %}

| **TapTalk Contact Method**                                                                                                                                                             | **Description**                                                                   |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| [Get Contact List](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#get-contact-list)                                                         | Get all of the user's contact data from TapTalk.io.                               |
| [Fetch All User Contacts from Server](#fetch-all-user-contacts-from-server)                                                                                                            | Fetch the user's latest contact data from TapTalk.io server                       |
| [Get Contact Detail Info with TapTalk User ID](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#get-contact-detail-info-with-taptalk-user-id) | Get a detailed contact info with selected TapTalk.io user ID.                     |
| [Get Contact Detail Info with Client User ID](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#get-contact-detail-info-with-client-user-id)   | Get a detailed contact info with selected Client user ID (xcUserID).              |
| [Add User to Contact with User ID](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#add-user-to-contact-with-user-id)                         | Add a user with selected TapTalk.io user ID to the active user's contacts.        |
| [Add User to Contact with Phone Number](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#add-user-to-contact-with-phone-number)               | Add a user with selected phone number to the active user's contacts.              |
| [Remove User from Contact](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#remove-user-from-contact)                                         | Remove a user with selected TapTalk.io user ID from the active user's contacts.   |
| [Save User Data](/~/changes/FMvVnz8ZkLFBmR0Wx2wq/powertalk-chat-sdk-documentation/powertalk-ios/contact.md#save-user-data)                                                             | Save or update existing user data to local cache.                                 |
| [Search Local Contact](#search-local-contact)                                                                                                                                          | Search the active user's contacts from the device's local storage with a keyword. |
| [Report User](#report-user)                                                                                                                                                            | Submit a report for a selected user.                                              |
| [Report Message](#report-message)                                                                                                                                                      | Submit a report for a selected message.                                           |
| [Block User](#block-user)                                                                                                                                                              | Block a user from sending or receiving messages.                                  |
| [Unblock User](#unblock-user)                                                                                                                                                          | Unblock a blocked user.                                                           |
| [Get Blocked User List](#get-blocked-user-list)                                                                                                                                        | Retrieve a list of blocked users.                                                 |
| [Get Blocked User IDs](#get-blocked-user-ids)                                                                                                                                          | Retrieve a list of IDs from blocked users.                                        |
| [Get Groups in Common](#get-groups-in-common)                                                                                                                                          | Retrieve the list of groups in common with another user.                          |

### Get Contact List

Create a new group Get all of the user's contact data from TapTalk.io.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getAllUserContactsWithSuccess:^(NSArray<TAPUserModel *> * _Nonnull userArray) {
    //Success get contact list data
} failure:^(NSError * _Nonnull error) {
    //Failed to get contact list data
}];
```

{% endtab %}
{% endtabs %}

### Fetch All User Contacts from Server

Calling `fetchAllUserContactsFromServer` will fetch the user's latest contact data from TapTalk.io server and syncs it to the device's local storage.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] fetchAllUserContactsFromServerWithSuccess:^(NSArray<TAPUserModel *> * _Nonnull userArray) {
    //Success get contact list data
} failure:^(NSError * _Nonnull error) {
    //Failed to get contact list data
}];
```

{% endtab %}
{% endtabs %}

### Get Contact Detail Info with TapTalk User ID

Get a detailed contact info with selected TapTalk.io user ID.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getUserDataWithUserID:USER_ID success:^(TAPUserModel * _Nonnull user) {
    //Success get contact detail data
} failure:^(NSError * _Nonnull error) {
    //Failed to get contact detail data
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) Taptalk.io User ID of the selected user
{% endhint %}

### Get Contact Detail Info with Client User ID

Get a detailed contact info with selected Client user ID (xcUserID).

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getUserDataWithXCUserID:XC_USER_ID success:^(TAPUserModel * _Nonnull user) {
    //Success get contact detail data
} failure:^(NSError * _Nonnull error) {
    //Failed to get contact detail data
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`XC_USER_ID`**: (String) Client User ID of the selected user
{% endhint %}

### Add User to Contact with User ID

Add a user with selected TapTalk.io user ID to the active user's contacts.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] addToTapTalkContactsWithUserID:USER_ID success:^{
    //Success add to contact
} failure:^(NSError * _Nonnull error) {
    //Failed add to contact
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) Taptalk.io User ID of the contact to be added
{% endhint %}

### Add User to Contact with Phone Number

Add a user with selected phone number to the active user's contacts.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getUserDataWithUserID:USER_ID success:^(TAPUserModel * _Nonnull user) {
    //Success get contact detail data
} failure:^(NSError * _Nonnull error) {
    //Failed to get contact detail data
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`PHONE_NUMBER`**: (String) phone number of the contact to be added
{% endhint %}

### Remove User from Contact

Remove a user with selected TapTalk.io user ID from the active user's contacts.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] removeFromTapTalkContactsWithUserID:USER_ID success:^(NSString * _Nonnull successMessage) {
    //Success remove from contact
} failure:^(NSError * _Nonnull error) {
    //Failed remove from contact
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) Taptalk.io User ID of the contact to remove.
{% endhint %}

### Save User Data

Save or update existing user data to local cache.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] saveUserData:USER];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER`**: (TAPUserModel) the user data model to be saved
{% endhint %}

### Search Local Contact

Call this method to search the active user's contacts from the device's local storage with a keyword. Provided keyword will be used to filter the contacts' **full name** in the search result.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] searchLocalContactsByName:KEYWORD success:^(NSArray<TAPUserModel *> * _Nonnull userArray) {
    // Returns filtered contacts
} failure:^(NSError * _Nonnull error) {
    // Failed to get contact list data
}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`KEYWORD`**: (String) search keyword to filter full name
{% endhint %}

### Report User

You may call this method to submit a report for a selected user. Submitted reports can then be viewed through the dashboard.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] reportUser:USER_ID 
                                         category:CATEGORY
                                  isOtherCategory:IS_OTHER_CATEGORY
                                           reason:REASON
success:^(BOOL isSuccess) {
    // Successfully reported user
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) ID of the user to report\
**`CATEGORY`**: (String) Category of the violation. max length is 100 characters\
**`IS_OTHER_CATEGORY`**: (Boolean) If the category is other than the predefined categories\
**`REASON`**: (String) reason why the user is reported
{% endhint %}

### Report Message

You may call this method to submit a report for a selected message. Submitted reports can then be viewed through the dashboard.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] reportMessage:MESSAGE_ID 
                                              roomID:ROOM_ID
                                            category:CATEGORY
                                     isOtherCategory:IS_OTHER_CATEGORY
                                              reason:REASON
success:^(BOOL isSuccess) {
    // Successfully reported message
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`MESSAGE_ID`**: (String) unique server ID of the message to report\
**`ROOM_ID`**: (String) ID of the room where the message belongs to\
**`CATEGORY`**: (String) Category of the violation. max length is 100 characters\
**`IS_OTHER_CATEGORY`**: (Boolean) If the category is other than the predefined categories\
**`REASON`**: (String) reason why the message is reported
{% endhint %}

### Block User

You may block a user to stop conversation flow with the blocked user. Blocked users will not be able to send and receive message, or retrieve profile info from the active user.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] blockUserWithUserID:USER_ID 
success:^(TAPUserModel *blockedUser) {
    // Successfully blocked user
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) ID of the user to block
{% endhint %}

### Unblock User

You may unblock a blocked user to let them send and receive message from the active user.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] unblockUserWithUserID:USER_ID 
success:^(BOOL isSuccess) {
    // Successfully unblocked user
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) ID of the user to unblock
{% endhint %}

### Get Blocked User List

You may call this method to retrieve a list of blocked users.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getBlockedUserList:^(NSArray<TAPUserModel *> *blockedUserList) 
    // Successfully retrieved blocked users
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

### Get Blocked User IDs

You may call this method to retrieve a list of IDs from blocked users.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getBlockedUserIDs:^(NSArray<NSString *> *blockedUserIDs) 
    // Successfully retrieved blocked user IDs
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

### Get Groups in Common

You may use **`getGroupsInCommon`** method to retrieve the list of groups in common with another user.

{% tabs %}
{% tab title="Objective-C" %}

```objectivec
//import TapTalk Contact Manager
#import <TapTalk/TapCoreContactManager.h>

[[TAPCoreContactManager sharedManager] getGroupsInCommon:USER_ID 
success:^(NSArray<TAPRoomModel *> *groupRooms) {
    // Successfully retrieved rooms
} failure:^(NSError * _Nonnull error) {

}];
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**`USER_ID`**: (String) ID of the other user
{% endhint %}
