Repro - Mobile Analytics for growth
日本語
Sign Up Back to Dashboard
  • System Requirements
  • Dashboard Guide
  • Development Guide
    • Signup
    • iOS/Android SDK
      • Get Started
      • Session Lifecycle
      • User ID
      • Device ID
      • User Profile
        • Standard User Profile
          • Gender
          • Email Address
          • Japanese prefecture
          • User birthday
          • User age
        • Automatically Recorded Standard User Profiles
          • Last Session Date
          • Locale
          • Time Zone
        • Custom User Profile
          • String
          • Integer
          • Decimal
          • Date
        • Conditional Set Operations
          • String (Conditional)
          • Integer (Conditional)
          • Decimal (Conditional)
          • Date (Conditional)
        • Increment/Decrement Operations
          • Integer Increment
          • Integer Decrement
          • Decimal Increment
          • Decimal Decrement
        • Conditional Set and Increment/Decrement Operations for Standard User Profiles
          • Age (Conditional)
          • Gender (Conditional)
          • Email Address (Conditional)
          • Residence Prefecture (Conditional)
          • Date of Birth (Conditional)
          • Age Increment
          • Age Decrement
        • User Profile Deletion
          • Custom Profile Deletion
          • Standard Profile Deletion
      • Event Tracking
      • Push Notification
      • NewsFeed
      • In-App Message
      • Silver Egg Recommendation Messages
      • Remote Config
      • WebView
      • Opt-out feature
      • Settings regarding the collection of advertiser IDs
      • Registering an user device into a specific audience with the help of a QR code
      • Set attribution data from Adjust to Repro
      • Set attribution data from AppsFlyer to Repro
      • Log Level
      • Verification Method
    • Web
    • Audience API
    • Audience Import(β)
    • Push API
    • User Profile API
    • User Profile Bulk Import
    • NewsFeed API
    • Deletion Targeted User Registration API
    • Booster installation guide
    • Mail(β)
  • Release Notes
  • FAQ

User Profile¶

User Profile is an additional information of the user which can be something like gender, age, region, language, subscription type, etc.

You can segment the group of users with these profiles when sending push notifications or in-app messages.

Each profile is identified by a unique user ID. We recommend you to set a user ID before setting user profiles. If you do not set a user ID, then the Repro SDK automatically generates an anonymous user ID. But anonymous user ID will be changed when users update or uninstall your app.

Warning

  • Registered user profile keys and data types can not be changed or deleted after.

  • There is no upper limit to the number of registered user profile keys. However, the number of user profiles that can be used as analytics filter as well as campaign filters are limited. You can check the number of user profile keys currently being used from Settings > User Profile Settings.

  • In User Profile Settings, You can change the settings of user profiles that you can use to filter target audience of Campaigns. User Profiles disabled here will not be displayed as candidates for filters when creating campaigns or display Analytics screen.

  • Once your app reaches the limit of User Profile Keys, all new incoming User Profile Keys will be registered, but will not be shown as candidates for filters until it is enabled from Settings > User Profile Settings.

  • In User Profile Settings, deactivating user profiles that are being used to filter campaign target users will cause the campaign not to be sent.

Warning

  • To configure user profiles in HTML in-app messages, you must use iOS SDK 5.19.0 or higher and Android SDK 5.18.0 or higher.

  • To configure user profiles in native WebViews, you must have iOS SDK 5.19.0 or higher and Android SDK 5.18.0 or higher, and use repro.js version 6 or higher . The following is a list of requirements in order to access Repro from within webviews.

  • To perform conditional set, increase/decrease, and delete operations, you must use iOS SDK 5.21.0, Android SDK 5.20.0 and repro.js version 8 or higher or higher.

Standard User Profile¶

Repro defines user profiles widely used for filtering users as Standard User Profile. Please call the appropriate API when setting Standard User Profiles. Use Custom User Profile when you want to set original user profiles in your application.

Warning

  • On the SDK versions listed below it is not possible to insert user e-mail addresses and gender into the standard user profile.

    • Unity SDK 6.15.0 and below

    • Cordova Plugin 6.16.0 and below

  • With the SDK versions listed below, it is possible to insert the user Japanese prefecture, birthday and age into the standard user profile.

    • Android SDK 5.14.0 and above

    • iOS SDK 5.15.0 and above

    • Unity SDK 5.16.0 and above

    • React Native SDK 3.17.0 and above

    • Cordova Plugin 6.17.0 and above

    • Cocos2d-x SDK 5.16.0 and above

    • Flutter Package 3.8.0 and above

Gender¶

Set the gender of user. The value is available as constants defined by Repro.

// set the gender as "male"
[Repro setUserGender:RPRUserProfileGenderMale];
// set the gender as "female"
[Repro setUserGender:RPRUserProfileGenderFemale];
// set the gender as "other"
[Repro setUserGender:RPRUserProfileGenderOther];
// set the gender as "male"
Repro.setUserProfile(gender: .male)
// set the gender as "female"
Repro.setUserProfile(gender: .female)
// set the gender as "other"
Repro.setUserProfile(gender: .other)
// set the gender as "male"
Repro.setUserGender(UserProfileGender.MALE);
// set the gender as "female"
Repro.setUserGender(UserProfileGender.FEMALE);
// set the gender as "other"
Repro.setUserGender(UserProfileGender.OTHER);
// set the gender as "male"
ReproCpp::setUserGender(ReproCpp::UserProfileGenderMale);
// set the gender as "female"
ReproCpp::setUserGender(ReproCpp::UserProfileGenderFemale);
// set the gender as "other"
ReproCpp::setUserGender(ReproCpp::UserProfileGenderOther);
// set the gender as "male"
Repro.SetUserGender(UserProfileGender.Male);
// set the gender as "female"
Repro.SetUserGender(UserProfileGender.Female);
// set the gender as "other"
Repro.SetUserGender(UserProfileGender.Other);
// set the gender as "male"
Repro.setUserGender(Repro.UserProfileGender.Male);
// set the gender as "female"
Repro.setUserGender(Repro.UserProfileGender.Female);
// set the gender as "other"
Repro.setUserGender(Repro.UserProfileGender.Other);
// set the gender as "male"
Repro.setUserGender(Repro.GENDER_MALE);
// set the gender as "female"
Repro.setUserGender(Repro.GENDER_FEMALE);
// set the gender as "other"
Repro.setUserGender(Repro.GENDER_OTHER);
// set the gender as "male"
repro.setUserGender(repro.userProfileGender.Male);
// set the gender as "female"
repro.setUserGender(repro.userProfileGender.Female);
// set the gender as "other"
repro.setUserGender(repro.userProfileGender.Other);
// set the gender as "male"
Repro.setUserGender(Repro.UserProfileGender.Male);
// set the gender as "female"
Repro.setUserGender(Repro.UserProfileGender.Female);
// set the gender as "other"
Repro.setUserGender(Repro.UserProfileGender.Other);
// set the gender as "male"
await Repro.setUserGender(UserGender.male);
// set the gender as "female"
await Repro.setUserGender(UserGender.female);
// set the gender as "other"
await Repro.setUserGender(UserGender.other);

When setting up the filter of push notifications or in-app messages, please refer to the table below to specify the string value.

Gender

Values to specify in filters

Male

male

Female

female

Other

other

Email Address¶

Set the email address of user.

[Repro setUserEmailAddress:@"user@example.com"];
Repro.setUserProfile(emailAddress: "user@exmaple.com")
Repro.setUserEmailAddress("user@exmaple.com");
ReproCpp::setUserEmailAddress("user@exmaple.com");
Repro.SetUserEmailAddress("user@example.com");
Repro.setUserEmailAddress("user@example.com");
Repro.setUserEmailAddress("user@exmaple.com");
repro.setUserEmailAddress("user@exmaple.com");
Repro.setUserEmailAddress("user@exmaple.com");
await Repro.setUserEmailAddress("user@example.com");

Japanese prefecture¶

Setting the home prefecture of an user

// set the prefecture as "Tokyo"
[Repro setUserResidencePrefecture:RPRUserProfilePrefectureTokyo];

// Possible values are as follows:
//   RPRUserProfilePrefectureHokkaido, -Aomori, -Iwate, -Miyagi, -Akita, -Yamagata,
//   -Fukushima, -Ibaraki, -Tochigi, -Gunma, -Saitama, -Chiba, -Tokyo, -Kanagawa,
//   -Niigata, -Toyama, -Ishikawa, -Fukui, -Yamanashi, -Nagano, -Gifu, -Shizuoka,
//   -Aichi, -Mie, -Shiga, -Kyoto, -Osaka, -Hyogo, -Nara, -Wakayama, -Tottori,
//   -Shimane, -Okayama, -Hiroshima, -Yamaguchi, -Tokushima, -Kagawa, -Ehime, -Kochi,
//   -Fukuoka, -Saga, -Nagasaki, -Kumamoto, -Oita, -Miyazaki, -Kagoshima, -Okinawa
// set the prefecture as "Tokyo"
Repro.setUserProfile(residencePrefecture: .tokyo)

// Possible values are as follows:
//   .hokkaido, .aomori, .iwate, .miyagi, .akita, .yamagata,
//   .fukushima, .ibaraki, .tochigi, .gunma, .saitama, .chiba, .tokyo, .kanagawa,
//   .niigata, .toyama, .ishikawa, .fukui, .yamanashi, .nagano, .gifu, .shizuoka,
//   .aichi, .mie, .shiga, .kyoto, .osaka, .hyogo, .nara, .wakayama, .tottori,
//   .shimane, .okayama, .hiroshima, .yamaguchi, .tokushima, .kagawa, .ehime, .kochi,
//   .fukuoka, .saga, .nagasaki, .kumamoto, .oita, .miyazaki, .kagoshima, .okinawa
// set the prefecture as "Tokyo"
Repro.setUserResidencePrefecture(UserProfilePrefecture.TOKYO);

// Possible values are as follows:
//   HOKKAIDO, AOMORI, IWATE, MIYAGI, AKITA, YAMAGATA,
//   FUKUSHIMA, IBARAKI, TOCHIGI, GUNMA, SAITAMA, CHIBA, TOKYO, KANAGAWA,
//   NIIGATA, TOYAMA, ISHIKAWA, FUKUI, YAMANASHI, NAGANO, GIFU, SHIZUOKA,
//   AICHI, MIE, SHIGA, KYOTO, OSAKA, HYOGO, NARA, WAKAYAMA, TOTTORI,
//   SHIMANE, OKAYAMA, HIROSHIMA, YAMAGUCHI, TOKUSHIMA, KAGAWA, EHIME, KOCHI,
//   FUKUOKA, SAGA, NAGASAKI, KUMAMOTO, OITA, MIYAZAKI, KAGOSHIMA, OKINAWA
// set the prefecture as "Tokyo"
ReproCpp::setUserResidencePrefecture(ReproCpp::UserProfilePrefectureTokyo);

// Possible values are as follows:
//   UserProfilePrefectureHokkaido, -Aomori, -Iwate, -Miyagi, -Akita, -Yamagata,
//   -Fukushima, -Ibaraki, -Tochigi, -Gunma, -Saitama, -Chiba, -Tokyo, -Kanagawa,
//   -Niigata, -Toyama, -Ishikawa, -Fukui, -Yamanashi, -Nagano, -Gifu, -Shizuoka,
//   -Aichi, -Mie, -Shiga, -Kyoto, -Osaka, -Hyogo, -Nara, -Wakayama, -Tottori,
//   -Shimane, -Okayama, -Hiroshima, -Yamaguchi, -Tokushima, -Kagawa, -Ehime, -Kochi,
//   -Fukuoka, -Saga, -Nagasaki, -Kumamoto, -Oita, -Miyazaki, -Kagoshima, -Okinawa
// set the prefecture as "Tokyo"
Repro.SetUserResidencePrefecture(UserProfilePrefecture.Tokyo);

// Possible values are as follows:
//   Hokkaido, Aomori, Iwate, Miyagi, Akita, Yamagata,
//   Fukushima, Ibaraki, Tochigi, Gunma, Saitama, Chiba, Tokyo, Kanagawa,
//   Niigata, Toyama, Ishikawa, Fukui, Yamanashi, Nagano, Gifu, Shizuoka,
//   Aichi, Mie, Shiga, Kyoto, Osaka, Hyogo, Nara, Wakayama, Tottori,
//   Shimane, Okayama, Hiroshima, Yamaguchi, Tokushima, Kagawa, Ehime, Kochi,
//   Fukuoka, Saga, Nagasaki, Kumamoto, Oita, Miyazaki, Kagoshima, Okinawa
// set the prefecture as "Tokyo"
Repro.setUserResidencePrefecture(Repro.UserProfilePrefecture.Tokyo);

// Possible values are as follows:
//   Hokkaido, Aomori, Iwate, Miyagi, Akita, Yamagata,
//   Fukushima, Ibaraki, Tochigi, Gunma, Saitama, Chiba, Tokyo, Kanagawa,
//   Niigata, Toyama, Ishikawa, Fukui, Yamanashi, Nagano, Gifu, Shizuoka,
//   Aichi, Mie, Shiga, Kyoto, Osaka, Hyogo, Nara, Wakayama, Tottori,
//   Shimane, Okayama, Hiroshima, Yamaguchi, Tokushima, Kagawa, Ehime, Kochi,
//   Fukuoka, Saga, Nagasaki, Kumamoto, Oita, Miyazaki, Kagoshima, Okinawa
// set the prefecture as "Tokyo"
Repro.setUserResidencePrefecture(Repro.PREFECTURE_TOKYO);

// Possible values are as follows:
//   PREFECTURE_HOKKAIDO, -AOMORI, -IWATE, -MIYAGI, -AKITA, -YAMAGATA,
//   -FUKUSHIMA, -IBARAKI, -TOCHIGI, -GUNMA, -SAITAMA, -CHIBA, -TOKYO, -KANAGAWA,
//   -NIIGATA, -TOYAMA, -ISHIKAWA, -FUKUI, -YAMANASHI, -NAGANO, -GIFU, -SHIZUOKA,
//   -AICHI, -MIE, -SHIGA, -KYOTO, -OSAKA, -HYOGO, -NARA, -WAKAYAMA, -TOTTORI,
//   -SHIMANE, -OKAYAMA, -HIROSHIMA, -YAMAGUCHI, -TOKUSHIMA, -KAGAWA, -EHIME, -KOCHI,
//   -FUKUOKA, -SAGA, -NAGASAKI, -KUMAMOTO, -OITA, -MIYAZAKI, -KAGOSHIMA, -OKINAWA
// set the prefecture as "Tokyo"
repro.setUserResidencePrefecture(repro.userProfilePrefecture.TOKYO);

// Possible values are as follows:
//   HOKKAIDO, AOMORI, IWATE, MIYAGI, AKITA, YAMAGATA,
//   FUKUSHIMA, IBARAKI, TOCHIGI, GUNMA, SAITAMA, CHIBA, TOKYO, KANAGAWA,
//   NIIGATA, TOYAMA, ISHIKAWA, FUKUI, YAMANASHI, NAGANO, GIFU, SHIZUOKA,
//   AICHI, MIE, SHIGA, KYOTO, OSAKA, HYOGO, NARA, WAKAYAMA, TOTTORI,
//   SHIMANE, OKAYAMA, HIROSHIMA, YAMAGUCHI, TOKUSHIMA, KAGAWA, EHIME, KOCHI,
//   FUKUOKA, SAGA, NAGASAKI, KUMAMOTO, OITA, MIYAZAKI, KAGOSHIMA, OKINAWA
// set the prefecture as "Tokyo"
Repro.setUserResidencePrefecture(Repro.UserProfilePrefecture.TOKYO);

// Possible values are as follows:
//   HOKKAIDO, AOMORI, IWATE, MIYAGI, AKITA, YAMAGATA,
//   FUKUSHIMA, IBARAKI, TOCHIGI, GUNMA, SAITAMA, CHIBA, TOKYO, KANAGAWA,
//   NIIGATA, TOYAMA, ISHIKAWA, FUKUI, YAMANASHI, NAGANO, GIFU, SHIZUOKA,
//   AICHI, MIE, SHIGA, KYOTO, OSAKA, HYOGO, NARA, WAKAYAMA, TOTTORI,
//   SHIMANE, OKAYAMA, HIROSHIMA, YAMAGUCHI, TOKUSHIMA, KAGAWA, EHIME, KOCHI,
//   FUKUOKA, SAGA, NAGASAKI, KUMAMOTO, OITA, MIYAZAKI, KAGOSHIMA, OKINAWA
// set the prefecture as "Tokyo"
await Repro.setUserResidencePrefecture(UserProfilePrefecture.tokyo);

// Possible values are as follows:
//   hokkaido, aomori, iwate, miyagi, akita, yamagata,
//   fukushima, ibaraki, tochigi, gunma, saitama, chiba, tokyo, kanagawa,
//   niigata, toyama, ishikawa, fukui, yamanashi, nagano, gifu, shizuoka,
//   aichi, mie, shiga, kyoto, osaka, hyogo, nara, wakayama, tottori,
//   shimane, okayama, hiroshima, yamaguchi, tokushima, kagawa, ehime, kochi,
//   fukuoka, saga, nagasaki, kumamoto, oita, miyazaki, kagoshima, okinawa

In case of setting a filter for push notifications or In-App Messages, please choose a string like 東京都 or 大阪府 compare value.

User birthday¶

Setting the birthday of an user

NSDate *date = ... // Create an NSDate object for the user's birthday date
[Repro setUserDateOfBirth:date];
let date = ... // Create an NSDate object for the user's birthday date
Repro.setUserProfile(dateOfBirth: date)
Date date = ... // Create a Date object for the user's birthday date
Repro.setUserDateOfBirth(date);
ReproCpp::setUserDateOfBirth(2000, 12, 31);
DateTime date = ... // Create a DateTime object for the user's birthday date
Repro.SetUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
Repro.setUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
Repro.setUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
repro.setUserDateOfBirth(date.getTime());
let date = ... // Create a Date object for the user's birthday date
Repro.setUserDateOfBirth(date.getTime());
DateTime date = ... // Create a DateTime object for the user's birthday date
await Repro.SetUserDateOfBirth(date);

User age¶

Setting the age of an user

[Repro setUserAge:20];
Repro.setUserProfile(age: 20)
Repro.setUserAge(20);
ReproCpp::setUserAge(20);
Repro.SetUserAge(20);
Repro.setUserAge(20);
Repro.setUserAge(20);
repro.setUserAge(20);
Repro.setUserAge(20);
await Repro.setUserAge(20);

Automatically Recorded Standard User Profiles¶

The following standard user profiles are recorded automatically in each session without having to explicitly call the APIs.

Last Session Date¶

The last day the user used the application is recorded as a date value.

Locale¶

The locale setting of user's device is recorded as a string value. The value is presented in the format like language-script-region which conforms to IETF language tag. About IETF language tag, please refer to this page.

Note

  • Because the exact value of locale depends on devices, the same locale may have multiple possible values. For example, the possible values of Japanese locale are ja and ja-JP.

  • Consequently, when using locale to setup the filter, please use the contains keyword. For example, to specify Japanese locale, please specify by "contains ja" in the filter.

Time Zone¶

The time zone settings of user's device is recorded as a string. The value conforms to the names defined in Time Zone Database. For Example, the value of Japanese Standard Time (JST) is defined as Asia/Tokyo. About Time Zone, please refer to this page.

Custom User Profile¶

Set any custom profiles that are not defined in the standard user profiles. String is allowed as the key for the profile. Keys starting from ___repro___ cannot be used. Nil or empty string are not allowed, and the maximum key length is 255 characters.

You can set String or Number to property's value.

String¶

Maximum value length is 255 characters.

[Repro setStringUserProfile:@"Developer" forKey:@"Job"];
Repro.setUserProfile(stringValue: "Developer", forKey: "Job")
Repro.setStringUserProfile("Job", "Developer");
ReproCpp::setStringUserProfile("Job", "Developer");
Repro.SetStringUserProfile ("Job", "Developer");
Repro.setStringUserProfile("Job", "Developer");
Repro.setStringUserProfile("Job", "Developer");
repro.setStringUserProfile("Job", "Developer");
Repro.setStringUserProfile("Job", "Developer");
await Repro.setStringUserProfile("Job", "Developer");

Integer¶

[Repro setIntUserProfile:25 forKey:@"Age"];
Repro.setUserProfile(integerValue: 25, forKey: "age")
Repro.setIntUserProfile("Age", 25);
ReproCpp::setIntUserProfile("Age", 25);
Repro.SetIntUserProfile ("Age", 25);
Repro.setIntUserProfile("Age", 25);
Repro.setIntUserProfile("Age", 25);
repro.setIntUserProfile("Age", 25);
Repro.setIntUserProfile("Age", 25);
await Repro.setIntUserProfile("Age", 25);

Decimal¶

[Repro setDoubleUserProfile:176.5 forKey:@"Height"];
Repro.setUserProfile(doubleValue: 176.5, forKey: "Height")
Repro.setDoubleUserProfile("Height", 176.5);
ReproCpp::setDoubleUserProfile("Height", 176.5);
Repro.SetDoubleUserProfile ("Height", 176.5);
Repro.setDoubleUserProfile("Height", 176.5);
Repro.setDoubleUserProfile("Height", 176.5);
repro.setDoubleUserProfile("Height", 176.5);
Repro.setDoubleUserProfile("Height", 176.5);
await Repro.setDoubleUserProfile("Height", 176.5);

Date¶

NSDate* now = [[NSDate alloc] init];
[Repro setDateUserProfile:now forKey:@"LastLogin"];
let now = Date()
Repro.setUserProfile(dateValue: now, forKey: "LastLogin")
Date now = new Date();
Repro.setDateUserProfile("LastLogin", now);
std::time_t now = std::time(0);
ReproCpp::setDateUserProfile("LastLogin", now);
DateTime now = DateTime.Now;
Repro.SetDateUserProfile ("LastLogin", now);
let now = new Date();
Repro.setDateUserProfile("LastLogin", now);
let now = new Date();
Repro.setDateUserProfile("LastLogin", now.toISOString());
let now = new Date();
repro.setDateUserProfile("LastLogin", now.getTime());
let now = new Date();
Repro.setDateUserProfile("LastLogin", now.getTime());
final now = DateTime.now();
await Repro.setDateUserProfile("LastLogin", now);

Conditional Set Operations¶

Sets values only when the profile is not already set, without updating existing profiles.

String (Conditional)¶

Sets a string value only when the specified key has no profile set.

[Repro onlySetIfAbsentStringUserProfile:@"Developer" forKey:@"Job"];
Repro.onlySetIfAbsentUserProfile(stringValue: "Developer", forKey: "Job")
Repro.onlySetIfAbsentStringUserProfile("Job", "Developer");
ReproCpp::onlySetIfAbsentStringUserProfile("Job", "Developer");
Repro.OnlySetIfAbsentStringUserProfile ("Job", "Developer");
Repro.onlySetIfAbsentStringUserProfile("Job", "Developer");
Repro.onlySetIfAbsentStringUserProfile("Job", "Developer");
repro.onlySetIfAbsentStringUserProfile("Job", "Developer");
Repro.onlySetIfAbsentStringUserProfile("Job", "Developer");
await Repro.onlySetIfAbsentStringUserProfile("Job", "Developer");

Integer (Conditional)¶

Sets an integer value only when the specified key has no profile set.

[Repro onlySetIfAbsentIntUserProfile:1 forKey: @"LoginCount"];
Repro.onlySetIfAbsentUserProfile(integerValue: 1, forKey: "LoginCount")
Repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);
ReproCpp::onlySetIfAbsentIntUserProfile("LoginCount", 1);
Repro.OnlySetIfAbsentIntUserProfile("LoginCount", 1);
Repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);
Repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);
repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);
Repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);
await Repro.onlySetIfAbsentIntUserProfile("LoginCount", 1);

Decimal (Conditional)¶

Sets a decimal value only when the specified key has no profile set.

[Repro onlySetIfAbsentDoubleUserProfile:85.5 forKey: @"Score"];
Repro.onlySetIfAbsentUserProfile(doubleValue: 85.5, forKey: "Score")
Repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);
ReproCpp::onlySetIfAbsentDoubleUserProfile("Score", 85.5);
Repro.OnlySetIfAbsentDoubleUserProfile("Score", 85.5);
Repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);
Repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);
repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);
Repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);
await Repro.onlySetIfAbsentDoubleUserProfile("Score", 85.5);

Date (Conditional)¶

Sets a date value only when the specified key has no profile set.

NSDate* now = [[NSDate alloc] init];
[Repro onlySetIfAbsentDateUserProfile:now forKey:@"FirstLogin"];
let now = Date()
Repro.onlySetIfAbsentUserProfile(dateValue: now, forKey: "FirstLogin")
Date now = new Date();
Repro.onlySetIfAbsentDateUserProfile("FirstLogin", now);
std::time_t now = std::time(0);
ReproCpp::onlySetIfAbsentDateUserProfile("FirstLogin", now);
DateTime now = DateTime.Now;
Repro.OnlySetIfAbsentDateUserProfile("FirstLogin", now);
let now = new Date();
Repro.onlySetIfAbsentDateUserProfile("FirstLogin", now);
let now = new Date();
Repro.onlySetIfAbsentDateUserProfile("FirstLogin", now.toISOString());
let now = new Date();
repro.onlySetIfAbsentDateUserProfile("FirstLogin", now.getTime());
let now = new Date();
Repro.onlySetIfAbsentDateUserProfile("FirstLogin", now.getTime());
final now = DateTime.now();
await Repro.onlySetIfAbsentDateUserProfile("FirstLogin", now);

Increment/Decrement Operations¶

Performs addition and subtraction on existing numeric profiles. If the profile is not set, it is calculated with an initial value of 0.

Integer Increment¶

Adds a value to the integer profile of the specified key.

[Repro incrementIntUserProfileBy:1 forKey: @"LoginCount"];
Repro.incrementIntegerUserProfile(by: 1, forKey: "LoginCount")
Repro.incrementIntUserProfileBy("LoginCount", 1);
ReproCpp::incrementIntUserProfileBy("LoginCount", 1);
Repro.IncrementIntUserProfileBy("LoginCount", 1);
Repro.incrementIntUserProfileBy("LoginCount", 1);
Repro.incrementIntUserProfileBy("LoginCount", 1);
repro.incrementIntUserProfileBy("LoginCount", 1);
Repro.incrementIntUserProfileBy("LoginCount", 1);
await Repro.incrementIntUserProfileBy("LoginCount", 1);

Integer Decrement¶

Subtracts a value from the integer profile of the specified key.

[Repro decrementIntUserProfileBy:10 forKey: @"Credits"];
Repro.decrementIntegerUserProfile(by: 10, forKey: "Credits")
Repro.decrementIntUserProfileBy("Credits", 10);
ReproCpp::decrementIntUserProfileBy("Credits", 10);
Repro.DecrementIntUserProfileBy("Credits", 10);
Repro.decrementIntUserProfileBy("Credits", 10);
Repro.decrementIntUserProfileBy("Credits", 10);
repro.decrementIntUserProfileBy("Credits", 10);
Repro.decrementIntUserProfileBy("Credits", 10);
await Repro.decrementIntUserProfileBy("Credits", 10);

Decimal Increment¶

Adds a value to the decimal profile of the specified key.

[Repro incrementDoubleUserProfileBy:5.5 forKey: @"Score"];
Repro.incrementDoubleUserProfile(by: 5.5, forKey: "Score")
Repro.incrementDoubleUserProfileBy("Score", 5.5);
ReproCpp::incrementDoubleUserProfileBy("Score", 5.5);
Repro.IncrementDoubleUserProfileBy("Score", 5.5);
Repro.incrementDoubleUserProfileBy("Score", 5.5);
Repro.incrementDoubleUserProfileBy("Score", 5.5);
repro.incrementDoubleUserProfileBy("Score", 5.5);
Repro.incrementDoubleUserProfileBy("Score", 5.5);
await Repro.incrementDoubleUserProfileBy("Score", 5.5);

Decimal Decrement¶

Subtracts a value from the decimal profile of the specified key.

[Repro decrementDoubleUserProfileBy:25.0 forKey: @"Balance"];
Repro.decrementDoubleUserProfile(by: 25.0, forKey: "Balance")
Repro.decrementDoubleUserProfileBy("Balance", 25.0);
ReproCpp::decrementDoubleUserProfileBy("Balance", 25.0);
Repro.DecrementDoubleUserProfileBy("Balance", 25.0);
Repro.decrementDoubleUserProfileBy("Balance", 25.0);
Repro.decrementDoubleUserProfileBy("Balance", 25.0);
repro.decrementDoubleUserProfileBy("Balance", 25.0);
Repro.decrementDoubleUserProfileBy("Balance", 25.0);
await Repro.decrementDoubleUserProfileBy("Balance", 25.0);

Conditional Set and Increment/Decrement Operations for Standard User Profiles¶

Conditional set and increment/decrement operations are also available for standard user profiles.

Age (Conditional)¶

Sets a value only when age is not already set.

[Repro onlySetIfAbsentUserAge:25];
Repro.onlySetIfAbsentUserProfile(age: 25)
Repro.onlySetIfAbsentUserAge(25);
ReproCpp::onlySetIfAbsentUserAge(25);
Repro.OnlySetIfAbsentUserAge(25);
Repro.onlySetIfAbsentUserAge(25);
Repro.onlySetIfAbsentUserAge(25);
repro.onlySetIfAbsentUserAge(25);
Repro.onlySetIfAbsentUserAge(25);
await Repro.onlySetIfAbsentUserAge(25);

Gender (Conditional)¶

Sets a value only when gender is not already set.

[Repro onlySetIfAbsentUserGender:RPRUserProfileGenderMale];
Repro.onlySetIfAbsentUserProfile(gender: .male)
Repro.onlySetIfAbsentUserGender(UserProfileGender.MALE);
ReproCpp::onlySetIfAbsentUserGender(ReproCpp::UserProfileGenderMale);
Repro.OnlySetIfAbsentUserGender(UserProfileGender.Male);
Repro.onlySetIfAbsentUserGender(Repro.UserProfileGender.Male);
Repro.onlySetIfAbsentUserGender(Repro.GENDER_MALE);
repro.onlySetIfAbsentUserGender(repro.userProfileGender.Male);
Repro.onlySetIfAbsentUserGender(Repro.UserProfileGender.Male);
await Repro.onlySetIfAbsentUserGender(UserGender.male);

Email Address (Conditional)¶

Sets a value only when email address is not already set.

[Repro onlySetIfAbsentUserEmailAddress:@"user@example.com"];
Repro.onlySetIfAbsentUserProfile(emailAddress: "user@example.com")
Repro.onlySetIfAbsentUserEmailAddress("user@example.com");
ReproCpp::onlySetIfAbsentUserEmailAddress("user@example.com");
Repro.OnlySetIfAbsentUserEmailAddress("user@example.com");
Repro.onlySetIfAbsentUserEmailAddress("user@example.com");
Repro.onlySetIfAbsentUserEmailAddress("user@example.com");
repro.onlySetIfAbsentUserEmailAddress("user@example.com");
Repro.onlySetIfAbsentUserEmailAddress("user@example.com");
await Repro.onlySetIfAbsentUserEmailAddress("user@example.com");

Residence Prefecture (Conditional)¶

Sets a value only when residence prefecture is not already set.

// set the prefecture as "Tokyo"
[Repro onlySetIfAbsentUserResidencePrefecture:RPRUserProfilePrefectureTokyo];
// set the prefecture as "Tokyo"
Repro.onlySetIfAbsentUserProfile(residencePrefecture: .tokyo)
// set the prefecture as "Tokyo"
Repro.onlySetIfAbsentUserResidencePrefecture(UserProfilePrefecture.TOKYO);
// set the prefecture as "Tokyo"
ReproCpp::onlySetIfAbsentUserResidencePrefecture(ReproCpp::UserProfilePrefectureTokyo);
// set the prefecture as "Tokyo"
Repro.OnlySetIfAbsentUserResidencePrefecture(UserProfilePrefecture.Tokyo);
// set the prefecture as "Tokyo"
Repro.onlySetIfAbsentUserResidencePrefecture(Repro.UserProfilePrefecture.Tokyo);
// set the prefecture as "Tokyo"
Repro.onlySetIfAbsentUserResidencePrefecture(Repro.PREFECTURE_TOKYO);
// set the prefecture as "Tokyo"
repro.onlySetIfAbsentUserResidencePrefecture(repro.userProfilePrefecture.TOKYO);
// set the prefecture as "Tokyo"
Repro.onlySetIfAbsentUserResidencePrefecture(Repro.UserProfilePrefecture.TOKYO);
// set the prefecture as "Tokyo"
await Repro.onlySetIfAbsentUserResidencePrefecture(UserProfilePrefecture.tokyo);

Date of Birth (Conditional)¶

Sets a value only when date of birth is not already set.

NSDate *date = ... // Create an NSDate object for the user's birthday date
[Repro onlySetIfAbsentUserDateOfBirth:date];
let date = ... // Create an NSDate object for the user's birthday date
Repro.onlySetIfAbsentUserProfile(dateOfBirth: date)
Date date = ... // Create a Date object for the user's birthday date
Repro.onlySetIfAbsentUserDateOfBirth(date);
ReproCpp::onlySetIfAbsentUserDateOfBirth(2000, 12, 31);
DateTime date = ... // Create a DateTime object for the user's birthday date
Repro.OnlySetIfAbsentUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
Repro.onlySetIfAbsentUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
Repro.onlySetIfAbsentUserDateOfBirth(date);
let date = ... // Create a Date object for the user's birthday date
repro.onlySetIfAbsentUserDateOfBirth(date.getTime());
let date = ... // Create a Date object for the user's birthday date
Repro.onlySetIfAbsentUserDateOfBirth(date.getTime());
DateTime date = ... // Create a DateTime object for the user's birthday date
await Repro.onlySetIfAbsentUserDateOfBirth(date);

Age Increment¶

Adds the specified value to the current age.

[Repro incrementUserAgeBy:1];
Repro.incrementUserProfileAge(by: 1)
Repro.incrementUserAgeBy(1);
ReproCpp::incrementUserAgeBy(1);
Repro.IncrementUserAgeBy(1);
Repro.incrementUserAgeBy(1);
Repro.incrementUserAgeBy(1);
repro.incrementUserAgeBy(1);
Repro.incrementUserAgeBy(1);
await Repro.incrementUserAgeBy(1);

Age Decrement¶

Subtracts the specified value from the current age.

[Repro decrementUserAgeBy:1];
Repro.decrementUserProfileAge(by: 1)
Repro.decrementUserAgeBy(1);
ReproCpp::decrementUserAgeBy(1);
Repro.DecrementUserAgeBy(1);
Repro.decrementUserAgeBy(1);
Repro.decrementUserAgeBy(1);
repro.decrementUserAgeBy(1);
Repro.decrementUserAgeBy(1);
await Repro.decrementUserAgeBy(1);

User Profile Deletion¶

Deletes configured user profiles.

Custom Profile Deletion¶

Deletes the custom user profile for the specified key.

[Repro deleteUserProfile:@"Job"];
Repro.deleteUserProfile(forKey: "Job")
Repro.deleteUserProfile("Job");
ReproCpp::deleteUserProfile("Job");
Repro.DeleteUserProfile("Job");
Repro.deleteUserProfile("Job");
Repro.deleteUserProfile("Job");
repro.deleteUserProfile("Job");
Repro.deleteUserProfile("Job");
await Repro.deleteUserProfile("Job");

Standard Profile Deletion¶

Deletes standard user profiles.

Delete Gender:

[Repro deleteUserGender];
Repro.deleteUserProfileGender()
Repro.deleteUserGender();
ReproCpp::deleteUserGender();
Repro.DeleteUserGender();
Repro.deleteUserGender();
Repro.deleteUserGender();
repro.deleteUserGender();
Repro.deleteUserGender();
await Repro.deleteUserGender();

Delete Age:

[Repro deleteUserAge];
Repro.deleteUserProfileAge()
Repro.deleteUserAge();
ReproCpp::deleteUserAge();
Repro.DeleteUserAge();
Repro.deleteUserAge();
Repro.deleteUserAge();
repro.deleteUserAge();
Repro.deleteUserAge();
await Repro.deleteUserAge();

Delete Email Address:

[Repro deleteUserEmailAddress];
Repro.deleteUserProfileEmailAddress()
Repro.deleteUserEmailAddress();
ReproCpp::deleteUserEmailAddress();
Repro.DeleteUserEmailAddress();
Repro.deleteUserEmailAddress();
Repro.deleteUserEmailAddress();
repro.deleteUserEmailAddress();
Repro.deleteUserEmailAddress();
await Repro.deleteUserEmailAddress();

Delete Residence Prefecture:

[Repro deleteUserResidencePrefecture];
Repro.deleteUserProfileResidencePrefecture()
Repro.deleteUserResidencePrefecture();
ReproCpp::deleteUserResidencePrefecture();
Repro.DeleteUserResidencePrefecture();
Repro.deleteUserResidencePrefecture();
Repro.deleteUserResidencePrefecture();
repro.deleteUserResidencePrefecture();
Repro.deleteUserResidencePrefecture();
await Repro.deleteUserResidencePrefecture();

Delete Date of Birth:

[Repro deleteUserDateOfBirth];
Repro.deleteUserProfileDateOfBirth()
Repro.deleteUserDateOfBirth();
ReproCpp::deleteUserDateOfBirth();
Repro.DeleteUserDateOfBirth();
Repro.deleteUserDateOfBirth();
Repro.deleteUserDateOfBirth();
repro.deleteUserDateOfBirth();
Repro.deleteUserDateOfBirth();
await Repro.deleteUserDateOfBirth();
  • « Device ID
  • Event Tracking »

About Us Careers Terms of Service Privacy Policy Cookie Policy

© 2022 Repro Inc.