User profile

User ID

This method is used to initialize the user in applications where you have set calculation by user ID specified by the developer, applications that are part of a cross-platform project.

You can also use this method when calculating by device ID (by default) to pass in the user ID used on your servers so that you can easily find the user on devtodev.

We recommend that you pass this parameter in the initialization configuration (userId property of an instance of theDTDAnalyticsConfiguration class).

Do not pass an empty string ("") to the setUserID method as the user ID. Assigning an empty string is a command to assign a default value to the user ID (it is equal to the current device ID). In applications with calculation by user ID, this can lead to unnecessary registrations.

To set a new value as the user ID, use the setUserId method.

DTDAnalytics.setUserId(userId: "Custom User ID")

To get the current value of the user ID, use the asynchronous method getDeviceId(_ completionHandler: @escaping (String) -> Void)

DTDAnalytics.getUserId { userId in
  // your code


This method is used in very rare cases. It is applicable in the case when the calculation of users in the project is carried out by the user ID specified by the developer. In this case, the application can change this identifier. For example, calculation in the application is carried out by user emails and in the application, it is possible to change this email to another one. At the time of replacement, you need to call this method, specifying the user's previous email and the one with which it was replaced.

DTDAnalytics.replace(fromUserId: "Old user id", toUserId: "New user id")

Do not use this method to re-login as a different user! The setUserId method is used for relogging.

Current user level

This method is used in cross-platform and data synchronized applications. The method is required to update user level data.

To set the current value to the user level, use setCurrentLevel(currentLevel: Int) method:

DTDAnalytics.setCurrentLevel(value: 2)

We recommend that you use the setCurrentLevel method immediately after using the setUserID method or specify the current user level in the initialization configuration (the level property of an instance of the DTDAnalyticsConfiguration).

Do not use the setCurrentLevel method when the user reaches a new level. In this case, you must use the levelUp method.

To get the user-level value stored by the SDK, use getCurrentLevel(completionHandler: @escaping (Int) -> Void) method

DTDAnalytics.getCurrentLevel { level in
  // your code


If you have your own methods for detecting cheaters in the application, you can tag such users. Actions taken by these users will not be counted in statistics.

DTDUserCard.setCheater(cheater: true)


DTDUserCard.setTester(tester: true)

Reserved user properties

Attention! These properties have been removed since the devtodev SDK versions: iOS & macOS 2.4.0, Android 2.5.0, Unity SDK 3.8.0, Godot 1.0.0.

We strongly recommend not to use these properties because they refer to personal data.

Attention! We strongly discourage the storage of personal user data! If you plan to pass this data, be sure to indicate this in the ‘Nutrition label’ when submitting the application to the App Store review.





setName(name: String)

getName(completionHandler: @escaping (String?) -> Void)


setEmail(email: String)

getEmail(completionHandler: @escaping (String?) -> Void)


setPhone(phone: String)

getPhone(completionHandler: @escaping (String?) -> Void)


setPhoto(photo: String)

getPhoto(completionHandler: @escaping (String?) -> Void)


setGender(gender: DTDGender)

getGender(completionHandler: @escaping (DTDGender) -> Void)


setAge(age: Int)

getAge(completionHandler: @escaping (Int) -> Void

Custom user property

Each devtodev project can have up to 30 custom user properties. User custom property values can be a number, a string (up to 500 symbols), or a boolean value.

Attention! We strongly recommend that you do not use these properties to transfer and store data that fits the definition of personal data!

This is how you can set properties on the current user profile:

DTDUserCard.set(key: "key for string value", value: "string value")
DTDUserCard.set(key: "key for int value", value: 10)
DTDUserCard.set(key: "key for double value", value: 12.5)
DTDUserCard.set(key: "key for bool value", value: true)

It is important to remember that the key for custom user properties has a length limit. If the limit is exceeded (from 1 to 64 characters), the key will be truncated to the maximum allowed length

To get the current value stored in the user profile on the SDK, you need to use the method:

getValue(key: String, _completionHandler: @escaping (Any) -> Void)

DTDUserCard.getValue(key: "key for value") { value in
  // your code

When using the getValue method, note that the Anyreturn type will need to be cast to the data type you want.

Unset user property

It removes a property or a list of properties and their values from the current user profile.

DTDUserCard.unset(property: "key for string value")
DTDUserCard.unset(properties: ["key for string value", 
                               "key for int value"])

Unset all user properties

To remove all properties from the user card, use:


Keep in mind that the cheater mark is not cleared from the user card; you can only uncheck the mark manually using the setCheater method.

Last updated